From 586bf3634be25eb4b3f1fbf14decd60e85395f86 Mon Sep 17 00:00:00 2001 From: Patrick Fulton Date: Tue, 23 Jul 2024 11:06:02 -0400 Subject: [PATCH] Updates --- accordion.html | 1256 +++ actionbar.html | 513 + actionbutton.html | 2434 +++++ actiongroup.html | 753 ++ actionmenu.html | 125 + alertbanner.html | 200 + alertdialog.html | 338 + asset.html | 32 + assetcard.html | 352 + assetlist.html | 151 + avatar.html | 184 + badge.html | 447 + breadcrumb.html | 641 ++ button-accent.html | 459 + button-negative.html | 445 + button-pending.html | 2101 ++++ button-primary.html | 445 + button-secondary.html | 445 + button-staticcolor.html | 1021 ++ buttongroup.html | 95 + calendar.html | 867 ++ card-asset.html | 73 + card-gallery.html | 91 + card.html | 762 ++ checkbox.html | 1179 +++ clearbutton.html | 178 + closebutton.html | 367 + coachindicator.html | 73 + coachmark.html | 399 + colorarea.html | 86 + colorhandle.html | 80 + colorloupe.html | 61 + colorslider.html | 313 + colorwheel.html | 141 + combobox.html | 668 ++ components/accordion/index-base.css | 274 + components/accordion/index-vars.css | 274 + components/accordion/index.css | 274 + components/accordion/metadata.json | 195 + components/accordion/package.json | 41 + components/accordion/template.js | 168 + components/actionbar/index-base.css | 120 + components/actionbar/index-vars.css | 120 + components/actionbar/index.css | 120 + components/actionbar/metadata.json | 87 + components/actionbar/package.json | 47 + components/actionbar/template.js | 91 + components/actionbutton/index-base.css | 377 + components/actionbutton/index-theme.css | 137 + components/actionbutton/index-vars.css | 500 + components/actionbutton/index.css | 500 + components/actionbutton/metadata.json | 331 + components/actionbutton/package.json | 47 + components/actionbutton/template.js | 203 + components/actionbutton/themes/express.css | 105 + components/actionbutton/themes/spectrum.css | 105 + components/actiongroup/index-base.css | 127 + components/actiongroup/index-theme.css | 24 + components/actiongroup/index-vars.css | 137 + components/actiongroup/index.css | 137 + components/actiongroup/metadata.json | 59 + components/actiongroup/package.json | 42 + components/actiongroup/template.js | 75 + components/actiongroup/themes/express.css | 19 + components/actiongroup/themes/spectrum.css | 19 + components/actionmenu/package.json | 47 + components/actionmenu/template.js | 68 + components/alertbanner/index-base.css | 94 + components/alertbanner/index-theme.css | 20 + components/alertbanner/index-vars.css | 100 + components/alertbanner/index.css | 100 + components/alertbanner/metadata.json | 81 + components/alertbanner/package.json | 52 + components/alertbanner/template.js | 98 + components/alertbanner/themes/express.css | 17 + components/alertbanner/themes/spectrum.css | 17 + components/alertdialog/index-base.css | 94 + components/alertdialog/index-vars.css | 94 + components/alertdialog/index.css | 94 + components/alertdialog/metadata.json | 80 + components/alertdialog/package.json | 57 + components/alertdialog/template.js | 142 + components/asset/index-base.css | 49 + components/asset/index-vars.css | 49 + components/asset/index.css | 49 + components/asset/metadata.json | 29 + components/asset/package.json | 39 + components/asset/template.js | 80 + components/assetcard/index-base.css | 268 + components/assetcard/index-theme.css | 20 + components/assetcard/index-vars.css | 274 + components/assetcard/index.css | 274 + components/assetcard/metadata.json | 176 + components/assetcard/package.json | 46 + components/assetcard/template.js | 152 + components/assetcard/themes/express.css | 17 + components/assetcard/themes/spectrum.css | 17 + components/assetlist/index-base.css | 161 + components/assetlist/index-vars.css | 161 + components/assetlist/index.css | 161 + components/assetlist/metadata.json | 89 + components/assetlist/package.json | 51 + components/assetlist/template.js | 92 + components/avatar/index-base.css | 106 + components/avatar/index-vars.css | 106 + components/avatar/index.css | 106 + components/avatar/metadata.json | 56 + components/avatar/package.json | 39 + components/avatar/template.js | 105 + components/badge/index-base.css | 230 + components/badge/index-vars.css | 230 + components/badge/index.css | 230 + components/badge/metadata.json | 177 + components/badge/package.json | 46 + components/badge/template.js | 111 + components/breadcrumb/index-base.css | 247 + components/breadcrumb/index-vars.css | 247 + components/breadcrumb/index.css | 247 + components/breadcrumb/metadata.json | 194 + components/breadcrumb/package.json | 51 + components/breadcrumb/template.js | 121 + components/button/index-base.css | 678 ++ components/button/index-theme.css | 343 + components/button/index-vars.css | 1007 ++ components/button/index.css | 1007 ++ components/button/metadata.json | 601 ++ components/button/package.json | 52 + components/button/template.js | 206 + components/button/themes/express.css | 327 + components/button/themes/spectrum.css | 327 + components/buttongroup/index-base.css | 42 + components/buttongroup/index-vars.css | 42 + components/buttongroup/index.css | 42 + components/buttongroup/metadata.json | 22 + components/buttongroup/package.json | 41 + components/buttongroup/template.js | 133 + components/calendar/index-base.css | 362 + components/calendar/index-vars.css | 362 + components/calendar/index.css | 362 + components/calendar/metadata.json | 172 + components/calendar/package.json | 41 + components/calendar/template.js | 434 + components/card/index-base.css | 405 + components/card/index-vars.css | 405 + components/card/index.css | 405 + components/card/metadata.json | 219 + components/card/package.json | 71 + components/card/template.js | 400 + components/checkbox/index-base.css | 367 + components/checkbox/index-theme.css | 26 + components/checkbox/index-vars.css | 379 + components/checkbox/index.css | 379 + components/checkbox/metadata.json | 213 + components/checkbox/package.json | 41 + components/checkbox/template.js | 92 + components/checkbox/themes/express.css | 20 + components/checkbox/themes/spectrum.css | 20 + components/clearbutton/index-base.css | 122 + components/clearbutton/index-theme.css | 26 + components/clearbutton/index-vars.css | 134 + components/clearbutton/index.css | 134 + components/clearbutton/metadata.json | 86 + components/clearbutton/package.json | 41 + components/clearbutton/template.js | 40 + components/clearbutton/themes/express.css | 20 + components/clearbutton/themes/spectrum.css | 20 + components/closebutton/index-base.css | 269 + components/closebutton/index-theme.css | 26 + components/closebutton/index-vars.css | 281 + components/closebutton/index.css | 281 + components/closebutton/metadata.json | 149 + components/closebutton/package.json | 42 + components/closebutton/template.js | 41 + components/closebutton/themes/express.css | 20 + components/closebutton/themes/spectrum.css | 20 + components/coachindicator/index-base.css | 122 + components/coachindicator/index-vars.css | 122 + components/coachindicator/index.css | 122 + components/coachindicator/metadata.json | 72 + components/coachindicator/package.json | 39 + components/coachindicator/template.js | 64 + components/coachmark/index-base.css | 140 + components/coachmark/index-vars.css | 140 + components/coachmark/index.css | 140 + components/coachmark/metadata.json | 115 + components/coachmark/package.json | 56 + components/coachmark/template.js | 120 + components/colorarea/index-base.css | 85 + components/colorarea/index-vars.css | 85 + components/colorarea/index.css | 85 + components/colorarea/metadata.json | 46 + components/colorarea/package.json | 41 + components/colorarea/template.js | 72 + components/colorhandle/index-base.css | 87 + components/colorhandle/index-vars.css | 87 + components/colorhandle/index.css | 87 + components/colorhandle/metadata.json | 61 + components/colorhandle/package.json | 48 + components/colorhandle/template.js | 44 + components/colorloupe/index-base.css | 75 + components/colorloupe/index-vars.css | 75 + components/colorloupe/index.css | 75 + components/colorloupe/metadata.json | 59 + components/colorloupe/package.json | 39 + components/colorloupe/template.js | 50 + components/colorslider/index-base.css | 100 + components/colorslider/index-vars.css | 100 + components/colorslider/index.css | 100 + components/colorslider/metadata.json | 54 + components/colorslider/package.json | 43 + components/colorslider/template.js | 122 + components/colorwheel/index-base.css | 117 + components/colorwheel/index-vars.css | 117 + components/colorwheel/index.css | 117 + components/colorwheel/metadata.json | 57 + components/colorwheel/package.json | 53 + components/colorwheel/template.js | 53 + components/combobox/index-base.css | 322 + components/combobox/index-theme.css | 28 + components/combobox/index-vars.css | 336 + components/combobox/index.css | 336 + components/combobox/metadata.json | 213 + components/combobox/package.json | 54 + components/combobox/template.js | 141 + components/combobox/themes/express.css | 21 + components/combobox/themes/spectrum.css | 21 + components/commons/package.json | 26 + components/contextualhelp/index-base.css | 56 + components/contextualhelp/index-vars.css | 56 + components/contextualhelp/index.css | 56 + components/contextualhelp/metadata.json | 43 + components/contextualhelp/package.json | 50 + components/contextualhelp/template.js | 59 + components/datepicker/index-base.css | 228 + components/datepicker/index-theme.css | 20 + components/datepicker/index-vars.css | 234 + components/datepicker/index.css | 234 + components/datepicker/metadata.json | 159 + components/datepicker/package.json | 47 + components/datepicker/template.js | 117 + components/datepicker/themes/express.css | 17 + components/datepicker/themes/spectrum.css | 17 + components/dial/index-base.css | 251 + components/dial/index-vars.css | 251 + components/dial/index.css | 251 + components/dial/metadata.json | 123 + components/dial/package.json | 39 + components/dial/template.js | 244 + components/dialog/index-base.css | 240 + components/dialog/index-vars.css | 240 + components/dialog/index.css | 240 + components/dialog/metadata.json | 109 + components/dialog/package.json | 59 + components/dialog/template.js | 85 + components/divider/index-base.css | 86 + components/divider/index-vars.css | 86 + components/divider/index.css | 86 + components/divider/metadata.json | 53 + components/divider/package.json | 39 + components/divider/template.js | 51 + components/dropindicator/index-base.css | 67 + components/dropindicator/index-vars.css | 67 + components/dropindicator/index.css | 67 + components/dropindicator/metadata.json | 30 + components/dropindicator/package.json | 41 + components/dropindicator/template.js | 27 + components/dropzone/index-base.css | 143 + components/dropzone/index-vars.css | 143 + components/dropzone/index.css | 143 + components/dropzone/metadata.json | 132 + components/dropzone/package.json | 53 + components/dropzone/template.js | 79 + components/fieldgroup/index-base.css | 48 + components/fieldgroup/index-vars.css | 48 + components/fieldgroup/index.css | 48 + components/fieldgroup/metadata.json | 22 + components/fieldgroup/package.json | 56 + components/fieldgroup/template.js | 163 + components/fieldlabel/form.template.js | 88 + components/fieldlabel/index-base.css | 137 + components/fieldlabel/index-vars.css | 137 + components/fieldlabel/index.css | 137 + components/fieldlabel/metadata.json | 85 + components/fieldlabel/package.json | 41 + components/fieldlabel/template.js | 148 + .../floatingactionbutton/index-base.css | 106 + .../floatingactionbutton/index-vars.css | 106 + components/floatingactionbutton/index.css | 106 + components/floatingactionbutton/metadata.json | 88 + components/floatingactionbutton/package.json | 40 + components/floatingactionbutton/template.js | 28 + components/helptext/index-base.css | 130 + components/helptext/index-vars.css | 130 + components/helptext/index.css | 130 + components/helptext/metadata.json | 85 + components/helptext/package.json | 41 + components/helptext/template.js | 166 + components/icon/index-base.css | 370 + components/icon/index-vars.css | 370 + components/icon/index.css | 370 + components/icon/metadata.json | 173 + components/icon/package.json | 39 + components/icon/template.js | 352 + components/icon/utilities.js | 44 + components/illustratedmessage/index-base.css | 91 + components/illustratedmessage/index-vars.css | 91 + components/illustratedmessage/index.css | 91 + components/illustratedmessage/metadata.json | 79 + components/illustratedmessage/package.json | 41 + components/illustratedmessage/template.js | 139 + components/infieldbutton/index-base.css | 218 + components/infieldbutton/index-theme.css | 38 + components/infieldbutton/index-vars.css | 242 + components/infieldbutton/index.css | 242 + components/infieldbutton/metadata.json | 160 + components/infieldbutton/package.json | 46 + components/infieldbutton/template.js | 91 + components/infieldbutton/themes/express.css | 26 + components/infieldbutton/themes/spectrum.css | 26 + components/inlinealert/index-base.css | 129 + components/inlinealert/index-vars.css | 129 + components/inlinealert/index.css | 129 + components/inlinealert/metadata.json | 106 + components/inlinealert/package.json | 48 + components/inlinealert/template.js | 72 + components/link/index-base.css | 103 + components/link/index-vars.css | 103 + components/link/index.css | 103 + components/link/metadata.json | 69 + components/link/package.json | 39 + components/link/template.js | 32 + components/logicbutton/index-base.css | 162 + components/logicbutton/index-vars.css | 162 + components/logicbutton/index.css | 162 + components/logicbutton/metadata.json | 105 + components/logicbutton/package.json | 39 + components/logicbutton/template.js | 26 + components/menu/index-base.css | 662 ++ components/menu/index-vars.css | 662 ++ components/menu/index.css | 662 ++ components/menu/metadata.json | 347 + components/menu/package.json | 63 + components/menu/template.js | 587 ++ components/miller/index-base.css | 39 + components/miller/index-vars.css | 39 + components/miller/index.css | 39 + components/miller/metadata.json | 22 + components/miller/package.json | 45 + components/miller/template.js | 32 + components/modal/index-base.css | 117 + components/modal/index-vars.css | 117 + components/modal/index.css | 117 + components/modal/metadata.json | 51 + components/modal/package.json | 40 + components/modal/template.js | 37 + components/opacitycheckerboard/index-base.css | 26 + components/opacitycheckerboard/index-vars.css | 26 + components/opacitycheckerboard/index.css | 26 + components/opacitycheckerboard/metadata.json | 20 + components/opacitycheckerboard/package.json | 39 + components/opacitycheckerboard/template.js | 30 + components/page/index-base.css | 18 + components/page/index-vars.css | 18 + components/page/index.css | 18 + components/page/metadata.json | 7 + components/page/package.json | 39 + components/pagination/index-base.css | 53 + components/pagination/index-vars.css | 53 + components/pagination/index.css | 53 + components/pagination/metadata.json | 36 + components/pagination/package.json | 49 + components/pagination/template.js | 127 + components/picker/index-base.css | 426 + components/picker/index-theme.css | 44 + components/picker/index-vars.css | 456 + components/picker/index.css | 456 + components/picker/metadata.json | 314 + components/picker/package.json | 58 + components/picker/template.js | 188 + components/picker/themes/express.css | 29 + components/picker/themes/spectrum.css | 29 + components/pickerbutton/index-base.css | 207 + components/pickerbutton/index-theme.css | 36 + components/pickerbutton/index-vars.css | 229 + components/pickerbutton/index.css | 229 + components/pickerbutton/metadata.json | 157 + components/pickerbutton/package.json | 45 + components/pickerbutton/template.js | 71 + components/pickerbutton/themes/express.css | 25 + components/pickerbutton/themes/spectrum.css | 25 + components/popover/index-base.css | 286 + components/popover/index-theme.css | 20 + components/popover/index-vars.css | 292 + components/popover/index.css | 292 + components/popover/metadata.json | 98 + components/popover/package.json | 56 + components/popover/template.js | 240 + components/popover/themes/express.css | 17 + components/popover/themes/spectrum.css | 17 + components/progressbar/index-base.css | 209 + components/progressbar/index-vars.css | 209 + components/progressbar/index.css | 209 + components/progressbar/metadata.json | 132 + components/progressbar/meter.template.js | 71 + components/progressbar/package.json | 46 + components/progressbar/template.js | 160 + components/progresscircle/index-base.css | 495 + components/progresscircle/index-vars.css | 495 + components/progresscircle/index.css | 495 + components/progresscircle/metadata.json | 116 + components/progresscircle/package.json | 39 + components/progresscircle/template.js | 58 + components/radio/index-base.css | 289 + components/radio/index-theme.css | 30 + components/radio/index-vars.css | 305 + components/radio/index.css | 305 + components/radio/metadata.json | 195 + components/radio/package.json | 41 + components/radio/template.js | 56 + components/radio/themes/express.css | 24 + components/radio/themes/spectrum.css | 24 + components/rating/index-base.css | 175 + components/rating/index-theme.css | 26 + components/rating/index-vars.css | 187 + components/rating/index.css | 187 + components/rating/metadata.json | 119 + components/rating/package.json | 41 + components/rating/template.js | 89 + components/rating/themes/express.css | 20 + components/rating/themes/spectrum.css | 20 + components/search/index-base.css | 206 + components/search/index-theme.css | 48 + components/search/index-vars.css | 240 + components/search/index.css | 240 + components/search/metadata.json | 179 + components/search/package.json | 45 + components/search/template.js | 46 + components/search/themes/express.css | 31 + components/search/themes/spectrum.css | 31 + components/sidenav/index-base.css | 220 + components/sidenav/index-vars.css | 220 + components/sidenav/index.css | 220 + components/sidenav/metadata.json | 194 + components/sidenav/package.json | 46 + components/sidenav/template.js | 118 + components/site/index-base.css | 533 + components/site/index-vars.css | 533 + components/site/index.css | 533 + components/site/metadata.json | 138 + components/site/package.json | 39 + components/slider/index-base.css | 552 ++ components/slider/index-theme.css | 48 + components/slider/index-vars.css | 586 ++ components/slider/index.css | 586 ++ components/slider/metadata.json | 290 + components/slider/package.json | 41 + components/slider/template.js | 241 + components/slider/themes/express.css | 31 + components/slider/themes/spectrum.css | 31 + components/splitview/index-base.css | 175 + components/splitview/index-vars.css | 175 + components/splitview/index.css | 175 + components/splitview/metadata.json | 85 + components/splitview/package.json | 39 + components/splitview/template.js | 63 + components/statuslight/index-base.css | 192 + components/statuslight/index-vars.css | 192 + components/statuslight/index.css | 192 + components/statuslight/metadata.json | 163 + components/statuslight/package.json | 39 + components/statuslight/template.js | 25 + components/steplist/index-base.css | 220 + components/steplist/index-vars.css | 220 + components/steplist/index.css | 220 + components/steplist/metadata.json | 86 + components/steplist/package.json | 48 + components/steplist/template.js | 109 + components/stepper/index-base.css | 277 + components/stepper/index-theme.css | 62 + components/stepper/index-vars.css | 325 + components/stepper/index.css | 325 + components/stepper/metadata.json | 176 + components/stepper/package.json | 52 + components/stepper/template.js | 94 + components/stepper/themes/express.css | 39 + components/stepper/themes/spectrum.css | 37 + components/swatch/index-base.css | 246 + components/swatch/index-vars.css | 246 + components/swatch/index.css | 246 + components/swatch/metadata.json | 115 + components/swatch/package.json | 41 + components/swatch/template.js | 102 + components/swatchgroup/index-base.css | 30 + components/swatchgroup/index-vars.css | 30 + components/swatchgroup/index.css | 30 + components/swatchgroup/metadata.json | 22 + components/swatchgroup/package.json | 41 + components/swatchgroup/template.js | 38 + components/switch/index-base.css | 366 + components/switch/index-theme.css | 34 + components/switch/index-vars.css | 386 + components/switch/index.css | 386 + components/switch/metadata.json | 224 + components/switch/package.json | 39 + components/switch/template.js | 51 + components/switch/themes/express.css | 24 + components/switch/themes/spectrum.css | 24 + components/table/index-base.css | 698 ++ components/table/index-vars.css | 698 ++ components/table/index.css | 698 ++ components/table/metadata.json | 440 + components/table/package.json | 58 + components/table/template.js | 292 + components/tabs/index-base.css | 317 + components/tabs/index-theme.css | 20 + components/tabs/index-vars.css | 323 + components/tabs/index.css | 323 + components/tabs/metadata.json | 215 + components/tabs/package.json | 50 + components/tabs/template.js | 131 + components/tabs/themes/express.css | 17 + components/tabs/themes/spectrum.css | 17 + components/tag/index-base.css | 403 + components/tag/index-theme.css | 78 + components/tag/index-vars.css | 467 + components/tag/index.css | 467 + components/tag/metadata.json | 382 + components/tag/package.json | 53 + components/tag/template.js | 74 + components/tag/themes/express.css | 46 + components/tag/themes/spectrum.css | 46 + components/taggroup/index-base.css | 27 + components/taggroup/index-vars.css | 27 + components/taggroup/index.css | 27 + components/taggroup/metadata.json | 14 + components/taggroup/package.json | 41 + components/taggroup/template.js | 77 + components/textfield/index-base.css | 535 + components/textfield/index-theme.css | 30 + components/textfield/index-vars.css | 551 ++ components/textfield/index.css | 551 ++ components/textfield/metadata.json | 345 + components/textfield/package.json | 46 + components/textfield/template.js | 250 + components/textfield/themes/express.css | 22 + components/textfield/themes/spectrum.css | 22 + components/thumbnail/index-base.css | 181 + components/thumbnail/index-vars.css | 181 + components/thumbnail/index.css | 181 + components/thumbnail/metadata.json | 96 + components/thumbnail/package.json | 41 + components/thumbnail/template.js | 127 + components/toast/index-base.css | 148 + components/toast/index-theme.css | 20 + components/toast/index-vars.css | 154 + components/toast/index.css | 154 + components/toast/metadata.json | 109 + components/toast/package.json | 45 + components/toast/template.js | 63 + components/toast/themes/express.css | 17 + components/toast/themes/spectrum.css | 17 + components/tokens/index.css | 3693 +++++++ components/tooltip/index-base.css | 632 ++ components/tooltip/index-theme.css | 20 + components/tooltip/index-vars.css | 638 ++ components/tooltip/index.css | 638 ++ components/tooltip/metadata.json | 166 + components/tooltip/package.json | 42 + components/tooltip/template.js | 105 + components/tooltip/themes/express.css | 17 + components/tooltip/themes/spectrum.css | 17 + components/tray/index-base.css | 73 + components/tray/index-vars.css | 73 + components/tray/index.css | 73 + components/tray/metadata.json | 38 + components/tray/package.json | 57 + components/tray/template.js | 47 + components/treeview/index-base.css | 312 + components/treeview/index-vars.css | 312 + components/treeview/index.css | 312 + components/treeview/metadata.json | 180 + components/treeview/package.json | 48 + components/treeview/template.js | 411 + components/typography/index-base.css | 712 ++ components/typography/index-vars.css | 712 ++ components/typography/index.css | 712 ++ components/typography/metadata.json | 571 ++ components/typography/package.json | 39 + components/typography/template.js | 122 + components/underlay/index-base.css | 51 + components/underlay/index-vars.css | 51 + components/underlay/index.css | 51 + components/underlay/metadata.json | 34 + components/underlay/package.json | 39 + components/underlay/template.js | 33 + components/well/index-base.css | 29 + components/well/index-vars.css | 29 + components/well/index.css | 29 + components/well/metadata.json | 27 + components/well/package.json | 39 + components/well/template.js | 33 + contextualhelp.html | 97 + css/docs.css | 40 + css/docs.css.map | 1 + css/prism/prism-dark.css | 129 + css/prism/prism.css | 140 + css/site.css | 66 + css/site.css.map | 1 + cyclebutton.html | 19 + datepicker.html | 555 ++ .../@spectrum-css/cyclebutton/index-vars.css | 20 + .../@spectrum-css/cyclebutton/package.json | 25 + .../@spectrum-css/cyclebutton/vars.css | 5 + .../@spectrum-css/quickaction/index-vars.css | 69 + .../@spectrum-css/quickaction/mods.json | 7 + .../@spectrum-css/quickaction/package.json | 29 + .../@spectrum-css/quickaction/vars.css | 14 + .../@spectrum-css/searchwithin/index-vars.css | 61 + .../@spectrum-css/searchwithin/package.json | 28 + .../@spectrum-css/searchwithin/vars.css | 4 + .../@spectrum-css/splitbutton/index-vars.css | 176 + .../@spectrum-css/splitbutton/package.json | 31 + .../@spectrum-css/splitbutton/vars.css | 7 + dial.html | 151 + dialog.html | 557 ++ divider.html | 180 + dropindicator.html | 11 + dropzone.html | 45 + favicon.png | Bin 0 -> 551 bytes fieldgroup.html | 986 ++ fieldlabel.html | 192 + floatingactionbutton.html | 27 + form.html | 498 + get-started.html | 1 + helptext.html | 203 + illustratedmessage.html | 26 + img/art_bk.jpg | Bin 0 -> 192691 bytes img/button-screen-shot.png | Bin 0 -> 286704 bytes img/combined/Arrow100.svg | 4 + img/combined/Arrow200.svg | 4 + img/combined/Arrow300.svg | 4 + img/combined/Arrow400.svg | 4 + img/combined/Arrow500.svg | 4 + img/combined/Arrow600.svg | 4 + img/combined/Arrow75.svg | 4 + img/combined/Asterisk100.svg | 4 + img/combined/Asterisk200.svg | 4 + img/combined/Asterisk300.svg | 4 + img/combined/Asterisk75.svg | 4 + img/combined/Checkmark100.svg | 4 + img/combined/Checkmark200.svg | 4 + img/combined/Checkmark300.svg | 4 + img/combined/Checkmark400.svg | 4 + img/combined/Checkmark50.svg | 4 + img/combined/Checkmark500.svg | 4 + img/combined/Checkmark600.svg | 4 + img/combined/Checkmark75.svg | 4 + img/combined/Chevron100.svg | 4 + img/combined/Chevron200.svg | 4 + img/combined/Chevron300.svg | 4 + img/combined/Chevron400.svg | 4 + img/combined/Chevron50.svg | 4 + img/combined/Chevron500.svg | 4 + img/combined/Chevron600.svg | 4 + img/combined/Chevron75.svg | 4 + img/combined/CornerTriangle100.svg | 4 + img/combined/CornerTriangle200.svg | 4 + img/combined/CornerTriangle300.svg | 4 + img/combined/CornerTriangle75.svg | 4 + img/combined/Cross100.svg | 4 + img/combined/Cross200.svg | 4 + img/combined/Cross300.svg | 4 + img/combined/Cross400.svg | 4 + img/combined/Cross500.svg | 4 + img/combined/Cross600.svg | 4 + img/combined/Cross75.svg | 4 + img/combined/Dash100.svg | 4 + img/combined/Dash200.svg | 4 + img/combined/Dash300.svg | 4 + img/combined/Dash400.svg | 4 + img/combined/Dash50.svg | 4 + img/combined/Dash500.svg | 4 + img/combined/Dash600.svg | 4 + img/combined/Dash75.svg | 4 + img/combined/DoubleGripper.svg | 4 + img/combined/SingleGripper.svg | 4 + img/combined/TripleGripper.svg | 4 + img/example-ava.jpg | Bin 0 -> 8818 bytes img/example-ava.png | Bin 0 -> 9444 bytes img/example-ava@2x.jpg | Bin 0 -> 32462 bytes img/example-ava@2x.png | Bin 0 -> 32462 bytes img/example-card-landscape.jpeg | Bin 0 -> 151472 bytes img/example-card-landscape.png | Bin 0 -> 151472 bytes img/example-card-portrait.jpg | Bin 0 -> 591069 bytes img/example-card-portrait.png | Bin 0 -> 591069 bytes img/example-card-square.png | Bin 0 -> 562184 bytes img/flowers.png | Bin 0 -> 39635 bytes img/illustration_documentation.svg | 1 + img/illustration_flexible.svg | 1 + img/illustration_responsive.svg | 1 + img/illustration_tested.svg | 1 + img/large/Arrow100.svg | 3 + img/large/Arrow200.svg | 3 + img/large/Arrow300.svg | 3 + img/large/Arrow400.svg | 3 + img/large/Arrow500.svg | 3 + img/large/Arrow600.svg | 3 + img/large/Arrow75.svg | 3 + img/large/Asterisk100.svg | 3 + img/large/Asterisk200.svg | 3 + img/large/Asterisk300.svg | 3 + img/large/Asterisk75.svg | 3 + img/large/Checkmark100.svg | 3 + img/large/Checkmark200.svg | 3 + img/large/Checkmark300.svg | 3 + img/large/Checkmark400.svg | 3 + img/large/Checkmark50.svg | 3 + img/large/Checkmark500.svg | 3 + img/large/Checkmark600.svg | 3 + img/large/Checkmark75.svg | 3 + img/large/Chevron100.svg | 3 + img/large/Chevron200.svg | 3 + img/large/Chevron300.svg | 3 + img/large/Chevron400.svg | 3 + img/large/Chevron50.svg | 3 + img/large/Chevron500.svg | 3 + img/large/Chevron600.svg | 3 + img/large/Chevron75.svg | 3 + img/large/CornerTriangle100.svg | 3 + img/large/CornerTriangle200.svg | 3 + img/large/CornerTriangle300.svg | 3 + img/large/CornerTriangle75.svg | 3 + img/large/Cross100.svg | 3 + img/large/Cross200.svg | 3 + img/large/Cross300.svg | 3 + img/large/Cross400.svg | 3 + img/large/Cross500.svg | 3 + img/large/Cross600.svg | 3 + img/large/Cross75.svg | 3 + img/large/Dash100.svg | 3 + img/large/Dash200.svg | 3 + img/large/Dash300.svg | 3 + img/large/Dash400.svg | 3 + img/large/Dash50.svg | 3 + img/large/Dash500.svg | 3 + img/large/Dash600.svg | 3 + img/large/Dash75.svg | 3 + img/large/DoubleGripper.svg | 3 + img/large/SingleGripper.svg | 3 + img/large/TripleGripper.svg | 3 + img/medium/Arrow100.svg | 3 + img/medium/Arrow200.svg | 3 + img/medium/Arrow300.svg | 3 + img/medium/Arrow400.svg | 3 + img/medium/Arrow500.svg | 3 + img/medium/Arrow600.svg | 3 + img/medium/Arrow75.svg | 3 + img/medium/Asterisk100.svg | 3 + img/medium/Asterisk200.svg | 3 + img/medium/Asterisk300.svg | 3 + img/medium/Asterisk75.svg | 3 + img/medium/Checkmark100.svg | 3 + img/medium/Checkmark200.svg | 3 + img/medium/Checkmark300.svg | 3 + img/medium/Checkmark400.svg | 3 + img/medium/Checkmark50.svg | 3 + img/medium/Checkmark500.svg | 3 + img/medium/Checkmark600.svg | 3 + img/medium/Checkmark75.svg | 3 + img/medium/Chevron100.svg | 3 + img/medium/Chevron200.svg | 3 + img/medium/Chevron300.svg | 3 + img/medium/Chevron400.svg | 3 + img/medium/Chevron50.svg | 3 + img/medium/Chevron500.svg | 3 + img/medium/Chevron600.svg | 3 + img/medium/Chevron75.svg | 3 + img/medium/CornerTriangle100.svg | 3 + img/medium/CornerTriangle200.svg | 3 + img/medium/CornerTriangle300.svg | 3 + img/medium/CornerTriangle75.svg | 3 + img/medium/Cross100.svg | 3 + img/medium/Cross200.svg | 3 + img/medium/Cross300.svg | 3 + img/medium/Cross400.svg | 3 + img/medium/Cross500.svg | 3 + img/medium/Cross600.svg | 3 + img/medium/Cross75.svg | 3 + img/medium/Dash100.svg | 3 + img/medium/Dash200.svg | 3 + img/medium/Dash300.svg | 3 + img/medium/Dash400.svg | 3 + img/medium/Dash50.svg | 3 + img/medium/Dash500.svg | 3 + img/medium/Dash600.svg | 3 + img/medium/Dash75.svg | 3 + img/medium/DoubleGripper.svg | 3 + img/medium/SingleGripper.svg | 3 + img/medium/TripleGripper.svg | 3 + img/spectrum-css-icons-large.svg | 149 + img/spectrum-css-icons-medium.svg | 149 + img/spectrum-css-icons.svg | 198 + img/spectrum-css_illustration_desktop.png | Bin 0 -> 113866 bytes img/spectrum-css_illustration_desktop@2x.png | Bin 0 -> 290381 bytes img/spectrum-icons.svg | 1 + img/spectrum_illustration_2x.png | Bin 0 -> 427957 bytes img/spectrum_logo_light.svg | 5 + img/tablet-bk | Bin 0 -> 121994 bytes img/thumbnail.png | Bin 0 -> 66226 bytes index.html | 1 + index.json | 8785 +++++++++++++++++ infieldbutton.html | 365 + inlinealert.html | 111 + js/Search.js | 349 + js/SpectrumSwitcher.js | 225 + js/adobe-globalnav.js | 46 + js/docs.js | 32 + js/enhancement.js | 966 ++ js/loadicons/index.js | 90 + js/lunr/lunr.js | 3475 +++++++ js/lunr/lunr.min.js | 6 + js/site.js | 121 + js/typekit.js | 70 + link.html | 53 + logicbutton.html | 13 + menu.html | 2692 +++++ meter.html | 185 + miller.html | 344 + modal.html | 11 + opacitycheckerboard.html | 19 + page.html | 31 + pagination-button-style.html | 80 + pagination-explicit.html | 36 + pagination-listing.html | 26 + picker.html | 1023 ++ pickerbutton.html | 217 + popover.html | 1227 +++ preview/assets/Color-PRSJMWNM-DRazqggm.js | 1 + .../assets/DocsRenderer-K4EAMTCU-DmIiI-NG.js | 2 + .../assets/WithTooltip-KJL26V4Q-DBlSOs1Z.js | 1 + preview/assets/_commonjsHelpers-BosuxZz1.js | 1 + preview/assets/_createCompounder-DY9ZW94_.js | 1 + preview/assets/accordion-B1HeCXgH.css | 1 + preview/assets/accordion-G0ZHOPZx.js | 15 + preview/assets/accordion.stories-Rp5ZIRPk.js | 45 + preview/assets/actionbar-B0E0jX70.css | 1 + preview/assets/actionbar-BoTRIogp.js | 20 + preview/assets/actionbar.stories-OQByPDnU.js | 7 + .../assets/actionbutton.stories-Cv1fxUof.js | 1 + .../assets/actiongroup.stories-Bu-viuWj.js | 1 + preview/assets/actionmenu.stories-D6aF7Rcy.js | 1 + preview/assets/alertbanner-WTMOLZjx.css | 1 + .../assets/alertbanner.stories-Bx3raaRk.js | 19 + preview/assets/alertdialog-Cn1LLL4u.css | 1 + .../assets/alertdialog.stories-Dpf5YaRC.js | 23 + preview/assets/asset-CPK_Aj5K.js | 14 + preview/assets/asset.stories-JhHAiT6c.js | 1 + preview/assets/assetcard-BazjOghQ.js | 23 + preview/assets/assetcard-DPuysHZU.css | 1 + preview/assets/assetcard.stories-CVABog8W.js | 28 + preview/assets/assetlist.stories-DXTFYF_S.js | 1 + preview/assets/avatar-BeuTEN8E.js | 28 + preview/assets/avatar.stories-DWpOOsNA.js | 1 + preview/assets/axe-CCXVyZh5.js | 30 + preview/assets/badge-CeD0cqiw.js | 17 + preview/assets/badge-DVuCoEQU.css | 1 + preview/assets/badge.stories-Bsro9EAp.js | 26 + preview/assets/breadcrumb-iJlKeoTn.css | 1 + preview/assets/breadcrumb.stories-Sb5NlZEZ.js | 23 + preview/assets/button.stories-nGxApkff.js | 19 + .../assets/buttongroup.stories-CMDX25dv.js | 1 + preview/assets/calendar-Dhsb6w0Y.js | 22 + preview/assets/calendar-q650NNE4.css | 1 + preview/assets/calendar.stories-D_Opup45.js | 65 + preview/assets/capitalize-D60SaZ2R.js | 1 + preview/assets/card-B4AOBLqT.css | 1 + preview/assets/card-qeG-xtbY.js | 33 + preview/assets/card.stories-BQL2g6T9.js | 112 + preview/assets/checkbox.stories-CliIIW-p.js | 35 + preview/assets/class-map-hgg4E7s1.js | 9 + .../assets/clearbutton.stories-BZM-De_J.js | 1 + .../assets/closebutton.stories-0an1aDgd.js | 1 + preview/assets/coachindicator-CVlqp3cA.css | 1 + .../assets/coachindicator.stories-KHlrmXbx.js | 23 + preview/assets/coachmark-CD7BNDnS.js | 11 + preview/assets/coachmark-TIN_9PBH.css | 1 + preview/assets/coachmark.stories-tl1trvRR.js | 28 + preview/assets/code_of_conduct-CYWkzos9.js | 60 + preview/assets/colorarea-hsAdeylT.js | 13 + preview/assets/colorarea.stories-CbpvrxkJ.js | 1 + preview/assets/colorhandle-DB5ED4KR.js | 15 + .../assets/colorhandle.stories-BlpNr4ht.js | 1 + preview/assets/colorloupe-CJIIPA2a.js | 15 + preview/assets/colorloupe.stories-q2WZlTKS.js | 1 + preview/assets/colorslider-B3TNzyJ4.css | 1 + preview/assets/colorslider-DCfo75jv.js | 29 + .../assets/colorslider.stories-Dsi13Jiy.js | 20 + preview/assets/colorwheel-BfQwOC3o.js | 25 + preview/assets/colorwheel-Cu1fWWwI.css | 1 + preview/assets/colorwheel.stories-D_ewzq7j.js | 15 + preview/assets/combobox-C0I-kD8K.js | 55 + preview/assets/combobox-CurWtNnN.css | 1 + preview/assets/combobox.stories-D4NqS6mI.js | 103 + preview/assets/component-details-AR4Dr-Ts.js | 1 + preview/assets/component-details-CTN28dz3.css | 1 + preview/assets/contextualhelp-CeTC2dR8.js | 19 + preview/assets/contextualhelp-DQBcSdjD.css | 1 + .../assets/contextualhelp.stories-CzAZEQEf.js | 14 + preview/assets/cyclebutton-DS5MQVtf.css | 1 + .../assets/cyclebutton.stories-DziACnPA.js | 43 + preview/assets/datepicker-BjvLqG0g.css | 1 + preview/assets/datepicker-CiAboA1f.js | 33 + preview/assets/datepicker.stories-_MEXIBF0.js | 18 + preview/assets/decorator-BgHd6ynM.js | 44 + preview/assets/decorator-DGtVcIIT.css | 1 + preview/assets/deprecation-C0QPDF_p.js | 62 + preview/assets/develop-CUlYP8g0.js | 379 + preview/assets/dial-D1GUsmxl.css | 1 + preview/assets/dial.stories-WR52PGC1.js | 83 + preview/assets/dialog.stories-C-pj-knO.js | 1 + preview/assets/directive-helpers-AZ3A6LC6.js | 5 + preview/assets/divider.stories-C6rJCcBt.js | 1 + preview/assets/dropindicator-BYPpmqRh.css | 1 + .../assets/dropindicator.stories-wrha_830.js | 6 + preview/assets/dropzone-CV9c7kC0.css | 1 + preview/assets/dropzone.stories-BfJfk5pa.js | 15 + preview/assets/entry-preview-DnU9Kyfd.js | 4 + preview/assets/entry-preview-docs-BF8B7CDv.js | 2 + preview/assets/fieldgroup-Ce4g4A3y.css | 1 + preview/assets/fieldgroup-pswHh1wn.js | 48 + preview/assets/fieldgroup.stories-DSlYFSDB.js | 46 + preview/assets/fieldlabel.stories-Bnc6CE6r.js | 1 + .../assets/floatingactionbutton-BQ6842F6.css | 1 + .../floatingactionbutton.stories-9HUBmIeq.js | 8 + preview/assets/form.stories-YYIq5uly.js | 30 + preview/assets/formatter-2WMMO6ZP-BWqzsTxk.js | 58 + preview/assets/helptext.stories-BNnf1YN6.js | 1 + preview/assets/icon-CvR26O1i.js | 48 + preview/assets/icon.stories-Bo78Wakl.js | 123 + preview/assets/if-defined-Bu2tv67N.js | 5 + preview/assets/iframe-HOC10Tsl.js | 2 + .../assets/illustratedmessage-Ve4vfRlb.css | 1 + .../illustratedmessage.stories-CiB_ygKH.js | 77 + preview/assets/index-BCEELo55.js | 1 + preview/assets/index-BM7n-yQ0.js | 548 + preview/assets/index-BkCjH-3M.js | 1 + preview/assets/index-Bra5jxz-.js | 1 + preview/assets/index-DMJx5Vcm.js | 3 + preview/assets/index-DrFu-skq.js | 6 + .../assets/infieldbutton.stories-fcZf61XN.js | 1 + preview/assets/inlinealert-B5FuNWHV.css | 1 + .../assets/inlinealert.stories-BmAQ7kM7.js | 69 + preview/assets/jsx-runtime-Dt6rJ0KA.js | 9 + preview/assets/link.stories-BfWbM5KU.js | 1 + preview/assets/lit-element-D6xKo6I1.js | 13 + preview/assets/lit-html-CSEOSYGt.js | 7 + preview/assets/logicbutton-CJFUqif6.css | 1 + .../assets/logicbutton.stories-BYOAmdgN.js | 10 + preview/assets/lowerCase-CIorQk0G.js | 1 + preview/assets/menu.stories-BXJIuiuy.js | 13 + preview/assets/meter.stories-CyJ8bSzA.js | 13 + preview/assets/miller-DHWNQvxk.css | 1 + preview/assets/miller.stories-CzTNVNGl.js | 11 + preview/assets/modal.stories-DaqaJdK8.js | 1 + .../opacitycheckerboard.stories-Ca4UOefP.js | 1 + preview/assets/package-zFcCOiDa.js | 1 + preview/assets/pagination-O_H2yK3d.css | 1 + preview/assets/pagination.stories-D4RYw-Je.js | 27 + preview/assets/picker.stories-bnh2hs9z.js | 238 + .../assets/pickerbutton.stories-D0FxMjKb.js | 1 + preview/assets/popover.stories-BLFIcmnt.js | 1 + preview/assets/preview-B2MyBRTS.css | 1 + preview/assets/preview-BAz7FMXc.js | 396 + preview/assets/preview-BNKhtCRJ.js | 2 + preview/assets/preview-BpcF_O6y.js | 7 + preview/assets/preview-C7tAAfkq.js | 1 + preview/assets/preview-CJTK1H4D.js | 1 + preview/assets/preview-DcnFBrgy.js | 1 + preview/assets/preview-Df8P57N3.js | 27 + preview/assets/preview-YA68kqbQ.js | 2 + preview/assets/preview-_wVaxMW2.js | 504 + preview/assets/progressbar-e9OxbAN7.css | 1 + .../assets/progressbar.stories-BB9OHBos.js | 51 + .../assets/progresscircle.stories-BZikSZfF.js | 14 + preview/assets/quickaction-idt5u3W6.css | 1 + .../assets/quickaction.stories-CtYIOWrG.js | 107 + preview/assets/radio-C6PL7XE6.css | 1 + preview/assets/radio.stories-C9uCeRRi.js | 87 + preview/assets/rating-kINvSojX.css | 1 + preview/assets/rating.stories-BDHtn1tc.js | 29 + preview/assets/releasing-BTNnlGA1.js | 26 + preview/assets/repeat-wef4bzRs.js | 5 + preview/assets/search-DMU9RyrK.css | 1 + preview/assets/search.stories-CSpfwZXl.js | 8 + preview/assets/searchwithin-DKjamp1y.css | 1 + .../assets/searchwithin.stories-DwiZEDln.js | 113 + preview/assets/sidenav-Ccww7DWX.css | 1 + preview/assets/sidenav.stories-8DwIGABo.js | 39 + preview/assets/slider-BHD7NctA.css | 1 + preview/assets/slider.stories-BGj6E5l3.js | 86 + .../spectrum_illustration_2x-mPTswyN0.png | Bin 0 -> 427957 bytes preview/assets/splitbutton-B5SCf8fx.css | 1 + .../assets/splitbutton.stories-DPgdHqCD.js | 110 + preview/assets/splitview-CpVleFYD.css | 1 + preview/assets/splitview.stories-BKBXDMYw.js | 95 + preview/assets/states-DzrSzBKQ.js | 1 + preview/assets/statuslight-DbxcZPpB.css | 1 + .../assets/statuslight.stories-DkAspoIm.js | 39 + preview/assets/steplist-r46FzB8P.css | 1 + preview/assets/steplist.stories-PHtep4T3.js | 33 + preview/assets/stepper.stories-Bq13FIgH.js | 249 + preview/assets/style-map-WzOQOdw5.js | 5 + preview/assets/swatch-ChLfuzwO.css | 1 + preview/assets/swatch.stories-BxktTg-g.js | 34 + preview/assets/swatchgroup-DrwaYQS5.css | 1 + .../assets/swatchgroup.stories-BZIiOy08.js | 9 + preview/assets/switch.stories-BAF7mcnK.js | 1 + .../syntaxhighlighter-BP7B2CQK-CoOm1wcX.js | 1 + preview/assets/table-Bd5yESb7.css | 1 + preview/assets/table.stories-BarbTiBu.js | 112 + preview/assets/tabs-IhPSJOBj.css | 1 + preview/assets/tabs.stories-CxOYvhiF.js | 260 + preview/assets/tag-DTFLn_Gp.css | 1 + preview/assets/tag.stories-BGVB_gmj.js | 13 + preview/assets/taggroup-DUw-qmGU.css | 1 + preview/assets/taggroup.stories-ClaGgbtk.js | 10 + preview/assets/template-4IgiSyjU.js | 13 + preview/assets/template-5EiEQEJR.js | 6 + preview/assets/template-A-eCpoJU.css | 1 + preview/assets/template-B1916WdB.js | 9 + preview/assets/template-B1JKfpgM.css | 1 + preview/assets/template-B4tDcEv7.css | 1 + preview/assets/template-BAYcuRpk.css | 1 + preview/assets/template-BCTcm72_.js | 8 + preview/assets/template-BGUoQQFE.js | 30 + preview/assets/template-BHo8nrqo.js | 8 + preview/assets/template-BO6HeMmf.css | 1 + preview/assets/template-BOuuuviw.js | 15 + preview/assets/template-BXx-OSNV.js | 19 + preview/assets/template-Ba8uUcrn.js | 31 + preview/assets/template-Ba9BuEEP.css | 1 + preview/assets/template-Be1lnbHm.css | 1 + preview/assets/template-BfHrSzRt.css | 1 + preview/assets/template-BiCzTKMw.css | 1 + preview/assets/template-BiaGdgHf.css | 1 + preview/assets/template-BjLmTyxc.js | 141 + preview/assets/template-C3MtDh7C.js | 42 + preview/assets/template-C3nfGs8B.css | 1 + preview/assets/template-CEQWKLxE.css | 1 + preview/assets/template-CJ4Fnp25.js | 21 + preview/assets/template-CKCGXckf.css | 1 + preview/assets/template-COskcie3.js | 24 + preview/assets/template-CPGM6lN2.js | 20 + preview/assets/template-CRtzpfEN.css | 1 + preview/assets/template-CWvoW2jG.css | 1 + preview/assets/template-C_jYuYr1.js | 12 + preview/assets/template-CcRtxD4p.js | 7 + preview/assets/template-ChjtpR6H.js | 21 + preview/assets/template-CjCFM0Rd.css | 1 + preview/assets/template-D6tpc01T.css | 1 + preview/assets/template-DE41joej.js | 32 + preview/assets/template-DGp5AGvX.css | 1 + preview/assets/template-DIlrrHbQ.js | 29 + preview/assets/template-DKtqUm5i.css | 1 + preview/assets/template-DL6cGV6K.css | 1 + preview/assets/template-DLCUREbS.css | 1 + preview/assets/template-DLgxBgik.css | 1 + preview/assets/template-DSnc_Sn3.js | 38 + preview/assets/template-DVnOcH8Q.js | 1 + preview/assets/template-DWHQE7dh.js | 9 + preview/assets/template-DWaXl-vi.css | 1 + preview/assets/template-DYoQ0W9m.js | 14 + preview/assets/template-DfXovDkQ.css | 1 + preview/assets/template-Dik_OYpW.js | 34 + preview/assets/template-Dl1l5zgR.css | 1 + preview/assets/template-DnGnQeD6.css | 1 + preview/assets/template-Dnh7D1cf.css | 1 + preview/assets/template-Dnsg1ayi.css | 1 + preview/assets/template-DoBL1Y2O.css | 1 + preview/assets/template-DoU600Wz.css | 1 + preview/assets/template-DtEFGDu6.js | 24 + preview/assets/template-Dx6uDptV.js | 24 + preview/assets/template-DxUR4R7i.js | 38 + preview/assets/template-KOM5R0ws.js | 24 + preview/assets/template-NGxmJUij.js | 19 + preview/assets/template-Ognew2En.js | 33 + preview/assets/template-TtTUqDuW.js | 19 + preview/assets/template-Z2vtje-g.js | 9 + preview/assets/template-_iWHAA2V.css | 1 + preview/assets/template-e90zWCnj.css | 1 + preview/assets/template-e9m7ghmM.js | 43 + preview/assets/template-oJE7WiZI.js | 49 + preview/assets/template-vtPsAD2T.css | 1 + preview/assets/template-wvnt2Vdc.js | 22 + preview/assets/textfield.stories-CqGqrWgk.js | 1 + preview/assets/thumbnail.stories-DSe3L1nK.js | 1 + preview/assets/tiny-invariant-BxWVcicq.js | 1 + preview/assets/toast-B9ddJBLj.css | 1 + preview/assets/toast.stories-BtexuFzP.js | 16 + preview/assets/tooltip.stories-rI3lknAv.js | 17 + preview/assets/tray.stories-BRdxwHI3.js | 1 + preview/assets/treeview-DFAuwCfE.css | 1 + preview/assets/treeview.stories-D98-R37c.js | 38 + preview/assets/typography.stories-BilxtVkG.js | 13 + preview/assets/underlay.stories-Opdwzu3p.js | 1 + preview/assets/upperCase-0eNr0WW7.js | 1 + preview/assets/utilities-BLLjuW2y.js | 36 + preview/assets/utilities-CvTZEnJS.css | 1 + preview/assets/v4-CQkTLCs1.js | 1 + preview/assets/well-CGTdseE2.css | 1 + preview/assets/well.stories-BlnoqJly.js | 10 + preview/assets/when-BR7zwNJC.js | 5 + preview/example-ava.png | Bin 0 -> 9444 bytes preview/example-ava@2x.png | Bin 0 -> 32462 bytes preview/example-card-landscape.png | Bin 0 -> 151472 bytes preview/example-card-portrait.png | Bin 0 -> 591069 bytes preview/example-card-square.png | Bin 0 -> 562184 bytes preview/favicon.svg | 7 + preview/flowers.png | Bin 0 -> 39635 bytes preview/iframe.html | 635 ++ preview/index.html | 183 + preview/index.json | 1 + preview/project.json | 1 + preview/sb-addons/-12/manager-bundle.css | 1 + .../-12/manager-bundle.css.LEGAL.txt | 12 + preview/sb-addons/-12/manager-bundle.js | 3 + .../sb-addons/-12/manager-bundle.js.LEGAL.txt | 0 preview/sb-addons/a11y-6/manager-bundle.js | 3 + .../a11y-6/manager-bundle.js.LEGAL.txt | 0 .../manager-bundle.js | 679 ++ .../manager-bundle.js.LEGAL.txt | 66 + .../designs-11/register-panel-bundle.js | 665 ++ .../register-panel-bundle.js.LEGAL.txt | 127 + .../essentials-actions-2/manager-bundle.js | 3 + .../manager-bundle.js.LEGAL.txt | 0 .../essentials-controls-1/manager-bundle.js | 60 + .../manager-bundle.js.LEGAL.txt | 18 + .../essentials-measure-4/manager-bundle.js | 3 + .../manager-bundle.js.LEGAL.txt | 0 .../essentials-outline-5/manager-bundle.js | 3 + .../manager-bundle.js.LEGAL.txt | 0 .../essentials-toolbars-3/manager-bundle.js | 3 + .../manager-bundle.js.LEGAL.txt | 0 .../etchteam-status-8/manager-bundle.js | 26 + .../manager-bundle.js.LEGAL.txt | 0 .../interactions-9/manager-bundle.js | 33 + .../manager-bundle.js.LEGAL.txt | 0 .../common-manager-bundle.js | 3 + .../common-manager-bundle.js.LEGAL.txt | 0 .../whitespace-html-7/manager-bundle.js | 93 + .../manager-bundle.js.LEGAL.txt | 14 + preview/sb-common-assets/fonts.css | 31 + .../nunito-sans-bold-italic.woff2 | Bin 0 -> 49460 bytes .../sb-common-assets/nunito-sans-bold.woff2 | Bin 0 -> 47144 bytes .../sb-common-assets/nunito-sans-italic.woff2 | Bin 0 -> 49620 bytes .../nunito-sans-regular.woff2 | Bin 0 -> 47072 bytes .../WithTooltip-KJL26V4Q-5LS5AN27.js | 1 + preview/sb-manager/chunk-4FMBEAHW.js | 274 + preview/sb-manager/chunk-6GQRNYH2.js | 186 + preview/sb-manager/chunk-B3YDJJJH.js | 347 + preview/sb-manager/chunk-BLWCBWKL.js | 9 + preview/sb-manager/chunk-GUVK2GTO.js | 6 + preview/sb-manager/chunk-ZR5JZWHI.js | 1 + .../sb-manager/formatter-2WMMO6ZP-JI7RHVTW.js | 58 + preview/sb-manager/globals-module-info.js | 1 + preview/sb-manager/globals-runtime.js | 1 + preview/sb-manager/globals.js | 1 + preview/sb-manager/index.js | 1 + preview/sb-manager/runtime.js | 1 + .../syntaxhighlighter-BP7B2CQK-WOJYHKQR.js | 1 + preview/sb-preview/globals.js | 1 + preview/sb-preview/runtime.js | 156 + preview/spectrum-css_illustration_desktop.png | Bin 0 -> 113866 bytes preview/spectrum_illustration_2x.png | Bin 0 -> 427957 bytes preview/thumbnail.png | Bin 0 -> 66226 bytes progressbar.html | 234 + progresscircle.html | 431 + quickaction.html | 78 + radio.html | 420 + rating.html | 676 ++ search.html | 447 + searchwithin.html | 196 + sidenav.html | 392 + slider.html | 870 ++ splitbutton.html | 126 + splitview.html | 96 + statuslight.html | 95 + steplist.html | 504 + stepper.html | 760 ++ store.json | 562 ++ swatch.html | 513 + swatchgroup.html | 538 + switch.html | 191 + table.html | 2535 +++++ tabs.html | 1275 +++ tag.html | 841 ++ taggroup.html | 309 + textarea.html | 345 + textfield.html | 523 + thumbnail.html | 325 + toast.html | 306 + tokens/css/components/bridge/actionbutton.css | 120 + tokens/css/components/bridge/actiongroup.css | 18 + tokens/css/components/bridge/alertbanner.css | 16 + tokens/css/components/bridge/assetcard.css | 16 + tokens/css/components/bridge/button.css | 370 + tokens/css/components/bridge/checkbox.css | 19 + tokens/css/components/bridge/clearbutton.css | 19 + tokens/css/components/bridge/closebutton.css | 19 + tokens/css/components/bridge/combobox.css | 20 + tokens/css/components/bridge/datepicker.css | 16 + tokens/css/components/bridge/index.css | 38 + .../css/components/bridge/infieldbutton.css | 25 + tokens/css/components/bridge/picker.css | 28 + tokens/css/components/bridge/pickerbutton.css | 24 + tokens/css/components/bridge/popover.css | 16 + tokens/css/components/bridge/radio.css | 25 + tokens/css/components/bridge/rating.css | 19 + tokens/css/components/bridge/search.css | 38 + tokens/css/components/bridge/slider.css | 30 + tokens/css/components/bridge/stepper.css | 40 + tokens/css/components/bridge/switch.css | 23 + tokens/css/components/bridge/tabs.css | 16 + tokens/css/components/bridge/tag.css | 45 + tokens/css/components/bridge/textfield.css | 21 + tokens/css/components/bridge/toast.css | 16 + tokens/css/components/bridge/tooltip.css | 16 + .../css/components/express/actionbutton.css | 104 + tokens/css/components/express/actiongroup.css | 18 + tokens/css/components/express/alertbanner.css | 16 + tokens/css/components/express/assetcard.css | 16 + tokens/css/components/express/button.css | 326 + tokens/css/components/express/checkbox.css | 19 + tokens/css/components/express/clearbutton.css | 19 + tokens/css/components/express/closebutton.css | 19 + tokens/css/components/express/combobox.css | 20 + tokens/css/components/express/datepicker.css | 16 + tokens/css/components/express/index.css | 38 + .../css/components/express/infieldbutton.css | 25 + tokens/css/components/express/picker.css | 28 + .../css/components/express/pickerbutton.css | 24 + tokens/css/components/express/popover.css | 16 + tokens/css/components/express/radio.css | 23 + tokens/css/components/express/rating.css | 19 + tokens/css/components/express/search.css | 30 + tokens/css/components/express/slider.css | 30 + tokens/css/components/express/stepper.css | 38 + tokens/css/components/express/switch.css | 23 + tokens/css/components/express/tabs.css | 16 + tokens/css/components/express/tag.css | 45 + tokens/css/components/express/textfield.css | 21 + tokens/css/components/express/toast.css | 16 + tokens/css/components/express/tooltip.css | 16 + .../css/components/spectrum/actionbutton.css | 104 + .../css/components/spectrum/actiongroup.css | 18 + .../css/components/spectrum/alertbanner.css | 16 + tokens/css/components/spectrum/assetcard.css | 16 + tokens/css/components/spectrum/button.css | 326 + tokens/css/components/spectrum/checkbox.css | 19 + .../css/components/spectrum/clearbutton.css | 19 + .../css/components/spectrum/closebutton.css | 19 + tokens/css/components/spectrum/combobox.css | 20 + tokens/css/components/spectrum/datepicker.css | 16 + tokens/css/components/spectrum/index.css | 38 + .../css/components/spectrum/infieldbutton.css | 25 + tokens/css/components/spectrum/picker.css | 28 + .../css/components/spectrum/pickerbutton.css | 24 + tokens/css/components/spectrum/popover.css | 16 + tokens/css/components/spectrum/radio.css | 23 + tokens/css/components/spectrum/rating.css | 19 + tokens/css/components/spectrum/search.css | 30 + tokens/css/components/spectrum/slider.css | 30 + tokens/css/components/spectrum/stepper.css | 36 + tokens/css/components/spectrum/switch.css | 23 + tokens/css/components/spectrum/tabs.css | 16 + tokens/css/components/spectrum/tag.css | 45 + tokens/css/components/spectrum/textfield.css | 21 + tokens/css/components/spectrum/toast.css | 16 + tokens/css/components/spectrum/tooltip.css | 16 + tokens/css/dark-vars.css | 472 + tokens/css/darkest-vars.css | 472 + tokens/css/express/custom-large-vars.css | 23 + tokens/css/express/custom-medium-vars.css | 23 + tokens/css/express/custom-vars.css | 16 + tokens/css/express/dark-vars.css | 23 + tokens/css/express/darkest-vars.css | 23 + tokens/css/express/global-vars.css | 53 + tokens/css/express/large-vars.css | 73 + tokens/css/express/light-vars.css | 23 + tokens/css/express/medium-vars.css | 73 + tokens/css/global-vars.css | 586 ++ tokens/css/large-vars.css | 504 + tokens/css/light-vars.css | 473 + tokens/css/medium-vars.css | 504 + tokens/css/spectrum/custom-large-vars.css | 119 + tokens/css/spectrum/custom-medium-vars.css | 118 + tokens/css/spectrum/custom-vars.css | 51 + tokens/css/spectrum/dark-vars.css | 65 + tokens/css/spectrum/darkest-vars.css | 65 + tokens/css/spectrum/global-vars.css | 90 + tokens/css/spectrum/large-vars.css | 167 + tokens/css/spectrum/light-vars.css | 65 + tokens/css/spectrum/medium-vars.css | 166 + tokens/index.css | 3693 +++++++ tooltip.html | 944 ++ tray.html | 27 + treeview.html | 1498 +++ typography-body.html | 203 + typography-code.html | 58 + typography-detail.html | 25 + typography-heading.html | 249 + typography-international.html | 456 + typography.html | 365 + well.html | 22 + 1314 files changed, 170598 insertions(+) create mode 100644 accordion.html create mode 100644 actionbar.html create mode 100644 actionbutton.html create mode 100644 actiongroup.html create mode 100644 actionmenu.html create mode 100644 alertbanner.html create mode 100644 alertdialog.html create mode 100644 asset.html create mode 100644 assetcard.html create mode 100644 assetlist.html create mode 100644 avatar.html create mode 100644 badge.html create mode 100644 breadcrumb.html create mode 100644 button-accent.html create mode 100644 button-negative.html create mode 100644 button-pending.html create mode 100644 button-primary.html create mode 100644 button-secondary.html create mode 100644 button-staticcolor.html create mode 100644 buttongroup.html create mode 100644 calendar.html create mode 100644 card-asset.html create mode 100644 card-gallery.html create mode 100644 card.html create mode 100644 checkbox.html create mode 100644 clearbutton.html create mode 100644 closebutton.html create mode 100644 coachindicator.html create mode 100644 coachmark.html create mode 100644 colorarea.html create mode 100644 colorhandle.html create mode 100644 colorloupe.html create mode 100644 colorslider.html create mode 100644 colorwheel.html create mode 100644 combobox.html create mode 100644 components/accordion/index-base.css create mode 100644 components/accordion/index-vars.css create mode 100644 components/accordion/index.css create mode 100644 components/accordion/metadata.json create mode 100644 components/accordion/package.json create mode 100644 components/accordion/template.js create mode 100644 components/actionbar/index-base.css create mode 100644 components/actionbar/index-vars.css create mode 100644 components/actionbar/index.css create mode 100644 components/actionbar/metadata.json create mode 100644 components/actionbar/package.json create mode 100644 components/actionbar/template.js create mode 100644 components/actionbutton/index-base.css create mode 100644 components/actionbutton/index-theme.css create mode 100644 components/actionbutton/index-vars.css create mode 100644 components/actionbutton/index.css create mode 100644 components/actionbutton/metadata.json create mode 100644 components/actionbutton/package.json create mode 100644 components/actionbutton/template.js create mode 100644 components/actionbutton/themes/express.css create mode 100644 components/actionbutton/themes/spectrum.css create mode 100644 components/actiongroup/index-base.css create mode 100644 components/actiongroup/index-theme.css create mode 100644 components/actiongroup/index-vars.css create mode 100644 components/actiongroup/index.css create mode 100644 components/actiongroup/metadata.json create mode 100644 components/actiongroup/package.json create mode 100644 components/actiongroup/template.js create mode 100644 components/actiongroup/themes/express.css create mode 100644 components/actiongroup/themes/spectrum.css create mode 100644 components/actionmenu/package.json create mode 100644 components/actionmenu/template.js create mode 100644 components/alertbanner/index-base.css create mode 100644 components/alertbanner/index-theme.css create mode 100644 components/alertbanner/index-vars.css create mode 100644 components/alertbanner/index.css create mode 100644 components/alertbanner/metadata.json create mode 100644 components/alertbanner/package.json create mode 100644 components/alertbanner/template.js create mode 100644 components/alertbanner/themes/express.css create mode 100644 components/alertbanner/themes/spectrum.css create mode 100644 components/alertdialog/index-base.css create mode 100644 components/alertdialog/index-vars.css create mode 100644 components/alertdialog/index.css create mode 100644 components/alertdialog/metadata.json create mode 100644 components/alertdialog/package.json create mode 100644 components/alertdialog/template.js create mode 100644 components/asset/index-base.css create mode 100644 components/asset/index-vars.css create mode 100644 components/asset/index.css create mode 100644 components/asset/metadata.json create mode 100644 components/asset/package.json create mode 100644 components/asset/template.js create mode 100644 components/assetcard/index-base.css create mode 100644 components/assetcard/index-theme.css create mode 100644 components/assetcard/index-vars.css create mode 100644 components/assetcard/index.css create mode 100644 components/assetcard/metadata.json create mode 100644 components/assetcard/package.json create mode 100644 components/assetcard/template.js create mode 100644 components/assetcard/themes/express.css create mode 100644 components/assetcard/themes/spectrum.css create mode 100644 components/assetlist/index-base.css create mode 100644 components/assetlist/index-vars.css create mode 100644 components/assetlist/index.css create mode 100644 components/assetlist/metadata.json create mode 100644 components/assetlist/package.json create mode 100644 components/assetlist/template.js create mode 100644 components/avatar/index-base.css create mode 100644 components/avatar/index-vars.css create mode 100644 components/avatar/index.css create mode 100644 components/avatar/metadata.json create mode 100644 components/avatar/package.json create mode 100644 components/avatar/template.js create mode 100644 components/badge/index-base.css create mode 100644 components/badge/index-vars.css create mode 100644 components/badge/index.css create mode 100644 components/badge/metadata.json create mode 100644 components/badge/package.json create mode 100644 components/badge/template.js create mode 100644 components/breadcrumb/index-base.css create mode 100644 components/breadcrumb/index-vars.css create mode 100644 components/breadcrumb/index.css create mode 100644 components/breadcrumb/metadata.json create mode 100644 components/breadcrumb/package.json create mode 100644 components/breadcrumb/template.js create mode 100644 components/button/index-base.css create mode 100644 components/button/index-theme.css create mode 100644 components/button/index-vars.css create mode 100644 components/button/index.css create mode 100644 components/button/metadata.json create mode 100644 components/button/package.json create mode 100644 components/button/template.js create mode 100644 components/button/themes/express.css create mode 100644 components/button/themes/spectrum.css create mode 100644 components/buttongroup/index-base.css create mode 100644 components/buttongroup/index-vars.css create mode 100644 components/buttongroup/index.css create mode 100644 components/buttongroup/metadata.json create mode 100644 components/buttongroup/package.json create mode 100644 components/buttongroup/template.js create mode 100644 components/calendar/index-base.css create mode 100644 components/calendar/index-vars.css create mode 100644 components/calendar/index.css create mode 100644 components/calendar/metadata.json create mode 100644 components/calendar/package.json create mode 100644 components/calendar/template.js create mode 100644 components/card/index-base.css create mode 100644 components/card/index-vars.css create mode 100644 components/card/index.css create mode 100644 components/card/metadata.json create mode 100644 components/card/package.json create mode 100644 components/card/template.js create mode 100644 components/checkbox/index-base.css create mode 100644 components/checkbox/index-theme.css create mode 100644 components/checkbox/index-vars.css create mode 100644 components/checkbox/index.css create mode 100644 components/checkbox/metadata.json create mode 100644 components/checkbox/package.json create mode 100644 components/checkbox/template.js create mode 100644 components/checkbox/themes/express.css create mode 100644 components/checkbox/themes/spectrum.css create mode 100644 components/clearbutton/index-base.css create mode 100644 components/clearbutton/index-theme.css create mode 100644 components/clearbutton/index-vars.css create mode 100644 components/clearbutton/index.css create mode 100644 components/clearbutton/metadata.json create mode 100644 components/clearbutton/package.json create mode 100644 components/clearbutton/template.js create mode 100644 components/clearbutton/themes/express.css create mode 100644 components/clearbutton/themes/spectrum.css create mode 100644 components/closebutton/index-base.css create mode 100644 components/closebutton/index-theme.css create mode 100644 components/closebutton/index-vars.css create mode 100644 components/closebutton/index.css create mode 100644 components/closebutton/metadata.json create mode 100644 components/closebutton/package.json create mode 100644 components/closebutton/template.js create mode 100644 components/closebutton/themes/express.css create mode 100644 components/closebutton/themes/spectrum.css create mode 100644 components/coachindicator/index-base.css create mode 100644 components/coachindicator/index-vars.css create mode 100644 components/coachindicator/index.css create mode 100644 components/coachindicator/metadata.json create mode 100644 components/coachindicator/package.json create mode 100644 components/coachindicator/template.js create mode 100644 components/coachmark/index-base.css create mode 100644 components/coachmark/index-vars.css create mode 100644 components/coachmark/index.css create mode 100644 components/coachmark/metadata.json create mode 100644 components/coachmark/package.json create mode 100644 components/coachmark/template.js create mode 100644 components/colorarea/index-base.css create mode 100644 components/colorarea/index-vars.css create mode 100644 components/colorarea/index.css create mode 100644 components/colorarea/metadata.json create mode 100644 components/colorarea/package.json create mode 100644 components/colorarea/template.js create mode 100644 components/colorhandle/index-base.css create mode 100644 components/colorhandle/index-vars.css create mode 100644 components/colorhandle/index.css create mode 100644 components/colorhandle/metadata.json create mode 100644 components/colorhandle/package.json create mode 100644 components/colorhandle/template.js create mode 100644 components/colorloupe/index-base.css create mode 100644 components/colorloupe/index-vars.css create mode 100644 components/colorloupe/index.css create mode 100644 components/colorloupe/metadata.json create mode 100644 components/colorloupe/package.json create mode 100644 components/colorloupe/template.js create mode 100644 components/colorslider/index-base.css create mode 100644 components/colorslider/index-vars.css create mode 100644 components/colorslider/index.css create mode 100644 components/colorslider/metadata.json create mode 100644 components/colorslider/package.json create mode 100644 components/colorslider/template.js create mode 100644 components/colorwheel/index-base.css create mode 100644 components/colorwheel/index-vars.css create mode 100644 components/colorwheel/index.css create mode 100644 components/colorwheel/metadata.json create mode 100644 components/colorwheel/package.json create mode 100644 components/colorwheel/template.js create mode 100644 components/combobox/index-base.css create mode 100644 components/combobox/index-theme.css create mode 100644 components/combobox/index-vars.css create mode 100644 components/combobox/index.css create mode 100644 components/combobox/metadata.json create mode 100644 components/combobox/package.json create mode 100644 components/combobox/template.js create mode 100644 components/combobox/themes/express.css create mode 100644 components/combobox/themes/spectrum.css create mode 100644 components/commons/package.json create mode 100644 components/contextualhelp/index-base.css create mode 100644 components/contextualhelp/index-vars.css create mode 100644 components/contextualhelp/index.css create mode 100644 components/contextualhelp/metadata.json create mode 100644 components/contextualhelp/package.json create mode 100644 components/contextualhelp/template.js create mode 100644 components/datepicker/index-base.css create mode 100644 components/datepicker/index-theme.css create mode 100644 components/datepicker/index-vars.css create mode 100644 components/datepicker/index.css create mode 100644 components/datepicker/metadata.json create mode 100644 components/datepicker/package.json create mode 100644 components/datepicker/template.js create mode 100644 components/datepicker/themes/express.css create mode 100644 components/datepicker/themes/spectrum.css create mode 100644 components/dial/index-base.css create mode 100644 components/dial/index-vars.css create mode 100644 components/dial/index.css create mode 100644 components/dial/metadata.json create mode 100644 components/dial/package.json create mode 100644 components/dial/template.js create mode 100644 components/dialog/index-base.css create mode 100644 components/dialog/index-vars.css create mode 100644 components/dialog/index.css create mode 100644 components/dialog/metadata.json create mode 100644 components/dialog/package.json create mode 100644 components/dialog/template.js create mode 100644 components/divider/index-base.css create mode 100644 components/divider/index-vars.css create mode 100644 components/divider/index.css create mode 100644 components/divider/metadata.json create mode 100644 components/divider/package.json create mode 100644 components/divider/template.js create mode 100644 components/dropindicator/index-base.css create mode 100644 components/dropindicator/index-vars.css create mode 100644 components/dropindicator/index.css create mode 100644 components/dropindicator/metadata.json create mode 100644 components/dropindicator/package.json create mode 100644 components/dropindicator/template.js create mode 100644 components/dropzone/index-base.css create mode 100644 components/dropzone/index-vars.css create mode 100644 components/dropzone/index.css create mode 100644 components/dropzone/metadata.json create mode 100644 components/dropzone/package.json create mode 100644 components/dropzone/template.js create mode 100644 components/fieldgroup/index-base.css create mode 100644 components/fieldgroup/index-vars.css create mode 100644 components/fieldgroup/index.css create mode 100644 components/fieldgroup/metadata.json create mode 100644 components/fieldgroup/package.json create mode 100644 components/fieldgroup/template.js create mode 100644 components/fieldlabel/form.template.js create mode 100644 components/fieldlabel/index-base.css create mode 100644 components/fieldlabel/index-vars.css create mode 100644 components/fieldlabel/index.css create mode 100644 components/fieldlabel/metadata.json create mode 100644 components/fieldlabel/package.json create mode 100644 components/fieldlabel/template.js create mode 100644 components/floatingactionbutton/index-base.css create mode 100644 components/floatingactionbutton/index-vars.css create mode 100644 components/floatingactionbutton/index.css create mode 100644 components/floatingactionbutton/metadata.json create mode 100644 components/floatingactionbutton/package.json create mode 100644 components/floatingactionbutton/template.js create mode 100644 components/helptext/index-base.css create mode 100644 components/helptext/index-vars.css create mode 100644 components/helptext/index.css create mode 100644 components/helptext/metadata.json create mode 100644 components/helptext/package.json create mode 100644 components/helptext/template.js create mode 100644 components/icon/index-base.css create mode 100644 components/icon/index-vars.css create mode 100644 components/icon/index.css create mode 100644 components/icon/metadata.json create mode 100644 components/icon/package.json create mode 100644 components/icon/template.js create mode 100644 components/icon/utilities.js create mode 100644 components/illustratedmessage/index-base.css create mode 100644 components/illustratedmessage/index-vars.css create mode 100644 components/illustratedmessage/index.css create mode 100644 components/illustratedmessage/metadata.json create mode 100644 components/illustratedmessage/package.json create mode 100644 components/illustratedmessage/template.js create mode 100644 components/infieldbutton/index-base.css create mode 100644 components/infieldbutton/index-theme.css create mode 100644 components/infieldbutton/index-vars.css create mode 100644 components/infieldbutton/index.css create mode 100644 components/infieldbutton/metadata.json create mode 100644 components/infieldbutton/package.json create mode 100644 components/infieldbutton/template.js create mode 100644 components/infieldbutton/themes/express.css create mode 100644 components/infieldbutton/themes/spectrum.css create mode 100644 components/inlinealert/index-base.css create mode 100644 components/inlinealert/index-vars.css create mode 100644 components/inlinealert/index.css create mode 100644 components/inlinealert/metadata.json create mode 100644 components/inlinealert/package.json create mode 100644 components/inlinealert/template.js create mode 100644 components/link/index-base.css create mode 100644 components/link/index-vars.css create mode 100644 components/link/index.css create mode 100644 components/link/metadata.json create mode 100644 components/link/package.json create mode 100644 components/link/template.js create mode 100644 components/logicbutton/index-base.css create mode 100644 components/logicbutton/index-vars.css create mode 100644 components/logicbutton/index.css create mode 100644 components/logicbutton/metadata.json create mode 100644 components/logicbutton/package.json create mode 100644 components/logicbutton/template.js create mode 100644 components/menu/index-base.css create mode 100644 components/menu/index-vars.css create mode 100644 components/menu/index.css create mode 100644 components/menu/metadata.json create mode 100644 components/menu/package.json create mode 100644 components/menu/template.js create mode 100644 components/miller/index-base.css create mode 100644 components/miller/index-vars.css create mode 100644 components/miller/index.css create mode 100644 components/miller/metadata.json create mode 100644 components/miller/package.json create mode 100644 components/miller/template.js create mode 100644 components/modal/index-base.css create mode 100644 components/modal/index-vars.css create mode 100644 components/modal/index.css create mode 100644 components/modal/metadata.json create mode 100644 components/modal/package.json create mode 100644 components/modal/template.js create mode 100644 components/opacitycheckerboard/index-base.css create mode 100644 components/opacitycheckerboard/index-vars.css create mode 100644 components/opacitycheckerboard/index.css create mode 100644 components/opacitycheckerboard/metadata.json create mode 100644 components/opacitycheckerboard/package.json create mode 100644 components/opacitycheckerboard/template.js create mode 100644 components/page/index-base.css create mode 100644 components/page/index-vars.css create mode 100644 components/page/index.css create mode 100644 components/page/metadata.json create mode 100644 components/page/package.json create mode 100644 components/pagination/index-base.css create mode 100644 components/pagination/index-vars.css create mode 100644 components/pagination/index.css create mode 100644 components/pagination/metadata.json create mode 100644 components/pagination/package.json create mode 100644 components/pagination/template.js create mode 100644 components/picker/index-base.css create mode 100644 components/picker/index-theme.css create mode 100644 components/picker/index-vars.css create mode 100644 components/picker/index.css create mode 100644 components/picker/metadata.json create mode 100644 components/picker/package.json create mode 100644 components/picker/template.js create mode 100644 components/picker/themes/express.css create mode 100644 components/picker/themes/spectrum.css create mode 100644 components/pickerbutton/index-base.css create mode 100644 components/pickerbutton/index-theme.css create mode 100644 components/pickerbutton/index-vars.css create mode 100644 components/pickerbutton/index.css create mode 100644 components/pickerbutton/metadata.json create mode 100644 components/pickerbutton/package.json create mode 100644 components/pickerbutton/template.js create mode 100644 components/pickerbutton/themes/express.css create mode 100644 components/pickerbutton/themes/spectrum.css create mode 100644 components/popover/index-base.css create mode 100644 components/popover/index-theme.css create mode 100644 components/popover/index-vars.css create mode 100644 components/popover/index.css create mode 100644 components/popover/metadata.json create mode 100644 components/popover/package.json create mode 100644 components/popover/template.js create mode 100644 components/popover/themes/express.css create mode 100644 components/popover/themes/spectrum.css create mode 100644 components/progressbar/index-base.css create mode 100644 components/progressbar/index-vars.css create mode 100644 components/progressbar/index.css create mode 100644 components/progressbar/metadata.json create mode 100644 components/progressbar/meter.template.js create mode 100644 components/progressbar/package.json create mode 100644 components/progressbar/template.js create mode 100644 components/progresscircle/index-base.css create mode 100644 components/progresscircle/index-vars.css create mode 100644 components/progresscircle/index.css create mode 100644 components/progresscircle/metadata.json create mode 100644 components/progresscircle/package.json create mode 100644 components/progresscircle/template.js create mode 100644 components/radio/index-base.css create mode 100644 components/radio/index-theme.css create mode 100644 components/radio/index-vars.css create mode 100644 components/radio/index.css create mode 100644 components/radio/metadata.json create mode 100644 components/radio/package.json create mode 100644 components/radio/template.js create mode 100644 components/radio/themes/express.css create mode 100644 components/radio/themes/spectrum.css create mode 100644 components/rating/index-base.css create mode 100644 components/rating/index-theme.css create mode 100644 components/rating/index-vars.css create mode 100644 components/rating/index.css create mode 100644 components/rating/metadata.json create mode 100644 components/rating/package.json create mode 100644 components/rating/template.js create mode 100644 components/rating/themes/express.css create mode 100644 components/rating/themes/spectrum.css create mode 100644 components/search/index-base.css create mode 100644 components/search/index-theme.css create mode 100644 components/search/index-vars.css create mode 100644 components/search/index.css create mode 100644 components/search/metadata.json create mode 100644 components/search/package.json create mode 100644 components/search/template.js create mode 100644 components/search/themes/express.css create mode 100644 components/search/themes/spectrum.css create mode 100644 components/sidenav/index-base.css create mode 100644 components/sidenav/index-vars.css create mode 100644 components/sidenav/index.css create mode 100644 components/sidenav/metadata.json create mode 100644 components/sidenav/package.json create mode 100644 components/sidenav/template.js create mode 100644 components/site/index-base.css create mode 100644 components/site/index-vars.css create mode 100644 components/site/index.css create mode 100644 components/site/metadata.json create mode 100644 components/site/package.json create mode 100644 components/slider/index-base.css create mode 100644 components/slider/index-theme.css create mode 100644 components/slider/index-vars.css create mode 100644 components/slider/index.css create mode 100644 components/slider/metadata.json create mode 100644 components/slider/package.json create mode 100644 components/slider/template.js create mode 100644 components/slider/themes/express.css create mode 100644 components/slider/themes/spectrum.css create mode 100644 components/splitview/index-base.css create mode 100644 components/splitview/index-vars.css create mode 100644 components/splitview/index.css create mode 100644 components/splitview/metadata.json create mode 100644 components/splitview/package.json create mode 100644 components/splitview/template.js create mode 100644 components/statuslight/index-base.css create mode 100644 components/statuslight/index-vars.css create mode 100644 components/statuslight/index.css create mode 100644 components/statuslight/metadata.json create mode 100644 components/statuslight/package.json create mode 100644 components/statuslight/template.js create mode 100644 components/steplist/index-base.css create mode 100644 components/steplist/index-vars.css create mode 100644 components/steplist/index.css create mode 100644 components/steplist/metadata.json create mode 100644 components/steplist/package.json create mode 100644 components/steplist/template.js create mode 100644 components/stepper/index-base.css create mode 100644 components/stepper/index-theme.css create mode 100644 components/stepper/index-vars.css create mode 100644 components/stepper/index.css create mode 100644 components/stepper/metadata.json create mode 100644 components/stepper/package.json create mode 100644 components/stepper/template.js create mode 100644 components/stepper/themes/express.css create mode 100644 components/stepper/themes/spectrum.css create mode 100644 components/swatch/index-base.css create mode 100644 components/swatch/index-vars.css create mode 100644 components/swatch/index.css create mode 100644 components/swatch/metadata.json create mode 100644 components/swatch/package.json create mode 100644 components/swatch/template.js create mode 100644 components/swatchgroup/index-base.css create mode 100644 components/swatchgroup/index-vars.css create mode 100644 components/swatchgroup/index.css create mode 100644 components/swatchgroup/metadata.json create mode 100644 components/swatchgroup/package.json create mode 100644 components/swatchgroup/template.js create mode 100644 components/switch/index-base.css create mode 100644 components/switch/index-theme.css create mode 100644 components/switch/index-vars.css create mode 100644 components/switch/index.css create mode 100644 components/switch/metadata.json create mode 100644 components/switch/package.json create mode 100644 components/switch/template.js create mode 100644 components/switch/themes/express.css create mode 100644 components/switch/themes/spectrum.css create mode 100644 components/table/index-base.css create mode 100644 components/table/index-vars.css create mode 100644 components/table/index.css create mode 100644 components/table/metadata.json create mode 100644 components/table/package.json create mode 100644 components/table/template.js create mode 100644 components/tabs/index-base.css create mode 100644 components/tabs/index-theme.css create mode 100644 components/tabs/index-vars.css create mode 100644 components/tabs/index.css create mode 100644 components/tabs/metadata.json create mode 100644 components/tabs/package.json create mode 100644 components/tabs/template.js create mode 100644 components/tabs/themes/express.css create mode 100644 components/tabs/themes/spectrum.css create mode 100644 components/tag/index-base.css create mode 100644 components/tag/index-theme.css create mode 100644 components/tag/index-vars.css create mode 100644 components/tag/index.css create mode 100644 components/tag/metadata.json create mode 100644 components/tag/package.json create mode 100644 components/tag/template.js create mode 100644 components/tag/themes/express.css create mode 100644 components/tag/themes/spectrum.css create mode 100644 components/taggroup/index-base.css create mode 100644 components/taggroup/index-vars.css create mode 100644 components/taggroup/index.css create mode 100644 components/taggroup/metadata.json create mode 100644 components/taggroup/package.json create mode 100644 components/taggroup/template.js create mode 100644 components/textfield/index-base.css create mode 100644 components/textfield/index-theme.css create mode 100644 components/textfield/index-vars.css create mode 100644 components/textfield/index.css create mode 100644 components/textfield/metadata.json create mode 100644 components/textfield/package.json create mode 100644 components/textfield/template.js create mode 100644 components/textfield/themes/express.css create mode 100644 components/textfield/themes/spectrum.css create mode 100644 components/thumbnail/index-base.css create mode 100644 components/thumbnail/index-vars.css create mode 100644 components/thumbnail/index.css create mode 100644 components/thumbnail/metadata.json create mode 100644 components/thumbnail/package.json create mode 100644 components/thumbnail/template.js create mode 100644 components/toast/index-base.css create mode 100644 components/toast/index-theme.css create mode 100644 components/toast/index-vars.css create mode 100644 components/toast/index.css create mode 100644 components/toast/metadata.json create mode 100644 components/toast/package.json create mode 100644 components/toast/template.js create mode 100644 components/toast/themes/express.css create mode 100644 components/toast/themes/spectrum.css create mode 100644 components/tokens/index.css create mode 100644 components/tooltip/index-base.css create mode 100644 components/tooltip/index-theme.css create mode 100644 components/tooltip/index-vars.css create mode 100644 components/tooltip/index.css create mode 100644 components/tooltip/metadata.json create mode 100644 components/tooltip/package.json create mode 100644 components/tooltip/template.js create mode 100644 components/tooltip/themes/express.css create mode 100644 components/tooltip/themes/spectrum.css create mode 100644 components/tray/index-base.css create mode 100644 components/tray/index-vars.css create mode 100644 components/tray/index.css create mode 100644 components/tray/metadata.json create mode 100644 components/tray/package.json create mode 100644 components/tray/template.js create mode 100644 components/treeview/index-base.css create mode 100644 components/treeview/index-vars.css create mode 100644 components/treeview/index.css create mode 100644 components/treeview/metadata.json create mode 100644 components/treeview/package.json create mode 100644 components/treeview/template.js create mode 100644 components/typography/index-base.css create mode 100644 components/typography/index-vars.css create mode 100644 components/typography/index.css create mode 100644 components/typography/metadata.json create mode 100644 components/typography/package.json create mode 100644 components/typography/template.js create mode 100644 components/underlay/index-base.css create mode 100644 components/underlay/index-vars.css create mode 100644 components/underlay/index.css create mode 100644 components/underlay/metadata.json create mode 100644 components/underlay/package.json create mode 100644 components/underlay/template.js create mode 100644 components/well/index-base.css create mode 100644 components/well/index-vars.css create mode 100644 components/well/index.css create mode 100644 components/well/metadata.json create mode 100644 components/well/package.json create mode 100644 components/well/template.js create mode 100644 contextualhelp.html create mode 100644 css/docs.css create mode 100644 css/docs.css.map create mode 100644 css/prism/prism-dark.css create mode 100644 css/prism/prism.css create mode 100644 css/site.css create mode 100644 css/site.css.map create mode 100644 cyclebutton.html create mode 100644 datepicker.html create mode 100644 dependencies/@spectrum-css/cyclebutton/index-vars.css create mode 100644 dependencies/@spectrum-css/cyclebutton/package.json create mode 100644 dependencies/@spectrum-css/cyclebutton/vars.css create mode 100644 dependencies/@spectrum-css/quickaction/index-vars.css create mode 100644 dependencies/@spectrum-css/quickaction/mods.json create mode 100644 dependencies/@spectrum-css/quickaction/package.json create mode 100644 dependencies/@spectrum-css/quickaction/vars.css create mode 100644 dependencies/@spectrum-css/searchwithin/index-vars.css create mode 100644 dependencies/@spectrum-css/searchwithin/package.json create mode 100644 dependencies/@spectrum-css/searchwithin/vars.css create mode 100644 dependencies/@spectrum-css/splitbutton/index-vars.css create mode 100644 dependencies/@spectrum-css/splitbutton/package.json create mode 100644 dependencies/@spectrum-css/splitbutton/vars.css create mode 100644 dial.html create mode 100644 dialog.html create mode 100644 divider.html create mode 100644 dropindicator.html create mode 100644 dropzone.html create mode 100644 favicon.png create mode 100644 fieldgroup.html create mode 100644 fieldlabel.html create mode 100644 floatingactionbutton.html create mode 100644 form.html create mode 100644 get-started.html create mode 100644 helptext.html create mode 100644 illustratedmessage.html create mode 100644 img/art_bk.jpg create mode 100644 img/button-screen-shot.png create mode 100644 img/combined/Arrow100.svg create mode 100644 img/combined/Arrow200.svg create mode 100644 img/combined/Arrow300.svg create mode 100644 img/combined/Arrow400.svg create mode 100644 img/combined/Arrow500.svg create mode 100644 img/combined/Arrow600.svg create mode 100644 img/combined/Arrow75.svg create mode 100644 img/combined/Asterisk100.svg create mode 100644 img/combined/Asterisk200.svg create mode 100644 img/combined/Asterisk300.svg create mode 100644 img/combined/Asterisk75.svg create mode 100644 img/combined/Checkmark100.svg create mode 100644 img/combined/Checkmark200.svg create mode 100644 img/combined/Checkmark300.svg create mode 100644 img/combined/Checkmark400.svg create mode 100644 img/combined/Checkmark50.svg create mode 100644 img/combined/Checkmark500.svg create mode 100644 img/combined/Checkmark600.svg create mode 100644 img/combined/Checkmark75.svg create mode 100644 img/combined/Chevron100.svg create mode 100644 img/combined/Chevron200.svg create mode 100644 img/combined/Chevron300.svg create mode 100644 img/combined/Chevron400.svg create mode 100644 img/combined/Chevron50.svg create mode 100644 img/combined/Chevron500.svg create mode 100644 img/combined/Chevron600.svg create mode 100644 img/combined/Chevron75.svg create mode 100644 img/combined/CornerTriangle100.svg create mode 100644 img/combined/CornerTriangle200.svg create mode 100644 img/combined/CornerTriangle300.svg create mode 100644 img/combined/CornerTriangle75.svg create mode 100644 img/combined/Cross100.svg create mode 100644 img/combined/Cross200.svg create mode 100644 img/combined/Cross300.svg create mode 100644 img/combined/Cross400.svg create mode 100644 img/combined/Cross500.svg create mode 100644 img/combined/Cross600.svg create mode 100644 img/combined/Cross75.svg create mode 100644 img/combined/Dash100.svg create mode 100644 img/combined/Dash200.svg create mode 100644 img/combined/Dash300.svg create mode 100644 img/combined/Dash400.svg create mode 100644 img/combined/Dash50.svg create mode 100644 img/combined/Dash500.svg create mode 100644 img/combined/Dash600.svg create mode 100644 img/combined/Dash75.svg create mode 100644 img/combined/DoubleGripper.svg create mode 100644 img/combined/SingleGripper.svg create mode 100644 img/combined/TripleGripper.svg create mode 100644 img/example-ava.jpg create mode 100644 img/example-ava.png create mode 100644 img/example-ava@2x.jpg create mode 100644 img/example-ava@2x.png create mode 100644 img/example-card-landscape.jpeg create mode 100644 img/example-card-landscape.png create mode 100644 img/example-card-portrait.jpg create mode 100644 img/example-card-portrait.png create mode 100644 img/example-card-square.png create mode 100644 img/flowers.png create mode 100644 img/illustration_documentation.svg create mode 100644 img/illustration_flexible.svg create mode 100644 img/illustration_responsive.svg create mode 100644 img/illustration_tested.svg create mode 100644 img/large/Arrow100.svg create mode 100644 img/large/Arrow200.svg create mode 100644 img/large/Arrow300.svg create mode 100644 img/large/Arrow400.svg create mode 100644 img/large/Arrow500.svg create mode 100644 img/large/Arrow600.svg create mode 100644 img/large/Arrow75.svg create mode 100644 img/large/Asterisk100.svg create mode 100644 img/large/Asterisk200.svg create mode 100644 img/large/Asterisk300.svg create mode 100644 img/large/Asterisk75.svg create mode 100644 img/large/Checkmark100.svg create mode 100644 img/large/Checkmark200.svg create mode 100644 img/large/Checkmark300.svg create mode 100644 img/large/Checkmark400.svg create mode 100644 img/large/Checkmark50.svg create mode 100644 img/large/Checkmark500.svg create mode 100644 img/large/Checkmark600.svg create mode 100644 img/large/Checkmark75.svg create mode 100644 img/large/Chevron100.svg create mode 100644 img/large/Chevron200.svg create mode 100644 img/large/Chevron300.svg create mode 100644 img/large/Chevron400.svg create mode 100644 img/large/Chevron50.svg create mode 100644 img/large/Chevron500.svg create mode 100644 img/large/Chevron600.svg create mode 100644 img/large/Chevron75.svg create mode 100644 img/large/CornerTriangle100.svg create mode 100644 img/large/CornerTriangle200.svg create mode 100644 img/large/CornerTriangle300.svg create mode 100644 img/large/CornerTriangle75.svg create mode 100644 img/large/Cross100.svg create mode 100644 img/large/Cross200.svg create mode 100644 img/large/Cross300.svg create mode 100644 img/large/Cross400.svg create mode 100644 img/large/Cross500.svg create mode 100644 img/large/Cross600.svg create mode 100644 img/large/Cross75.svg create mode 100644 img/large/Dash100.svg create mode 100644 img/large/Dash200.svg create mode 100644 img/large/Dash300.svg create mode 100644 img/large/Dash400.svg create mode 100644 img/large/Dash50.svg create mode 100644 img/large/Dash500.svg create mode 100644 img/large/Dash600.svg create mode 100644 img/large/Dash75.svg create mode 100644 img/large/DoubleGripper.svg create mode 100644 img/large/SingleGripper.svg create mode 100644 img/large/TripleGripper.svg create mode 100644 img/medium/Arrow100.svg create mode 100644 img/medium/Arrow200.svg create mode 100644 img/medium/Arrow300.svg create mode 100644 img/medium/Arrow400.svg create mode 100644 img/medium/Arrow500.svg create mode 100644 img/medium/Arrow600.svg create mode 100644 img/medium/Arrow75.svg create mode 100644 img/medium/Asterisk100.svg create mode 100644 img/medium/Asterisk200.svg create mode 100644 img/medium/Asterisk300.svg create mode 100644 img/medium/Asterisk75.svg create mode 100644 img/medium/Checkmark100.svg create mode 100644 img/medium/Checkmark200.svg create mode 100644 img/medium/Checkmark300.svg create mode 100644 img/medium/Checkmark400.svg create mode 100644 img/medium/Checkmark50.svg create mode 100644 img/medium/Checkmark500.svg create mode 100644 img/medium/Checkmark600.svg create mode 100644 img/medium/Checkmark75.svg create mode 100644 img/medium/Chevron100.svg create mode 100644 img/medium/Chevron200.svg create mode 100644 img/medium/Chevron300.svg create mode 100644 img/medium/Chevron400.svg create mode 100644 img/medium/Chevron50.svg create mode 100644 img/medium/Chevron500.svg create mode 100644 img/medium/Chevron600.svg create mode 100644 img/medium/Chevron75.svg create mode 100644 img/medium/CornerTriangle100.svg create mode 100644 img/medium/CornerTriangle200.svg create mode 100644 img/medium/CornerTriangle300.svg create mode 100644 img/medium/CornerTriangle75.svg create mode 100644 img/medium/Cross100.svg create mode 100644 img/medium/Cross200.svg create mode 100644 img/medium/Cross300.svg create mode 100644 img/medium/Cross400.svg create mode 100644 img/medium/Cross500.svg create mode 100644 img/medium/Cross600.svg create mode 100644 img/medium/Cross75.svg create mode 100644 img/medium/Dash100.svg create mode 100644 img/medium/Dash200.svg create mode 100644 img/medium/Dash300.svg create mode 100644 img/medium/Dash400.svg create mode 100644 img/medium/Dash50.svg create mode 100644 img/medium/Dash500.svg create mode 100644 img/medium/Dash600.svg create mode 100644 img/medium/Dash75.svg create mode 100644 img/medium/DoubleGripper.svg create mode 100644 img/medium/SingleGripper.svg create mode 100644 img/medium/TripleGripper.svg create mode 100644 img/spectrum-css-icons-large.svg create mode 100644 img/spectrum-css-icons-medium.svg create mode 100644 img/spectrum-css-icons.svg create mode 100644 img/spectrum-css_illustration_desktop.png create mode 100644 img/spectrum-css_illustration_desktop@2x.png create mode 100644 img/spectrum-icons.svg create mode 100644 img/spectrum_illustration_2x.png create mode 100644 img/spectrum_logo_light.svg create mode 100644 img/tablet-bk create mode 100644 img/thumbnail.png create mode 100644 index.html create mode 100644 index.json create mode 100644 infieldbutton.html create mode 100644 inlinealert.html create mode 100644 js/Search.js create mode 100644 js/SpectrumSwitcher.js create mode 100644 js/adobe-globalnav.js create mode 100644 js/docs.js create mode 100644 js/enhancement.js create mode 100644 js/loadicons/index.js create mode 100644 js/lunr/lunr.js create mode 100644 js/lunr/lunr.min.js create mode 100644 js/site.js create mode 100644 js/typekit.js create mode 100644 link.html create mode 100644 logicbutton.html create mode 100644 menu.html create mode 100644 meter.html create mode 100644 miller.html create mode 100644 modal.html create mode 100644 opacitycheckerboard.html create mode 100644 page.html create mode 100644 pagination-button-style.html create mode 100644 pagination-explicit.html create mode 100644 pagination-listing.html create mode 100644 picker.html create mode 100644 pickerbutton.html create mode 100644 popover.html create mode 100644 preview/assets/Color-PRSJMWNM-DRazqggm.js create mode 100644 preview/assets/DocsRenderer-K4EAMTCU-DmIiI-NG.js create mode 100644 preview/assets/WithTooltip-KJL26V4Q-DBlSOs1Z.js create mode 100644 preview/assets/_commonjsHelpers-BosuxZz1.js create mode 100644 preview/assets/_createCompounder-DY9ZW94_.js create mode 100644 preview/assets/accordion-B1HeCXgH.css create mode 100644 preview/assets/accordion-G0ZHOPZx.js create mode 100644 preview/assets/accordion.stories-Rp5ZIRPk.js create mode 100644 preview/assets/actionbar-B0E0jX70.css create mode 100644 preview/assets/actionbar-BoTRIogp.js create mode 100644 preview/assets/actionbar.stories-OQByPDnU.js create mode 100644 preview/assets/actionbutton.stories-Cv1fxUof.js create mode 100644 preview/assets/actiongroup.stories-Bu-viuWj.js create mode 100644 preview/assets/actionmenu.stories-D6aF7Rcy.js create mode 100644 preview/assets/alertbanner-WTMOLZjx.css create mode 100644 preview/assets/alertbanner.stories-Bx3raaRk.js create mode 100644 preview/assets/alertdialog-Cn1LLL4u.css create mode 100644 preview/assets/alertdialog.stories-Dpf5YaRC.js create mode 100644 preview/assets/asset-CPK_Aj5K.js create mode 100644 preview/assets/asset.stories-JhHAiT6c.js create mode 100644 preview/assets/assetcard-BazjOghQ.js create mode 100644 preview/assets/assetcard-DPuysHZU.css create mode 100644 preview/assets/assetcard.stories-CVABog8W.js create mode 100644 preview/assets/assetlist.stories-DXTFYF_S.js create mode 100644 preview/assets/avatar-BeuTEN8E.js create mode 100644 preview/assets/avatar.stories-DWpOOsNA.js create mode 100644 preview/assets/axe-CCXVyZh5.js create mode 100644 preview/assets/badge-CeD0cqiw.js create mode 100644 preview/assets/badge-DVuCoEQU.css create mode 100644 preview/assets/badge.stories-Bsro9EAp.js create mode 100644 preview/assets/breadcrumb-iJlKeoTn.css create mode 100644 preview/assets/breadcrumb.stories-Sb5NlZEZ.js create mode 100644 preview/assets/button.stories-nGxApkff.js create mode 100644 preview/assets/buttongroup.stories-CMDX25dv.js create mode 100644 preview/assets/calendar-Dhsb6w0Y.js create mode 100644 preview/assets/calendar-q650NNE4.css create mode 100644 preview/assets/calendar.stories-D_Opup45.js create mode 100644 preview/assets/capitalize-D60SaZ2R.js create mode 100644 preview/assets/card-B4AOBLqT.css create mode 100644 preview/assets/card-qeG-xtbY.js create mode 100644 preview/assets/card.stories-BQL2g6T9.js create mode 100644 preview/assets/checkbox.stories-CliIIW-p.js create mode 100644 preview/assets/class-map-hgg4E7s1.js create mode 100644 preview/assets/clearbutton.stories-BZM-De_J.js create mode 100644 preview/assets/closebutton.stories-0an1aDgd.js create mode 100644 preview/assets/coachindicator-CVlqp3cA.css create mode 100644 preview/assets/coachindicator.stories-KHlrmXbx.js create mode 100644 preview/assets/coachmark-CD7BNDnS.js create mode 100644 preview/assets/coachmark-TIN_9PBH.css create mode 100644 preview/assets/coachmark.stories-tl1trvRR.js create mode 100644 preview/assets/code_of_conduct-CYWkzos9.js create mode 100644 preview/assets/colorarea-hsAdeylT.js create mode 100644 preview/assets/colorarea.stories-CbpvrxkJ.js create mode 100644 preview/assets/colorhandle-DB5ED4KR.js create mode 100644 preview/assets/colorhandle.stories-BlpNr4ht.js create mode 100644 preview/assets/colorloupe-CJIIPA2a.js create mode 100644 preview/assets/colorloupe.stories-q2WZlTKS.js create mode 100644 preview/assets/colorslider-B3TNzyJ4.css create mode 100644 preview/assets/colorslider-DCfo75jv.js create mode 100644 preview/assets/colorslider.stories-Dsi13Jiy.js create mode 100644 preview/assets/colorwheel-BfQwOC3o.js create mode 100644 preview/assets/colorwheel-Cu1fWWwI.css create mode 100644 preview/assets/colorwheel.stories-D_ewzq7j.js create mode 100644 preview/assets/combobox-C0I-kD8K.js create mode 100644 preview/assets/combobox-CurWtNnN.css create mode 100644 preview/assets/combobox.stories-D4NqS6mI.js create mode 100644 preview/assets/component-details-AR4Dr-Ts.js create mode 100644 preview/assets/component-details-CTN28dz3.css create mode 100644 preview/assets/contextualhelp-CeTC2dR8.js create mode 100644 preview/assets/contextualhelp-DQBcSdjD.css create mode 100644 preview/assets/contextualhelp.stories-CzAZEQEf.js create mode 100644 preview/assets/cyclebutton-DS5MQVtf.css create mode 100644 preview/assets/cyclebutton.stories-DziACnPA.js create mode 100644 preview/assets/datepicker-BjvLqG0g.css create mode 100644 preview/assets/datepicker-CiAboA1f.js create mode 100644 preview/assets/datepicker.stories-_MEXIBF0.js create mode 100644 preview/assets/decorator-BgHd6ynM.js create mode 100644 preview/assets/decorator-DGtVcIIT.css create mode 100644 preview/assets/deprecation-C0QPDF_p.js create mode 100644 preview/assets/develop-CUlYP8g0.js create mode 100644 preview/assets/dial-D1GUsmxl.css create mode 100644 preview/assets/dial.stories-WR52PGC1.js create mode 100644 preview/assets/dialog.stories-C-pj-knO.js create mode 100644 preview/assets/directive-helpers-AZ3A6LC6.js create mode 100644 preview/assets/divider.stories-C6rJCcBt.js create mode 100644 preview/assets/dropindicator-BYPpmqRh.css create mode 100644 preview/assets/dropindicator.stories-wrha_830.js create mode 100644 preview/assets/dropzone-CV9c7kC0.css create mode 100644 preview/assets/dropzone.stories-BfJfk5pa.js create mode 100644 preview/assets/entry-preview-DnU9Kyfd.js create mode 100644 preview/assets/entry-preview-docs-BF8B7CDv.js create mode 100644 preview/assets/fieldgroup-Ce4g4A3y.css create mode 100644 preview/assets/fieldgroup-pswHh1wn.js create mode 100644 preview/assets/fieldgroup.stories-DSlYFSDB.js create mode 100644 preview/assets/fieldlabel.stories-Bnc6CE6r.js create mode 100644 preview/assets/floatingactionbutton-BQ6842F6.css create mode 100644 preview/assets/floatingactionbutton.stories-9HUBmIeq.js create mode 100644 preview/assets/form.stories-YYIq5uly.js create mode 100644 preview/assets/formatter-2WMMO6ZP-BWqzsTxk.js create mode 100644 preview/assets/helptext.stories-BNnf1YN6.js create mode 100644 preview/assets/icon-CvR26O1i.js create mode 100644 preview/assets/icon.stories-Bo78Wakl.js create mode 100644 preview/assets/if-defined-Bu2tv67N.js create mode 100644 preview/assets/iframe-HOC10Tsl.js create mode 100644 preview/assets/illustratedmessage-Ve4vfRlb.css create mode 100644 preview/assets/illustratedmessage.stories-CiB_ygKH.js create mode 100644 preview/assets/index-BCEELo55.js create mode 100644 preview/assets/index-BM7n-yQ0.js create mode 100644 preview/assets/index-BkCjH-3M.js create mode 100644 preview/assets/index-Bra5jxz-.js create mode 100644 preview/assets/index-DMJx5Vcm.js create mode 100644 preview/assets/index-DrFu-skq.js create mode 100644 preview/assets/infieldbutton.stories-fcZf61XN.js create mode 100644 preview/assets/inlinealert-B5FuNWHV.css create mode 100644 preview/assets/inlinealert.stories-BmAQ7kM7.js create mode 100644 preview/assets/jsx-runtime-Dt6rJ0KA.js create mode 100644 preview/assets/link.stories-BfWbM5KU.js create mode 100644 preview/assets/lit-element-D6xKo6I1.js create mode 100644 preview/assets/lit-html-CSEOSYGt.js create mode 100644 preview/assets/logicbutton-CJFUqif6.css create mode 100644 preview/assets/logicbutton.stories-BYOAmdgN.js create mode 100644 preview/assets/lowerCase-CIorQk0G.js create mode 100644 preview/assets/menu.stories-BXJIuiuy.js create mode 100644 preview/assets/meter.stories-CyJ8bSzA.js create mode 100644 preview/assets/miller-DHWNQvxk.css create mode 100644 preview/assets/miller.stories-CzTNVNGl.js create mode 100644 preview/assets/modal.stories-DaqaJdK8.js create mode 100644 preview/assets/opacitycheckerboard.stories-Ca4UOefP.js create mode 100644 preview/assets/package-zFcCOiDa.js create mode 100644 preview/assets/pagination-O_H2yK3d.css create mode 100644 preview/assets/pagination.stories-D4RYw-Je.js create mode 100644 preview/assets/picker.stories-bnh2hs9z.js create mode 100644 preview/assets/pickerbutton.stories-D0FxMjKb.js create mode 100644 preview/assets/popover.stories-BLFIcmnt.js create mode 100644 preview/assets/preview-B2MyBRTS.css create mode 100644 preview/assets/preview-BAz7FMXc.js create mode 100644 preview/assets/preview-BNKhtCRJ.js create mode 100644 preview/assets/preview-BpcF_O6y.js create mode 100644 preview/assets/preview-C7tAAfkq.js create mode 100644 preview/assets/preview-CJTK1H4D.js create mode 100644 preview/assets/preview-DcnFBrgy.js create mode 100644 preview/assets/preview-Df8P57N3.js create mode 100644 preview/assets/preview-YA68kqbQ.js create mode 100644 preview/assets/preview-_wVaxMW2.js create mode 100644 preview/assets/progressbar-e9OxbAN7.css create mode 100644 preview/assets/progressbar.stories-BB9OHBos.js create mode 100644 preview/assets/progresscircle.stories-BZikSZfF.js create mode 100644 preview/assets/quickaction-idt5u3W6.css create mode 100644 preview/assets/quickaction.stories-CtYIOWrG.js create mode 100644 preview/assets/radio-C6PL7XE6.css create mode 100644 preview/assets/radio.stories-C9uCeRRi.js create mode 100644 preview/assets/rating-kINvSojX.css create mode 100644 preview/assets/rating.stories-BDHtn1tc.js create mode 100644 preview/assets/releasing-BTNnlGA1.js create mode 100644 preview/assets/repeat-wef4bzRs.js create mode 100644 preview/assets/search-DMU9RyrK.css create mode 100644 preview/assets/search.stories-CSpfwZXl.js create mode 100644 preview/assets/searchwithin-DKjamp1y.css create mode 100644 preview/assets/searchwithin.stories-DwiZEDln.js create mode 100644 preview/assets/sidenav-Ccww7DWX.css create mode 100644 preview/assets/sidenav.stories-8DwIGABo.js create mode 100644 preview/assets/slider-BHD7NctA.css create mode 100644 preview/assets/slider.stories-BGj6E5l3.js create mode 100644 preview/assets/spectrum_illustration_2x-mPTswyN0.png create mode 100644 preview/assets/splitbutton-B5SCf8fx.css create mode 100644 preview/assets/splitbutton.stories-DPgdHqCD.js create mode 100644 preview/assets/splitview-CpVleFYD.css create mode 100644 preview/assets/splitview.stories-BKBXDMYw.js create mode 100644 preview/assets/states-DzrSzBKQ.js create mode 100644 preview/assets/statuslight-DbxcZPpB.css create mode 100644 preview/assets/statuslight.stories-DkAspoIm.js create mode 100644 preview/assets/steplist-r46FzB8P.css create mode 100644 preview/assets/steplist.stories-PHtep4T3.js create mode 100644 preview/assets/stepper.stories-Bq13FIgH.js create mode 100644 preview/assets/style-map-WzOQOdw5.js create mode 100644 preview/assets/swatch-ChLfuzwO.css create mode 100644 preview/assets/swatch.stories-BxktTg-g.js create mode 100644 preview/assets/swatchgroup-DrwaYQS5.css create mode 100644 preview/assets/swatchgroup.stories-BZIiOy08.js create mode 100644 preview/assets/switch.stories-BAF7mcnK.js create mode 100644 preview/assets/syntaxhighlighter-BP7B2CQK-CoOm1wcX.js create mode 100644 preview/assets/table-Bd5yESb7.css create mode 100644 preview/assets/table.stories-BarbTiBu.js create mode 100644 preview/assets/tabs-IhPSJOBj.css create mode 100644 preview/assets/tabs.stories-CxOYvhiF.js create mode 100644 preview/assets/tag-DTFLn_Gp.css create mode 100644 preview/assets/tag.stories-BGVB_gmj.js create mode 100644 preview/assets/taggroup-DUw-qmGU.css create mode 100644 preview/assets/taggroup.stories-ClaGgbtk.js create mode 100644 preview/assets/template-4IgiSyjU.js create mode 100644 preview/assets/template-5EiEQEJR.js create mode 100644 preview/assets/template-A-eCpoJU.css create mode 100644 preview/assets/template-B1916WdB.js create mode 100644 preview/assets/template-B1JKfpgM.css create mode 100644 preview/assets/template-B4tDcEv7.css create mode 100644 preview/assets/template-BAYcuRpk.css create mode 100644 preview/assets/template-BCTcm72_.js create mode 100644 preview/assets/template-BGUoQQFE.js create mode 100644 preview/assets/template-BHo8nrqo.js create mode 100644 preview/assets/template-BO6HeMmf.css create mode 100644 preview/assets/template-BOuuuviw.js create mode 100644 preview/assets/template-BXx-OSNV.js create mode 100644 preview/assets/template-Ba8uUcrn.js create mode 100644 preview/assets/template-Ba9BuEEP.css create mode 100644 preview/assets/template-Be1lnbHm.css create mode 100644 preview/assets/template-BfHrSzRt.css create mode 100644 preview/assets/template-BiCzTKMw.css create mode 100644 preview/assets/template-BiaGdgHf.css create mode 100644 preview/assets/template-BjLmTyxc.js create mode 100644 preview/assets/template-C3MtDh7C.js create mode 100644 preview/assets/template-C3nfGs8B.css create mode 100644 preview/assets/template-CEQWKLxE.css create mode 100644 preview/assets/template-CJ4Fnp25.js create mode 100644 preview/assets/template-CKCGXckf.css create mode 100644 preview/assets/template-COskcie3.js create mode 100644 preview/assets/template-CPGM6lN2.js create mode 100644 preview/assets/template-CRtzpfEN.css create mode 100644 preview/assets/template-CWvoW2jG.css create mode 100644 preview/assets/template-C_jYuYr1.js create mode 100644 preview/assets/template-CcRtxD4p.js create mode 100644 preview/assets/template-ChjtpR6H.js create mode 100644 preview/assets/template-CjCFM0Rd.css create mode 100644 preview/assets/template-D6tpc01T.css create mode 100644 preview/assets/template-DE41joej.js create mode 100644 preview/assets/template-DGp5AGvX.css create mode 100644 preview/assets/template-DIlrrHbQ.js create mode 100644 preview/assets/template-DKtqUm5i.css create mode 100644 preview/assets/template-DL6cGV6K.css create mode 100644 preview/assets/template-DLCUREbS.css create mode 100644 preview/assets/template-DLgxBgik.css create mode 100644 preview/assets/template-DSnc_Sn3.js create mode 100644 preview/assets/template-DVnOcH8Q.js create mode 100644 preview/assets/template-DWHQE7dh.js create mode 100644 preview/assets/template-DWaXl-vi.css create mode 100644 preview/assets/template-DYoQ0W9m.js create mode 100644 preview/assets/template-DfXovDkQ.css create mode 100644 preview/assets/template-Dik_OYpW.js create mode 100644 preview/assets/template-Dl1l5zgR.css create mode 100644 preview/assets/template-DnGnQeD6.css create mode 100644 preview/assets/template-Dnh7D1cf.css create mode 100644 preview/assets/template-Dnsg1ayi.css create mode 100644 preview/assets/template-DoBL1Y2O.css create mode 100644 preview/assets/template-DoU600Wz.css create mode 100644 preview/assets/template-DtEFGDu6.js create mode 100644 preview/assets/template-Dx6uDptV.js create mode 100644 preview/assets/template-DxUR4R7i.js create mode 100644 preview/assets/template-KOM5R0ws.js create mode 100644 preview/assets/template-NGxmJUij.js create mode 100644 preview/assets/template-Ognew2En.js create mode 100644 preview/assets/template-TtTUqDuW.js create mode 100644 preview/assets/template-Z2vtje-g.js create mode 100644 preview/assets/template-_iWHAA2V.css create mode 100644 preview/assets/template-e90zWCnj.css create mode 100644 preview/assets/template-e9m7ghmM.js create mode 100644 preview/assets/template-oJE7WiZI.js create mode 100644 preview/assets/template-vtPsAD2T.css create mode 100644 preview/assets/template-wvnt2Vdc.js create mode 100644 preview/assets/textfield.stories-CqGqrWgk.js create mode 100644 preview/assets/thumbnail.stories-DSe3L1nK.js create mode 100644 preview/assets/tiny-invariant-BxWVcicq.js create mode 100644 preview/assets/toast-B9ddJBLj.css create mode 100644 preview/assets/toast.stories-BtexuFzP.js create mode 100644 preview/assets/tooltip.stories-rI3lknAv.js create mode 100644 preview/assets/tray.stories-BRdxwHI3.js create mode 100644 preview/assets/treeview-DFAuwCfE.css create mode 100644 preview/assets/treeview.stories-D98-R37c.js create mode 100644 preview/assets/typography.stories-BilxtVkG.js create mode 100644 preview/assets/underlay.stories-Opdwzu3p.js create mode 100644 preview/assets/upperCase-0eNr0WW7.js create mode 100644 preview/assets/utilities-BLLjuW2y.js create mode 100644 preview/assets/utilities-CvTZEnJS.css create mode 100644 preview/assets/v4-CQkTLCs1.js create mode 100644 preview/assets/well-CGTdseE2.css create mode 100644 preview/assets/well.stories-BlnoqJly.js create mode 100644 preview/assets/when-BR7zwNJC.js create mode 100644 preview/example-ava.png create mode 100644 preview/example-ava@2x.png create mode 100644 preview/example-card-landscape.png create mode 100644 preview/example-card-portrait.png create mode 100644 preview/example-card-square.png create mode 100644 preview/favicon.svg create mode 100644 preview/flowers.png create mode 100644 preview/iframe.html create mode 100644 preview/index.html create mode 100644 preview/index.json create mode 100644 preview/project.json create mode 100644 preview/sb-addons/-12/manager-bundle.css create mode 100644 preview/sb-addons/-12/manager-bundle.css.LEGAL.txt create mode 100644 preview/sb-addons/-12/manager-bundle.js create mode 100644 preview/sb-addons/-12/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/a11y-6/manager-bundle.js create mode 100644 preview/sb-addons/a11y-6/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/chromaui-addon-visual-tests-10/manager-bundle.js create mode 100644 preview/sb-addons/chromaui-addon-visual-tests-10/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/designs-11/register-panel-bundle.js create mode 100644 preview/sb-addons/designs-11/register-panel-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/essentials-actions-2/manager-bundle.js create mode 100644 preview/sb-addons/essentials-actions-2/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/essentials-controls-1/manager-bundle.js create mode 100644 preview/sb-addons/essentials-controls-1/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/essentials-measure-4/manager-bundle.js create mode 100644 preview/sb-addons/essentials-measure-4/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/essentials-outline-5/manager-bundle.js create mode 100644 preview/sb-addons/essentials-outline-5/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/essentials-toolbars-3/manager-bundle.js create mode 100644 preview/sb-addons/essentials-toolbars-3/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/etchteam-status-8/manager-bundle.js create mode 100644 preview/sb-addons/etchteam-status-8/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/interactions-9/manager-bundle.js create mode 100644 preview/sb-addons/interactions-9/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js create mode 100644 preview/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-addons/whitespace-html-7/manager-bundle.js create mode 100644 preview/sb-addons/whitespace-html-7/manager-bundle.js.LEGAL.txt create mode 100644 preview/sb-common-assets/fonts.css create mode 100644 preview/sb-common-assets/nunito-sans-bold-italic.woff2 create mode 100644 preview/sb-common-assets/nunito-sans-bold.woff2 create mode 100644 preview/sb-common-assets/nunito-sans-italic.woff2 create mode 100644 preview/sb-common-assets/nunito-sans-regular.woff2 create mode 100644 preview/sb-manager/WithTooltip-KJL26V4Q-5LS5AN27.js create mode 100644 preview/sb-manager/chunk-4FMBEAHW.js create mode 100644 preview/sb-manager/chunk-6GQRNYH2.js create mode 100644 preview/sb-manager/chunk-B3YDJJJH.js create mode 100644 preview/sb-manager/chunk-BLWCBWKL.js create mode 100644 preview/sb-manager/chunk-GUVK2GTO.js create mode 100644 preview/sb-manager/chunk-ZR5JZWHI.js create mode 100644 preview/sb-manager/formatter-2WMMO6ZP-JI7RHVTW.js create mode 100644 preview/sb-manager/globals-module-info.js create mode 100644 preview/sb-manager/globals-runtime.js create mode 100644 preview/sb-manager/globals.js create mode 100644 preview/sb-manager/index.js create mode 100644 preview/sb-manager/runtime.js create mode 100644 preview/sb-manager/syntaxhighlighter-BP7B2CQK-WOJYHKQR.js create mode 100644 preview/sb-preview/globals.js create mode 100644 preview/sb-preview/runtime.js create mode 100644 preview/spectrum-css_illustration_desktop.png create mode 100644 preview/spectrum_illustration_2x.png create mode 100644 preview/thumbnail.png create mode 100644 progressbar.html create mode 100644 progresscircle.html create mode 100644 quickaction.html create mode 100644 radio.html create mode 100644 rating.html create mode 100644 search.html create mode 100644 searchwithin.html create mode 100644 sidenav.html create mode 100644 slider.html create mode 100644 splitbutton.html create mode 100644 splitview.html create mode 100644 statuslight.html create mode 100644 steplist.html create mode 100644 stepper.html create mode 100644 store.json create mode 100644 swatch.html create mode 100644 swatchgroup.html create mode 100644 switch.html create mode 100644 table.html create mode 100644 tabs.html create mode 100644 tag.html create mode 100644 taggroup.html create mode 100644 textarea.html create mode 100644 textfield.html create mode 100644 thumbnail.html create mode 100644 toast.html create mode 100644 tokens/css/components/bridge/actionbutton.css create mode 100644 tokens/css/components/bridge/actiongroup.css create mode 100644 tokens/css/components/bridge/alertbanner.css create mode 100644 tokens/css/components/bridge/assetcard.css create mode 100644 tokens/css/components/bridge/button.css create mode 100644 tokens/css/components/bridge/checkbox.css create mode 100644 tokens/css/components/bridge/clearbutton.css create mode 100644 tokens/css/components/bridge/closebutton.css create mode 100644 tokens/css/components/bridge/combobox.css create mode 100644 tokens/css/components/bridge/datepicker.css create mode 100644 tokens/css/components/bridge/index.css create mode 100644 tokens/css/components/bridge/infieldbutton.css create mode 100644 tokens/css/components/bridge/picker.css create mode 100644 tokens/css/components/bridge/pickerbutton.css create mode 100644 tokens/css/components/bridge/popover.css create mode 100644 tokens/css/components/bridge/radio.css create mode 100644 tokens/css/components/bridge/rating.css create mode 100644 tokens/css/components/bridge/search.css create mode 100644 tokens/css/components/bridge/slider.css create mode 100644 tokens/css/components/bridge/stepper.css create mode 100644 tokens/css/components/bridge/switch.css create mode 100644 tokens/css/components/bridge/tabs.css create mode 100644 tokens/css/components/bridge/tag.css create mode 100644 tokens/css/components/bridge/textfield.css create mode 100644 tokens/css/components/bridge/toast.css create mode 100644 tokens/css/components/bridge/tooltip.css create mode 100644 tokens/css/components/express/actionbutton.css create mode 100644 tokens/css/components/express/actiongroup.css create mode 100644 tokens/css/components/express/alertbanner.css create mode 100644 tokens/css/components/express/assetcard.css create mode 100644 tokens/css/components/express/button.css create mode 100644 tokens/css/components/express/checkbox.css create mode 100644 tokens/css/components/express/clearbutton.css create mode 100644 tokens/css/components/express/closebutton.css create mode 100644 tokens/css/components/express/combobox.css create mode 100644 tokens/css/components/express/datepicker.css create mode 100644 tokens/css/components/express/index.css create mode 100644 tokens/css/components/express/infieldbutton.css create mode 100644 tokens/css/components/express/picker.css create mode 100644 tokens/css/components/express/pickerbutton.css create mode 100644 tokens/css/components/express/popover.css create mode 100644 tokens/css/components/express/radio.css create mode 100644 tokens/css/components/express/rating.css create mode 100644 tokens/css/components/express/search.css create mode 100644 tokens/css/components/express/slider.css create mode 100644 tokens/css/components/express/stepper.css create mode 100644 tokens/css/components/express/switch.css create mode 100644 tokens/css/components/express/tabs.css create mode 100644 tokens/css/components/express/tag.css create mode 100644 tokens/css/components/express/textfield.css create mode 100644 tokens/css/components/express/toast.css create mode 100644 tokens/css/components/express/tooltip.css create mode 100644 tokens/css/components/spectrum/actionbutton.css create mode 100644 tokens/css/components/spectrum/actiongroup.css create mode 100644 tokens/css/components/spectrum/alertbanner.css create mode 100644 tokens/css/components/spectrum/assetcard.css create mode 100644 tokens/css/components/spectrum/button.css create mode 100644 tokens/css/components/spectrum/checkbox.css create mode 100644 tokens/css/components/spectrum/clearbutton.css create mode 100644 tokens/css/components/spectrum/closebutton.css create mode 100644 tokens/css/components/spectrum/combobox.css create mode 100644 tokens/css/components/spectrum/datepicker.css create mode 100644 tokens/css/components/spectrum/index.css create mode 100644 tokens/css/components/spectrum/infieldbutton.css create mode 100644 tokens/css/components/spectrum/picker.css create mode 100644 tokens/css/components/spectrum/pickerbutton.css create mode 100644 tokens/css/components/spectrum/popover.css create mode 100644 tokens/css/components/spectrum/radio.css create mode 100644 tokens/css/components/spectrum/rating.css create mode 100644 tokens/css/components/spectrum/search.css create mode 100644 tokens/css/components/spectrum/slider.css create mode 100644 tokens/css/components/spectrum/stepper.css create mode 100644 tokens/css/components/spectrum/switch.css create mode 100644 tokens/css/components/spectrum/tabs.css create mode 100644 tokens/css/components/spectrum/tag.css create mode 100644 tokens/css/components/spectrum/textfield.css create mode 100644 tokens/css/components/spectrum/toast.css create mode 100644 tokens/css/components/spectrum/tooltip.css create mode 100644 tokens/css/dark-vars.css create mode 100644 tokens/css/darkest-vars.css create mode 100644 tokens/css/express/custom-large-vars.css create mode 100644 tokens/css/express/custom-medium-vars.css create mode 100644 tokens/css/express/custom-vars.css create mode 100644 tokens/css/express/dark-vars.css create mode 100644 tokens/css/express/darkest-vars.css create mode 100644 tokens/css/express/global-vars.css create mode 100644 tokens/css/express/large-vars.css create mode 100644 tokens/css/express/light-vars.css create mode 100644 tokens/css/express/medium-vars.css create mode 100644 tokens/css/global-vars.css create mode 100644 tokens/css/large-vars.css create mode 100644 tokens/css/light-vars.css create mode 100644 tokens/css/medium-vars.css create mode 100644 tokens/css/spectrum/custom-large-vars.css create mode 100644 tokens/css/spectrum/custom-medium-vars.css create mode 100644 tokens/css/spectrum/custom-vars.css create mode 100644 tokens/css/spectrum/dark-vars.css create mode 100644 tokens/css/spectrum/darkest-vars.css create mode 100644 tokens/css/spectrum/global-vars.css create mode 100644 tokens/css/spectrum/large-vars.css create mode 100644 tokens/css/spectrum/light-vars.css create mode 100644 tokens/css/spectrum/medium-vars.css create mode 100644 tokens/index.css create mode 100644 tooltip.html create mode 100644 tray.html create mode 100644 treeview.html create mode 100644 typography-body.html create mode 100644 typography-code.html create mode 100644 typography-detail.html create mode 100644 typography-heading.html create mode 100644 typography-international.html create mode 100644 typography.html create mode 100644 well.html diff --git a/accordion.html b/accordion.html new file mode 100644 index 0000000000..e4c8b3ba8b --- /dev/null +++ b/accordion.html @@ -0,0 +1,1256 @@ +Accordion - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Accordion

Component status
Contribution
Current version@spectrum-css/accordion@5.2.0
ReleasedJune 27, 2024
S2-foundations@spectrum-css/accordion@6.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


While remaining backward compatible, the recommended markup has been updated to implement the WAI-ARIA 1.1 Accordion design pattern to better support accessibility for keyboard and screen reader users.

+

Variants


Compact - S
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--compact spectrum-Accordion--sizeS" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Compact - M
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--compact spectrum-Accordion--sizeM" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Compact - L
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--compact spectrum-Accordion--sizeL" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Compact - XL
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--compact spectrum-Accordion--sizeXL" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Regular - S
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--sizeS" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Regular - M
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--sizeM" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Regular - L
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--sizeL" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Regular - XL
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--sizeXL" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Spacious - S
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--spacious spectrum-Accordion--sizeS" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight75 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron75" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Spacious - M
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--spacious spectrum-Accordion--sizeM" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Spacious - L
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--spacious spectrum-Accordion--sizeL" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight200 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron200" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Spacious - XL
Contribution

+
+ + + + +
+
Show markup
<!-- WAI-ARIA 1.1: Accordion container role changed from "tablist" to "region" -->
+<div class="spectrum-Accordion spectrum-Accordion--spacious spectrum-Accordion--sizeXL" role="region">
+  <div class="spectrum-Accordion-item is-open" role="presentation">
+
+    <!-- WAI-ARIA 1.1: Item header is a <button> wrapped within a <h3> element, rather than a <div> element with role="tab" -->
+    <h3 class="spectrum-Accordion-itemHeading">
+      <!-- WAI-ARIA 1.1: Item header <button> uses aria-expanded attribute to indicate expanded state. -->
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-0-header" aria-controls="spectrum-accordion-item-0-content" aria-expanded="true">Recent</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+
+    <!-- WAI-ARIA 1.1: Item content role changed from "tabpanel" to "region" -->
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-0-content" aria-labelledby="spectrum-accordion-item-0-header">Item 1</div>
+  </div>
+  <div class="spectrum-Accordion-item is-disabled" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" disabled id="spectrum-accordion-item-1-header" aria-controls="spectrum-accordion-item-1-content" aria-expanded="false">Architecture</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-1-content" aria-labelledby="spectrum-accordion-item-1-header">Item 2</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-2-header" aria-controls="spectrum-accordion-item-2-content" aria-expanded="false">Nature</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-2-content" aria-labelledby="spectrum-accordion-item-2-header">Item 3</div>
+  </div>
+  <div class="spectrum-Accordion-item" role="presentation">
+    <h3 class="spectrum-Accordion-itemHeading">
+      <button class="spectrum-Accordion-itemHeader" type="button" id="spectrum-accordion-item-3-header" aria-controls="spectrum-accordion-item-3-content" aria-expanded="false">Really Long Accordion Item According to Our Predictions</button>
+      <span class="spectrum-Accordion-itemIconContainer">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight300 spectrum-Accordion-itemIndicator" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron300" />
+        </svg>
+      </span>
+    </h3>
+    <div class="spectrum-Accordion-itemContent" role="region" id="spectrum-accordion-item-3-content" aria-labelledby="spectrum-accordion-item-3-header">Item 4</div>
+  </div>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


T-shirt sizing

+

Accordion now supports t-shirt sizing and requires that you specify the size by adding a .spectrum-Accordion--size* class.

+

Density

+

Accordion now supports density and requires that you specify one of the density type compact regular spacious.

+

\ No newline at end of file diff --git a/actionbar.html b/actionbar.html new file mode 100644 index 0000000000..8fc20bb80d --- /dev/null +++ b/actionbar.html @@ -0,0 +1,513 @@ +Action bar - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Action bar

Component status
Contribution
Current version@spectrum-css/actionbar@8.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/actionbar@9.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


Floating Action bar that appears in selection mode.

+

Variants


Standard
Contribution

Standard Action bars fill the width of their container.

+
+
+ + + + +
+ + + +
+
+
+ +
+
+ + + + +
+ + + +
+
+
+ +
+
+ + + + +
+ + + +
+
+
+
Show markup
<div class="spectrum-ActionBar is-open">
+  <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM" aria-label="Clear selection">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </button>
+
+    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">2 Selected</label>
+
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+</div>
+
+<div class="spectrum-ActionBar is-open">
+  <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM" aria-label="Clear selection">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </button>
+
+    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">2 Selected</label>
+
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Edit" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit"></use>
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Copy" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Copy"></use>
+        </svg>
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Delete" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Delete"></use>
+        </svg>
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+</div>
+
+<div class="spectrum-ActionBar is-open">
+  <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM" aria-label="Clear selection">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </button>
+
+    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">2 Selected</label>
+
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit"></use>
+        </svg>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Copy">
+          <use xlink:href="#spectrum-icon-18-Copy"></use>
+        </svg>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Delete">
+          <use xlink:href="#spectrum-icon-18-Delete"></use>
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Emphasized
Contribution

Emphasized Action bar.

+
+
+ + + + +
+ + + +
+
+
+ + +
+
+ + + + +
+ + + +
+
+
+ + +
+
+ + + + +
+ + + +
+
+
+
Show markup
<div class="spectrum-ActionBar spectrum-ActionBar--emphasized is-open">
+  <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="Clear selection">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </button>
+
+    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">2 Selected</label>
+
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+</div>
+
+
+<div class="spectrum-ActionBar spectrum-ActionBar--emphasized is-open">
+  <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="Clear selection">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </button>
+
+    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">2 Selected</label>
+
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Edit" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit"></use>
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Copy" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Copy"></use>
+        </svg>
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Delete" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Delete"></use>
+        </svg>
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+</div>
+
+
+<div class="spectrum-ActionBar spectrum-ActionBar--emphasized is-open">
+  <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="Clear selection">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </button>
+
+    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">2 Selected</label>
+
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit"></use>
+        </svg>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Copy">
+          <use xlink:href="#spectrum-icon-18-Copy"></use>
+        </svg>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionButton--staticWhite spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Delete">
+          <use xlink:href="#spectrum-icon-18-Delete"></use>
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Flexible
Contribution

Flexible Action bars fit the width of their content.

+
+
+ + + + +
+ + +
+
+
+
Show markup
<div class="spectrum-ActionBar spectrum-ActionBar--flexible is-open">
+  <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM" aria-label="Clear selection">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </button>
+
+    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">2 Selected</label>
+
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit"></use>
+        </svg>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="More">
+          <use xlink:href="#spectrum-icon-18-More"></use>
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Sticky
Contribution

This example shows how the sticky Action bar looks within a scrollable element. Please see usage section of the guidelines for more information about using Action bar with underlying content.

+
+

Scroll down to view sticky behavior

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in + reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt + in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. +

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in + reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +

+
+
+ + + + +
+ + + +
+
+
+
+
Show markup
<section style="position: relative; max-height: 8em; overflow: auto;">
+  <h4>Scroll down to view sticky behavior</h4>
+  <p>
+      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
+      ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
+      reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
+      in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+      tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+      aliquip ex ea commodo consequat.
+  </p>
+  <p>
+      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
+      ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
+      reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+  </p>
+  <div class="spectrum-ActionBar spectrum-ActionBar--sticky is-open">
+    <div class="spectrum-Popover spectrum-ActionBar-popover is-open">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeM" aria-label="Clear selection">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross100" />
+        </svg>
+      </button>
+
+      <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeS">3 Selected</label>
+
+      <div class="spectrum-ActionGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Edit" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-Edit"></use>
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Copy" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-Copy"></use>
+          </svg>
+          <span class="spectrum-ActionButton-label">Copy</span>
+        </button>
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-label="Delete" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-Delete"></use>
+          </svg>
+          <span class="spectrum-ActionButton-label">Delete</span>
+        </button>
+      </div>
+    </div>
+  </div>
+</section>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Popover Dependency

+

Action bar requires Popover, which is nested within Action bar. Action bar background, border, and corner radius are applied to the nested Popover component and can be overriden by Action bar.

+

Action bar close button

+

Checkbox has been replaced by Close button.

+

Item counter

+

Item counter has replaced the checkbox field label. Item counter is a Field Label component.

+

New Action button markup

+

Action button requires .spectrum-ActionButton-icon class on icons nested inside of Action button.

+

Emphasized Action bar requires .spectrum-ActionButton-staticWhite class on Action button.

+

New ActionGroup markup

+

Action bar now uses the new ActionGroup markup. Replace .spectrum-ButtonGroup with .spectrum-ActionGroup and apply .spectrum-ActionGroup-item to each action button. See the Action Group for more information.

+

Change workflow icon size to medium

+

If you use icon action button in your markup, please replace .spectrum-Icon--sizeS with .spectrum-Icon--sizeM.

+

\ No newline at end of file diff --git a/actionbutton.html b/actionbutton.html new file mode 100644 index 0000000000..756d65f221 --- /dev/null +++ b/actionbutton.html @@ -0,0 +1,2434 @@ +Action button - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Action button

Component status
Contribution
Current version@spectrum-css/actionbutton@6.1.1
ReleasedMay 22, 2024
Alpha@spectrum-css/actionbutton@7.0.0-alpha.1
ReleasedMay 10, 2024
S2-foundations@spectrum-css/actionbutton@7.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • For Action Buttons that only contain an icon with no label, do not include the element with the .spectrum-ActionButton-label class in the markup
  • +
  • If an icon and a label are both used, ensure that the element with the .spectrum-ActionButton-label class comes after the .spectrum-Icon element.
  • +
  • If the hold icon is used, ensure that the element with the .spectrum-ActionButton-hold class comes before the .spectrum-Icon element.
  • +
  • When using .spectrum-ActionButton--staticWhite or .spectrum-ActionButton--staticblack, use the --mod-actionbutton-content-color-default custom property to set the text color when selected.
  • +
+

Variants


Sizing
Contribution

+
+

XS

+ +
+ + + + + + + +
+
+
+

S

+ +
+ + + + + + + +
+
+
+

M (default)

+ +
+ + + + + + + +
+
+ +
+

L

+ +
+ + + + + + + +
+
+ +
+

XL

+ +
+ + + + + + + +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XS</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXS spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXS spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle75 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle75" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeXS spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle75 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle75" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle200 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle200" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle300 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle300" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Standard
Contribution

+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Quiet
Contribution

The Quiet Action Button should be used where you previously used the deprecated Tool component.

+
+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Emphasized
Contribution

+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Emphasized (quiet)
Contribution

+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected">
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected" disabled>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--emphasized spectrum-ActionButton--quiet is-selected" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Static White
Contribution

+
+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
+
Show markup
<div style="--spectrum-alias-background-color-default: rgb(15, 121, 125); --spectrum-alias-heading-text-color: white; background-color: var(--spectrum-alias-background-color-default); color: var(--spectrum-alias-heading-text-color); padding: 15px 20px; border-radius: var(--spectrum-cssexample-border-radius);">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item" style="--mod-actionbutton-content-color-default: var(--spectrum-alias-background-color-default);">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Static Black
Contribution

+
+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
+
Show markup
<div style="--spectrum-alias-background-color-default: rgb(181, 209, 211); background-color: var(--spectrum-alias-background-color-default); padding: 15px 20px; border-radius: var(--spectrum-cssexample-border-radius);">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item" style="--mod-actionbutton-content-color-default: var(--spectrum-alias-background-color-default);">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Static White (quiet)
Contribution

+
+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
+
Show markup
<div style="--spectrum-alias-background-color-default: rgb(15, 121, 125); --spectrum-alias-heading-text-color: white; background-color: var(--spectrum-alias-background-color-default); color: var(--spectrum-alias-heading-text-color); padding: 15px 20px; border-radius: var(--spectrum-cssexample-border-radius);">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item" style="--mod-actionbutton-content-color-default: var(--spectrum-alias-background-color-default)">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticWhite spectrum-ActionButton--quiet is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Static Black (quiet)
Contribution

+
+
+

Default

+ +
+ + + + + + + +
+
+
+

Selected

+ +
+ + + + + + + +
+
+
+

Disabled

+ +
+ + + + + + + +
+
+
+

Selected + Disabled

+ +
+ + + + + + + +
+
+
+
+
Show markup
<div style="--spectrum-alias-background-color-default: rgb(181, 209, 211); background-color: var(--spectrum-alias-background-color-default); padding: 15px 20px; border-radius: var(--spectrum-cssexample-border-radius);">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item" style="--mod-actionbutton-content-color-default: var(--spectrum-alias-background-color-default)">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected">
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected">
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Selected + Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected" disabled>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+          <span class="spectrum-ActionButton-label">Edit</span>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+
+        <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--staticBlack spectrum-ActionButton--quiet is-selected" disabled>
+          <svg class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+            <use xlink:href="#spectrum-icon-18-Edit" />
+          </svg>
+        </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Action Button now requires a class on its icon

+

The .spectrum-ActionButton-icon class is now required on the icon.

+

T-shirt sizing

+

Action Button now supports t-shirt sizing and requires that you specify the size by adding a .spectrum-ActionButton--size* class.

+

Action Button is now a separate component

+

Action Button has been moved to the Action Button component.

+

Change workflow icon size

+

Previously, all Action Buttons used .spectrum-Icon--sizeS. This has changed:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Action button classnameWorkflow icon classname
.spectrum-ActionButton--sizeXS.spectrum-Icon--sizeXS
.spectrum-ActionButton--sizeS.spectrum-Icon--sizeS
.spectrum-ActionButton--sizeM.spectrum-Icon--sizeM
.spectrum-ActionButton--sizeL.spectrum-Icon--sizeL
.spectrum-ActionButton--sizeXL.spectrum-Icon--sizeXL
+

Change hold icon classnames

+

Hold icon classnames must be set as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Action button classnameHold icon classname
.spectrum-ActionButton--sizeXS.spectrum-UIIcon-CornerTriangle50
.spectrum-ActionButton--sizeS.spectrum-UIIcon-CornerTriangle75
.spectrum-ActionButton--sizeM.spectrum-UIIcon-CornerTriangle100
.spectrum-ActionButton--sizeL.spectrum-UIIcon-CornerTriangle200
.spectrum-ActionButton--sizeXL.spectrum-UIIcon-CornerTriangle300
+

Include markup for hold icon before workflow icon

+

Because of the way padding is calculated, the hold icon must be placed before the workflow icon.

+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/actiongroup.html b/actiongroup.html new file mode 100644 index 0000000000..c627a698ad --- /dev/null +++ b/actiongroup.html @@ -0,0 +1,753 @@ +Action group - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Action group

Component status
Contribution
Current version@spectrum-css/actiongroup@5.1.0
ReleasedMay 7, 2024
S2-foundations@spectrum-css/actiongroup@6.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Horizontal
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Edit</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Copy</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <span class="spectrum-ActionButton-label">Delete</span>
+  </button>
+</div>
+

Horizontal (icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Horizontal (quiet, icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--quiet spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Horizontal (compact)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--compact spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Edit</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Copy</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <span class="spectrum-ActionButton-label">Delete</span>
+  </button>
+</div>
+

Horizontal (compact, icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--compact spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Horizontal (compact, quiet, icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--compact spectrum-ActionGroup--quiet spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Vertical
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Edit</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Copy</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <span class="spectrum-ActionButton-label">Delete</span>
+  </button>
+</div>
+

Vertical (icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Vertical (icon-only, quiet)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--quiet spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Vertical (compact)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--compact spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Edit</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <span class="spectrum-ActionButton-label">Copy</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <span class="spectrum-ActionButton-label">Delete</span>
+  </button>
+</div>
+

Vertical (compact, icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--compact spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Vertical (icon-only, compact, quiet)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--compact spectrum-ActionGroup--quiet spectrum-ActionGroup--sizeM">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Edit">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Copy">
+      <use xlink:href="#spectrum-icon-18-Copy" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-ActionGroup-item is-selected">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="Delete">
+      <use xlink:href="#spectrum-icon-18-Delete" />
+    </svg>
+  </button>
+</div>
+

Justified
Contribution

+ + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--justified spectrum-ActionGroup--sizeM" style="width: 300px">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View card">
+      <use xlink:href="#spectrum-icon-18-AlignTop" />
+    </svg>
+    <span class="spectrum-ActionButton-label">Align Top</span>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View list">
+      <use xlink:href="#spectrum-icon-18-AlignBottom" />
+    </svg>
+    <span class="spectrum-ActionButton-label">Align Bottom</span>
+  </button>
+</div>
+

Justified (icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--justified spectrum-ActionGroup--sizeM" style="width: 300px">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View card">
+      <use xlink:href="#spectrum-icon-18-AlignTop" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View list">
+      <use xlink:href="#spectrum-icon-18-AlignBottom" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View grid">
+      <use xlink:href="#spectrum-icon-18-AlignMiddle" />
+    </svg>
+  </button>
+</div>
+

Justified (compact, icon-only)
Contribution

+ + + +
+
Show markup
<div class="spectrum-ActionGroup spectrum-ActionGroup--compact spectrum-ActionGroup--justified spectrum-ActionGroup--sizeM" style="width: 300px">
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View card">
+      <use xlink:href="#spectrum-icon-18-AlignTop" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View list">
+      <use xlink:href="#spectrum-icon-18-AlignBottom" />
+    </svg>
+  </button>
+  <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true" aria-label="View grid">
+      <use xlink:href="#spectrum-icon-18-AlignMiddle" />
+    </svg>
+  </button>
+</div>
+

Horizontal Sizing
Contribution

+
+

XS

+
+ + + +
+
+
+

S

+
+ + + +
+
+
+

M

+
+ + + +
+
+
+

L

+
+ + + +
+
+
+

XL

+
+ + + +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XS</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeXS">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeS">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeL">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--sizeXL">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+</div>
+

Vertical Sizing
Contribution

+
+

XS

+
+ + + +
+
+
+

S

+
+ + + +
+
+
+

M

+
+ + + +
+
+
+

L

+
+ + + +
+
+
+

XL

+
+ + + +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XS</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--sizeXS">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXS spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--sizeS">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--sizeM">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--sizeL">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeL spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+    <div class="spectrum-ActionGroup spectrum-ActionGroup--vertical spectrum-ActionGroup--sizeXL">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Edit</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL spectrum-ActionGroup-item">
+        <span class="spectrum-ActionButton-label">Copy</span>
+      </button>
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeXL spectrum-ActionGroup-item is-selected">
+        <span class="spectrum-ActionButton-label">Delete</span>
+      </button>
+    </div>
+  </div>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


New Action Button markup

+

Action Button requires .spectrum-ActionButton-icon class on icons nested inside of Action Button.

+

Change workflow icon size to medium

+

Replace .spectrum-Icon--sizeS with .spectrum-Icon--sizeM.

+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/actionmenu.html b/actionmenu.html new file mode 100644 index 0000000000..9edc7d7fc9 --- /dev/null +++ b/actionmenu.html @@ -0,0 +1,125 @@ +Action menu - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Action menu

Component status
Contribution
Current version@spectrum-css/actionmenu@6.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/actionmenu@7.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


Simply an action button with a Popover. Note that the is-selected class should be applied to the button when the menu is open. Also note the accessibility roles are different for an action menu vs a normal menu.

+

Variants


Standard
Contribution

+
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ + +
Show markup
<button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected">
+  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-More" />
+  </svg>
+  <span class="spectrum-ActionButton-label">More Actions</span>
+</button>
+<br>
+
+<div class="spectrum-Popover spectrum-Popover--bottom is-open">
+  <ul class="spectrum-Menu" role="menu">
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 1</span>
+    </li>
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 2</span>
+    </li>
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 3</span>
+    </li>
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 4</span>
+    </li>
+  </ul>
+</div>
+
+<div class="dummy-spacing"></div>
+
+<button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected">
+  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-More" />
+  </svg>
+</button>
+<br>
+
+<div class="spectrum-Popover spectrum-Popover--bottom is-open">
+  <ul class="spectrum-Menu" role="menu">
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 1</span>
+    </li>
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 2</span>
+    </li>
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 3</span>
+    </li>
+    <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+      <span class="spectrum-Menu-itemLabel">Action 4</span>
+    </li>
+  </ul>
+</div>
+
+<div class="dummy-spacing"></div>
+
+<button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-More" />
+  </svg>
+  <span class="spectrum-ActionButton-label">More Actions</span>
+</button>
+

Migration Guide


New Action Button markup

+

Action Button requires .spectrum-ActionButton-icon class on icons nested inside of Action Button.

+

Change workflow icon size to medium

+

Replace .spectrum-Icon--sizeS with .spectrum-Icon--sizeM.

+

\ No newline at end of file diff --git a/alertbanner.html b/alertbanner.html new file mode 100644 index 0000000000..492d397ac0 --- /dev/null +++ b/alertbanner.html @@ -0,0 +1,200 @@ +Alert banner - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Alert banner

Component status
Contribution
Current version@spectrum-css/alertbanner@2.2.0
ReleasedMay 22, 2024
S2-foundations@spectrum-css/alertbanner@3.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


Alert banners show pressing and high-signal messages, such as system alerts. They’re meant to be noticed and prompt users to take action.

+

Variants


Neutral
Contribution

Standard Alert Banners

+
+
+
+

Your trial has expired

+
+
+
+
+ +
+
+
+ +
+
+
+

Your trial has expired

+
+ +
+
+
+ +
+
+
+ +
+
+
+

Your trial has expired. Please purchase to continue. Your work has been saved and is ready for you to open again once you have purchased the software.

+
+ +
+
+
+ +
+
+
Show markup
<div class="spectrum-AlertBanner is-open">
+  <div class="spectrum-AlertBanner-body">
+    <div class="spectrum-AlertBanner-content">
+      <p class="spectrum-AlertBanner-text">Your trial has expired</p>
+    </div>
+  </div>
+  <div class="spectrum-AlertBanner-end">
+    <div class="spectrum-Divider spectrum-Divider--sizeS spectrum-Divider--vertical spectrum-Divider--staticWhite"></div>
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="close">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross200" />
+      </svg>
+    </button>
+  </div>
+</div>
+<div class="dummy-spacing" style="block-size: 2.5rem;"></div>
+
+<div class="spectrum-AlertBanner is-open">
+  <div class="spectrum-AlertBanner-body">
+    <div class="spectrum-AlertBanner-content">
+      <p class="spectrum-AlertBanner-text">Your trial has expired</p>
+    </div>
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Action</span>
+    </button>
+  </div>
+  <div class="spectrum-AlertBanner-end">
+    <div class="spectrum-Divider spectrum-Divider--sizeS spectrum-Divider--vertical spectrum-Divider--staticWhite"></div>
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="close">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross200" />
+      </svg>
+    </button>
+  </div>
+</div>
+<div class="dummy-spacing" style="block-size: 2.5rem;"></div>
+
+<div class="spectrum-AlertBanner is-open">
+  <div class="spectrum-AlertBanner-body">
+    <div class="spectrum-AlertBanner-content">
+      <p class="spectrum-AlertBanner-text">Your trial has expired. Please purchase to continue. Your work has been saved and is ready for you to open again once you have purchased the software.</p>
+    </div>
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Action</span>
+    </button>
+  </div>
+  <div class="spectrum-AlertBanner-end">
+    <div class="spectrum-Divider spectrum-Divider--sizeS spectrum-Divider--vertical spectrum-Divider--staticWhite"></div>
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="close">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross200" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Informative
Contribution

Informative Alert Banners

+
+
+
+ +

Your trial will expire in 3 days

+
+ +
+
+
+ +
+
+
Show markup
<div class="spectrum-AlertBanner spectrum-AlertBanner--info is-open">
+  <div class="spectrum-AlertBanner-body">
+    <div class="spectrum-AlertBanner-content">
+      <svg class="spectrum-Icon spectrum-UIIcon-Info100 spectrum-AlertBanner-icon" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Info" />
+      </svg>
+      <p class="spectrum-AlertBanner-text">Your trial will expire in 3 days </p>
+    </div>
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Action</span>
+    </button>
+  </div>
+  <div class="spectrum-AlertBanner-end">
+    <div class="spectrum-Divider spectrum-Divider--sizeS spectrum-Divider--vertical spectrum-Divider--staticWhite"></div>
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="close" >
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross200" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Negative
Contribution

Negative Alert Banners

+
+
+
+ +

Connection interupted. Check your network to continue.

+
+ +
+
+
+ +
+
+
Show markup
<div class="spectrum-AlertBanner spectrum-AlertBanner--negative is-open">
+  <div class="spectrum-AlertBanner-body">
+    <div class="spectrum-AlertBanner-content">
+      <svg class="spectrum-Icon spectrum-UIIcon-Alert100 spectrum-AlertBanner-icon" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Alert" />
+      </svg>
+      <p class="spectrum-AlertBanner-text">Connection interupted. Check your network to continue.</p>
+    </div>
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Try Again</span>
+    </button>
+  </div>
+  <div class="spectrum-AlertBanner-end">
+    <div class="spectrum-Divider spectrum-Divider--sizeS spectrum-Divider--vertical spectrum-Divider--staticWhite"></div>
+    <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" aria-label="close">
+      <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross200" />
+      </svg>
+    </button>
+  </div>
+</div>
+

\ No newline at end of file diff --git a/alertdialog.html b/alertdialog.html new file mode 100644 index 0000000000..a95bd03590 --- /dev/null +++ b/alertdialog.html @@ -0,0 +1,338 @@ +Alert dialog - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Alert dialog

Component status
Contribution
Current version@spectrum-css/alertdialog@2.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/alertdialog@3.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Confirmation
Contribution

This is the default variant for alert dialogs. Use a confirmation variant for asking a user to confirm a choice.

+
+
+
+ +
+
+
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-CSSExample-overlayShowButton" onclick="openDialog(this.nextElementSibling)"><span class="spectrum-Button-label">Open Alert Dialog</span></button>
+<div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
+  <div class="spectrum-Modal is-open" data-testid="modal">
+    <section class="spectrum-AlertDialog spectrum-AlertDialog--confirmation" role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
+      <div class="spectrum-AlertDialog-grid">
+        <h1 class="spectrum-AlertDialog-heading" id="dialog_label">Enable Smart Filters?</h1>
+        <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
+        <section class="spectrum-AlertDialog-content">Smart filters are nondestructive and will preserve your original images.</section>
+        <div class="spectrum-ButtonGroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Cancel</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Enable</span>
+          </button>
+        </div>
+      </div>
+    </section>
+  </div>
+</div>
+

Information
Contribution

Information alert dialogs communicate important information that a user needs to acknowledge. Before using this kind of alert dialog, make sure it’s the appropriate communication channel for the message instead of a toast or a more lightweight messaging option.

+
+ +
+
+ +
+
+
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-CSSExample-overlayShowButton" onclick="openDialog(this.nextElementSibling)"><span class="spectrum-Button-label">Open Alert Dialog</span></button>
+
+<div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
+  <div class="spectrum-Modal is-open" data-testid="modal">
+    <section class="spectrum-AlertDialog spectrum-AlertDialog--information" role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
+      <div class="spectrum-AlertDialog-grid">
+        <h1 class="spectrum-AlertDialog-heading" id="dialog_label">Connect to wifi</h1>
+        <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
+        <section class="spectrum-AlertDialog-content">Please connect to wifi to sync your projects or go to Settings to change your prefernces.</section>
+        <div class="spectrum-ButtonGroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Cancel</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Continue</span>
+          </button>
+        </div>
+      </div>
+    </section>
+  </div>
+</div>
+

Warning
Contribution

Warning alert dialogs communicate important information to users in relation to an issue that needs to be acknowledged, but does not block the user from moving forward.

+
+ +
+
+ +
+
+
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-CSSExample-overlayShowButton" onclick="openDialog(this.nextElementSibling)"><span class="spectrum-Button-label">Open Alert Dialog</span></button>
+
+<div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
+  <div class="spectrum-Modal is-open" data-testid="modal">
+    <section class="spectrum-AlertDialog spectrum-AlertDialog--warning" role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
+      <div class="spectrum-AlertDialog-grid">
+      <div class="spectrum-AlertDialog-header">
+        <h1 class="spectrum-AlertDialog-heading" id="dialog_label">Unverified format</h1>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Alert" />
+        </svg>
+      </div>
+
+        <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
+        <section class="spectrum-AlertDialog-content">This format has not been verified and may not be viewable for some users. Do you want to continue publishing?</section>
+        <div class="spectrum-ButtonGroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Cancel</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Continue</span>
+          </button>
+        </div>
+      </div>
+    </section>
+  </div>
+</div>
+

Error
Contribution

Error alert dialogs communicate critical information about an issue that a user needs to acknowledge.

+
+ +
+
+ +
+
+
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-CSSExample-overlayShowButton" onclick="openDialog(this.nextElementSibling)"><span class="spectrum-Button-label">Open Alert Dialog</span></button>
+
+<div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
+  <div class="spectrum-Modal spectrum-AlertDialog-modal is-open" data-testid="modal">
+    <section class="spectrum-AlertDialog spectrum-AlertDialog--error"  role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
+      <div class="spectrum-AlertDialog-grid">
+        <div class="spectrum-AlertDialog-header">
+          <h1 class="spectrum-AlertDialog-heading">Unable to share</h1>
+            <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-Alert" />
+            </svg>
+        </div>
+        <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
+        <section class="spectrum-AlertDialog-content">An error occured while sharing your project. Please verify the email address and try again.</section>
+        <div class="spectrum-ButtonGroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Continue</span>
+          </button>
+        </div>
+      </div>
+    </section>
+  </div>
+</div>
+

Destructive
Contribution

Destructive alert dialogs are for when a user needs to confirm an action that will impact their data or experience in a potentially negative way, such as deleting files or contacts.

+
+ +
+
+ +
+
+
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-CSSExample-overlayShowButton" onclick="openDialog(this.nextElementSibling)"><span class="spectrum-Button-label">Open Alert Dialog</span></button>
+
+<div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
+  <div class="spectrum-Modal is-open" data-testid="modal">
+    <section class="spectrum-AlertDialog spectrum-AlertDialog--destructive" role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
+      <div class="spectrum-AlertDialog-grid">
+        <div class="spectrum-AlertDialog-header">
+          <h1 class="spectrum-AlertDialog-heading" id="dialog_label">Delete 3 documents?</h1>
+        </div>
+
+        <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
+        <section class="spectrum-AlertDialog-content">Are you sure you want to delete the 3 selected documents?</section>
+        <div class="spectrum-ButtonGroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Cancel</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--negative spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Delete</span>
+          </button>
+        </div>
+      </div>
+    </section>
+  </div>
+</div>
+

Secondary Button
Contribution

An alert dialog can have a total of 3 buttons if the secondary outline button label is defined.

+
+ +
+
+ +
+
+
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-CSSExample-overlayShowButton" onclick="openDialog(this.nextElementSibling)"><span class="spectrum-Button-label">Open Alert Dialog</span></button>
+
+<div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
+  <div class="spectrum-Modal is-open" data-testid="modal">
+    <section class="spectrum-AlertDialog spectrum-AlertDialog--information" role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
+      <div class="spectrum-AlertDialog-grid">
+        <h1 class="spectrum-AlertDialog-heading" id="dialog_label">Rate this app</h1>
+        <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
+        <section class="spectrum-AlertDialog-content">If you enjoy our app, would you mind taking a moment to rate it?</section>
+        <div class="spectrum-ButtonGroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">No, thanks</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Remind me later</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Rate now</span>
+          </button>
+        </div>
+      </div>
+    </section>
+  </div>
+</div>
+

Scroll
Contribution

+ +
+
+ +
+
+
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-CSSExample-overlayShowButton" onclick="openDialog(this.nextElementSibling)"><span class="spectrum-Button-label">Open Alert Dialog</span></button>
+
+<div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
+  <div class="spectrum-Modal is-open" data-testid="modal">
+    <section class="spectrum-AlertDialog spectrum-AlertDialog--information" role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
+      <div class="spectrum-AlertDialog-grid">
+        <h1 class="spectrum-AlertDialog-heading" id="dialog_label">Lorem Ipsum</h1>
+        <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
+        <section class="spectrum-AlertDialog-content" tabindex="0">
+          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ultrices est eu lacus interdum, vitae volutpat tortor laoreet. Phasellus consectetur erat quis massa congue, vel placerat ipsum hendrerit. Aenean eleifend augue quam, quis blandit lacus pretium eget. Aliquam aliquam fermentum nunc, sed dictum metus varius in. Suspendisse in nisl libero. Nulla egestas massa eget lectus ullamcorper placerat. Vivamus cursus, nunc quis pharetra auctor, eros mi tempus elit, sit amet placerat ipsum velit ut dolor. Nam sit amet eleifend erat. Duis sollicitudin orci sit amet tellus tincidunt, vel lobortis risus pellentesque. Integer viverra urna elementum metus dignissim placerat. Nulla posuere eros ipsum. Pellentesque viverra urna justo, eu ultricies nisl fermentum et. Vivamus tristique porttitor dictum. Vestibulum faucibus hendrerit urna vitae eleifend.</p>
+          <p>Aliquam suscipit ipsum et nulla bibendum imperdiet. Sed euismod est id mauris pretium, ut fringilla est facilisis. Sed tempus dignissim dui non condimentum. Nam et felis mauris. Proin tempus imperdiet neque, ac sagittis urna posuere et. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras pulvinar justo metus, sed porttitor tortor porta vel. Cras ultrices lectus non orci dictum auctor. Praesent quis augue vel tortor finibus ultricies at aliquet purus. Fusce eget convallis risus. Proin imperdiet urna ligula, at scelerisque eros vestibulum ut. Proin imperdiet ultricies turpis, eu vestibulum metus congue ut. Etiam commodo hendrerit diam, at luctus leo. Donec vitae erat id enim semper posuere. Nullam blandit condimentum lacus ac laoreet.
+          <p>Suspendisse aliquet erat id maximus porttitor. Quisque auctor dolor ac gravida tincidunt. Proin vitae dignissim elit. Ut a neque nisi. Nullam fermentum, neque ac pulvinar laoreet, augue nisi hendrerit ligula, a dapibus magna urna ac leo. Vivamus augue ex, aliquet sed sagittis vel, vulputate ac leo. Quisque ac euismod magna. Maecenas auctor nisl a sagittis dapibus. Donec semper lorem magna, ac commodo neque imperdiet id. Curabitur in luctus lorem, sed fringilla magna. Pellentesque ac urna eleifend, porttitor ex pharetra, congue purus. Vestibulum aliquam finibus urna sed egestas.</p>
+          <p>Curabitur justo enim, pretium ut nulla vitae, hendrerit vehicula orci. Duis vel odio sed nunc accumsan vestibulum in ac felis. Nam ultrices eleifend lorem at viverra. Fusce dictum ligula dui, at mattis augue elementum id. Pellentesque non risus augue. Nulla porta laoreet erat sed pulvinar. Proin rutrum facilisis interdum. Integer orci odio, tincidunt et egestas a, ullamcorper dapibus sapien.</p>
+        </section>
+        <div class="spectrum-ButtonGroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Cancel</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
+            <span class="spectrum-Button-label">Continue</span>
+          </button>
+        </div>
+      </div>
+    </section>
+  </div>
+</div>
+

\ No newline at end of file diff --git a/asset.html b/asset.html new file mode 100644 index 0000000000..73cde85b78 --- /dev/null +++ b/asset.html @@ -0,0 +1,32 @@ +Asset - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Asset

Component status
Contribution
Current version@spectrum-css/asset@5.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/asset@6.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Image
Contribution

+ +
+
Show markup
<div class="spectrum-Asset">
+  <img class="spectrum-Asset-image" src="img/example-ava.jpg" style="max-width: 75%; max-height: 75%; object-fit: contain;">
+</div>
+

File
Contribution

+ + + + +
+
Show markup
<div class="spectrum-Asset">
+  <svg viewBox="0 0 128 128" class="spectrum-Asset-file">
+    <path class="spectrum-Asset-fileBackground" d="M24,126c-5.5,0-10-4.5-10-10V12c0-5.5,4.5-10,10-10h61.5c2.1,0,4.1,0.8,5.6,2.3l20.5,20.4c1.5,1.5,2.4,3.5,2.4,5.7V116c0,5.5-4.5,10-10,10H24z"></path>
+    <path class="spectrum-Asset-fileOutline" d="M113.1,23.3L92.6,2.9C90.7,1,88.2,0,85.5,0H24c-6.6,0-12,5.4-12,12v104c0,6.6,5.4,12,12,12h80c6.6,0,12-5.4,12-12V30.4C116,27.8,114.9,25.2,113.1,23.3z M90,6l20.1,20H92c-1.1,0-2-0.9-2-2V6z M112,116c0,4.4-3.6,8-8,8H24c-4.4,0-8-3.6-8-8V12c0-4.4,3.6-8,8-8h61.5c0.2,0,0.3,0,0.5,0v20c0,3.3,2.7,6,6,6h20c0,0.1,0,0.3,0,0.4V116z"></path>
+  </svg>
+</div>
+

Folder
Contribution

+ + + + +
+
Show markup
<div class="spectrum-Asset">
+  <svg viewBox="0 0 32 32" class="spectrum-Asset-folder">
+    <path class="spectrum-Asset-folderBackground" d="M3,29.5c-1.4,0-2.5-1.1-2.5-2.5V5c0-1.4,1.1-2.5,2.5-2.5h10.1c0.5,0,1,0.2,1.4,0.6l3.1,3.1c0.2,0.2,0.4,0.3,0.7,0.3H29c1.4,0,2.5,1.1,2.5,2.5v18c0,1.4-1.1,2.5-2.5,2.5H3z"></path>
+    <path class="spectrum-Asset-folderOutline" d="M29,6H18.3c-0.1,0-0.2,0-0.4-0.2l-3.1-3.1C14.4,2.3,13.8,2,13.1,2H3C1.3,2,0,3.3,0,5v22c0,1.6,1.3,3,3,3h26c1.7,0,3-1.4,3-3V9C32,7.3,30.7,6,29,6z M31,27c0,1.1-0.9,2-2,2H3c-1.1,0-2-0.9-2-2V7h28c1.1,0,2,0.9,2,2V27z"></path>
+  </svg>
+</div>
+

\ No newline at end of file diff --git a/assetcard.html b/assetcard.html new file mode 100644 index 0000000000..9d5017c99f --- /dev/null +++ b/assetcard.html @@ -0,0 +1,352 @@ +Asset card - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Asset card

Component status
Contribution
Current version@spectrum-css/assetcard@4.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/assetcard@5.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • Set the --spectrum-assetcard-asset-size custom property to the size you want to display the asset as
  • +
+

Variants


Portrait
Contribution

+
+ assetcard example image +
+
+
+
Card Title
+
+
+
+ Image +
+
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--checkboxSelection" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image" src="img/example-card-portrait.jpg" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title" id="card-title-1">Card Title</div>
+    <div class="spectrum-AssetCard-headerContent"></div>
+  </div>
+  <div class="spectrum-AssetCard-content">
+    Image
+  </div>
+  <div class="spectrum-AssetCard-selectionIndicator">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-AssetCard-checkbox">
+      <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="" aria-labelledby="card-title-1">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Landscape
Contribution

+
+ assetcard example image in landscape +
+
+
+
Card Title
+
+
+
+ Image +
+
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--checkboxSelection" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image in landscape" src="img/example-card-landscape.jpeg" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title" id="card-title-2">Card Title</div>
+    <div class="spectrum-AssetCard-headerContent"></div>
+  </div>
+  <div class="spectrum-AssetCard-content">
+    Image
+  </div>
+  <div class="spectrum-AssetCard-selectionIndicator">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-AssetCard-checkbox">
+      <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="" aria-labelledby="card-title-2">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Square
Contribution

+
+ assetcard example image +
+
+
+
Card Title
+
+
+
+ Image +
+
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--checkboxSelection" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image" src="img/example-card-square.png" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title" id="card-title-3">Card Title</div>
+    <div class="spectrum-AssetCard-headerContent"></div>
+  </div>
+  <div class="spectrum-AssetCard-content">
+    Image
+  </div>
+  <div class="spectrum-AssetCard-selectionIndicator">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-AssetCard-checkbox">
+      <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="" aria-labelledby="card-title-3">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Optional content
Contribution

The .spectrum-AssetCard-content and .spectrum-AssetCard-headerContent elements are optional.

+
+
+ assetcard example image +
+
+
+
MVI_0123.mp4
+
39:02
+
+
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--checkboxSelection" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image" src="img/example-card-square.png" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title" id="card-title-4">MVI_0123.mp4</div>
+    <div class="spectrum-AssetCard-headerContent">39:02</div>
+  </div>
+  <div class="spectrum-AssetCard-selectionIndicator">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-AssetCard-checkbox">
+      <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="" aria-labelledby="card-title-4">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Highlight Selection
Contribution

+
+ assetcard example image +
+
+
+
Card Title
+
+
+
+ Image +
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--highlightSelection is-selected" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image" src="img/example-card-portrait.jpg" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title">Card Title</div>
+    <div class="spectrum-AssetCard-headerContent"></div>
+  </div>
+  <div class="spectrum-AssetCard-content">
+    Image
+  </div>
+</div>
+

Checkbox Selection
Contribution

+
+ assetcard example image +
+
+
+
Card Title
+
+
+
+ Image +
+
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--checkboxSelection is-selected" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image" src="img/example-card-portrait.jpg" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title" id="card-title-5">Card Title</div>
+    <div class="spectrum-AssetCard-headerContent"></div>
+  </div>
+  <div class="spectrum-AssetCard-content">
+    Image
+  </div>
+  <div class="spectrum-AssetCard-selectionIndicator">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-AssetCard-checkbox">
+      <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="" aria-labelledby="card-title-5" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Ordered Selection
Contribution

+
+ assetcard example image +
+
+
+
Card Title
+
+
+
+ Image +
+
+
1
+
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--orderedSelection is-selected" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image" src="img/example-card-portrait.jpg" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title">Card Title</div>
+    <div class="spectrum-AssetCard-headerContent"></div>
+  </div>
+  <div class="spectrum-AssetCard-content">
+    Image
+  </div>
+  <div class="spectrum-AssetCard-selectionIndicator">
+    <div class="spectrum-AssetCard-selectionOrder">1</div>
+  </div>
+</div>
+

Drop Target
Contribution

+
+ assetcard example image +
+
+
+
Card Title
+
+
+
+ Image +
+
+
1
+
+
+
Show markup
<div class="spectrum-AssetCard spectrum-AssetCard--highlightSelection is-drop-target" tabindex="0" role="figure">
+  <div class="spectrum-AssetCard-assetContainer">
+    <img class="spectrum-AssetCard-asset" alt="assetcard example image" src="img/example-card-portrait.jpg" />
+    <div class="spectrum-AssetCard-selectionOverlay"></div>
+  </div>
+  <div class="spectrum-AssetCard-header">
+    <div class="spectrum-AssetCard-title">Card Title</div>
+    <div class="spectrum-AssetCard-headerContent"></div>
+  </div>
+  <div class="spectrum-AssetCard-content">
+    Image
+  </div>
+  <div class="spectrum-AssetCard-selectionIndicator">
+    <div class="spectrum-AssetCard-selectionOrder">1</div>
+  </div>
+</div>
+

Migration Guide


Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/assetlist.html b/assetlist.html new file mode 100644 index 0000000000..b20f9de26f --- /dev/null +++ b/assetlist.html @@ -0,0 +1,151 @@ +Asset list - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Asset list

Component status
Contribution
Current version@spectrum-css/assetlist@6.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/assetlist@7.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


A selectable list of Assets, often used inside of Miller Columns.

+

Variants


Standard
Contribution

    + +
  • + + asset item thumbnail + Shantanu.jpg + +
  • + +
  • + + + Resource Allocation.csv + +
  • + +
  • + + + Frontend Projects + +
  • + + +
  • + + + Downloads + +
  • + +
+
Show markup
<ul class="spectrum-AssetList">
+
+  <li class="spectrum-AssetList-item is-selectable" tabindex="0">
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" tabindex="-1" aria-labelledby="assetitemlabel-1">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+      </span>
+    </label>
+    <img src="img/example-ava.jpg" alt="asset item thumbnail" class="spectrum-AssetList-itemThumbnail">
+    <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-1">Shantanu.jpg</span>
+    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Chevron100" />
+    </svg>
+  </li>
+
+  <li class="spectrum-AssetList-item is-selectable" tabindex="0">
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2" tabindex="-1" aria-labelledby="assetitemlabel-2">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+      </span>
+    </label>
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-AssetList-itemThumbnail" focusable="false" aria-hidden="true" aria-label="FileCSV">
+      <use xlink:href="#spectrum-icon-18-Document"></use>
+    </svg>
+    <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-2">Resource Allocation.csv</span>
+    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Chevron100" />
+    </svg>
+  </li>
+
+  <li class="spectrum-AssetList-item is-branch is-selectable is-selected" tabindex="0">
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-3" tabindex="-1" aria-labelledby="assetitemlabel-3" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+      </span>
+    </label>
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-AssetList-itemThumbnail" focusable="false" aria-hidden="true" aria-label="Folder">
+      <use xlink:href="#spectrum-icon-24-Folder"></use>
+    </svg>
+    <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-3">Frontend Projects</span>
+    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Chevron100" />
+    </svg>
+  </li>
+
+
+  <li class="spectrum-AssetList-item is-branch is-selectable is-navigated" tabindex="0">
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-4" tabindex="-1" aria-labelledby="assetitemlabel-4">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+      </span>
+    </label>
+    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-AssetList-itemThumbnail" focusable="false" aria-hidden="true" aria-label="Folder">
+      <use xlink:href="#spectrum-icon-24-Folder"></use>
+    </svg>
+    <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-4">Downloads</span>
+    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Chevron100" />
+    </svg>
+  </li>
+
+</ul>
+

\ No newline at end of file diff --git a/avatar.html b/avatar.html new file mode 100644 index 0000000000..a0156aa755 --- /dev/null +++ b/avatar.html @@ -0,0 +1,184 @@ +Avatar - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Avatar

Component status
Contribution
Current version@spectrum-css/avatar@7.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/avatar@8.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


An image representing a user.

+

An avatar image is wrapped in a link that uses the .spectrum-Avatar-link
+class by default, however, an avatar may also be used without a link.
+When disabled the avatar should only be used without a link.

+

Variants


Standard
Contribution

+
+

50

+
+ + Avatar + +
+
+
+

75

+
+ + Avatar + +
+
+
+

100 (default)

+
+ + Avatar + +
+
+
+

200

+
+ + Avatar + +
+
+
+

300

+
+ + Avatar + +
+
+
+

400

+
+ + Avatar + +
+
+
+

500

+
+ + Avatar + +
+
+
+

600

+
+ + Avatar + +
+
+
+

700

+
+ + Avatar + +
+
+
+
Show markup
<div class="spectrum-Examples spectrum-Examples--vertical">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">50</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size50">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">75</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size75">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">100 (default)</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size100">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">200</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size200">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">300</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size300">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">400</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size400">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">500</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size500">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">600</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size600">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">700</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size700">
+      <a href="#" class="spectrum-Avatar-link">
+        <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+      </a>
+    </div>
+  </div>
+</div>
+

No Link
Contribution

+
+

700

+
+ Avatar +
+
+ Disabled Avatar +
+
+
+
Show markup
<div class="spectrum-Examples spectrum-Examples--vertical">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">700</h4>
+    <div class="spectrum-Avatar spectrum-Avatar--size700">
+      <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+    </div>
+    <div class="spectrum-Avatar spectrum-Avatar--size700 is-disabled">
+      <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
+    </div>
+  </div>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


A div wrapper is required for avatar

+
<div class="spectrum-Avatar spectrum-Avatar--size50">
+  <img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
+</div>
+
+

Sizes added to avatar.

+

A second class has to be added to spectrum-Avatar to declare which size to use. The available size classes are: spectrum-Avatar--size50, spectrum-Avatar--size75, spectrum-Avatar--size100, spectrum-Avatar--size200, spectrum-Avatar--size300, spectrum-Avatar--size400, spectrum-Avatar--size500, spectrum-Avatar--size600, and spectrum-Avatar--size700.

+

\ No newline at end of file diff --git a/badge.html b/badge.html new file mode 100644 index 0000000000..49959e2b49 --- /dev/null +++ b/badge.html @@ -0,0 +1,447 @@ +Badge - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Badge

Component status
Contribution
Current version@spectrum-css/badge@4.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/badge@5.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • Badge may include a label with no icon, an icon with no label, or an icon with a label
  • +
  • Badge t-shirt sizes correspond to icon sizes
  • +
  • Fixed positioning impacts the border radius of the badge component
  • +
+

Variants


Standard
Contribution

+
Neutral
+
+ +
+
Accent
+
+ +
+
Informative
+
+ +
+
Positive
+
+ +
+
Negative
+
+ +
+
Notice
+
+
Show markup
<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral">
+  <div class="spectrum-Badge-label">Neutral</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--accent">
+  <div class="spectrum-Badge-label">Accent</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--informative">
+  <div class="spectrum-Badge-label">Informative</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--positive">
+  <div class="spectrum-Badge-label">Positive</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--negative">
+  <div class="spectrum-Badge-label">Negative</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--notice">
+  <div class="spectrum-Badge-label">Notice</div>
+</div>
+

Non-Semantic
Contribution

+
Gray
+
+ +
+
Red
+
+ +
+
Orange
+
+ +
+
Yellow
+
+ +
+
Chartreuse
+
+ +
+
Celery
+
+ +
+
Green
+
+ +
+
Seafoam
+
+ +
+
Cyan
+
+ +
+
Blue
+
+ +
+
Indigo
+
+ +
+
Purple
+
+ +
+
Fuchsia
+
+ +
+
Magenta
+
+
Show markup
<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--gray">
+  <div class="spectrum-Badge-label">Gray</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--red">
+  <div class="spectrum-Badge-label">Red</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--orange">
+  <div class="spectrum-Badge-label">Orange</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--yellow">
+  <div class="spectrum-Badge-label">Yellow</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--chartreuse">
+  <div class="spectrum-Badge-label">Chartreuse</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--celery">
+  <div class="spectrum-Badge-label">Celery</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--green">
+  <div class="spectrum-Badge-label">Green</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--seafoam">
+  <div class="spectrum-Badge-label">Seafoam</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--cyan">
+  <div class="spectrum-Badge-label">Cyan</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--blue">
+  <div class="spectrum-Badge-label">Blue</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--indigo">
+  <div class="spectrum-Badge-label">Indigo</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--purple">
+  <div class="spectrum-Badge-label">Purple</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--fuchsia">
+  <div class="spectrum-Badge-label">Fuchsia</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--magenta">
+  <div class="spectrum-Badge-label">Magenta</div>
+</div>
+

Sizing
Contribution

Label Only

+
+
+
Small
+
+ +
+
Medium
+
+ +
+
Large
+
+ +
+
Extra Large
+
+ +
+
+
+
+ +

Icon Only

+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+
+ +

Icon with Label

+
+
+ +
Small
+
+ +
+ +
Medium
+
+ +
+ +
Large
+
+ +
+ +
Extra Large
+
+
Show markup
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Label Only</h4>
+<br>
+<div class="spectrum-Badge spectrum-Badge--sizeS spectrum-Badge--neutral">
+  <div class="spectrum-Badge-label">Small</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral">
+  <div class="spectrum-Badge-label">Medium</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeL spectrum-Badge--neutral">
+  <div class="spectrum-Badge-label">Large</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeXL spectrum-Badge--neutral">
+  <div class="spectrum-Badge-label">Extra Large</div>
+</div>
+
+<br>
+<br>
+<hr>
+<br>
+
+<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Icon Only</h4>
+<br>
+<div class="spectrum-Badge spectrum-Badge--sizeS spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Badge-icon spectrum-Badge-icon--no-label" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Badge-icon spectrum-Badge-icon--no-label" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeL spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Badge-icon spectrum-Badge-icon--no-label" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeXL spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Badge-icon spectrum-Badge-icon--no-label" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+</div>
+
+<br>
+<br>
+<hr>
+<br>
+
+<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Icon with Label</h4>
+<br>
+<div class="spectrum-Badge spectrum-Badge--sizeS spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+  <div class="spectrum-Badge-label">Small</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+  <div class="spectrum-Badge-label">Medium</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeL spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+  <div class="spectrum-Badge-label">Large</div>
+</div>
+
+<div class="spectrum-Badge spectrum-Badge--sizeXL spectrum-Badge--neutral">
+  <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+  <div class="spectrum-Badge-label">Extra Large</div>
+</div>
+

Text Wrapping
Contribution

+ +
Label Text Wrapping Behavior
+
+
Show markup
<div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral" style="max-width: 175px;">
+  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Info" />
+  </svg>
+  <div class="spectrum-Badge-label">Label Text Wrapping Behavior</div>
+</div>
+

Fixed Edge
Contribution

+
+
+

Fixed Inline Start

+ +
+ +
Label Text
+
+
+ +
+

Fixed Inline End

+ +
+ +
Label Text
+
+
+ +
+

Fixed Block Start

+ +
+ +
Label Text
+
+
+ +
+

Fixed Block End

+ +
+ +
Label Text
+
+
+ +
+
Show markup

+<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Fixed Inline Start</h4>
+
+    <div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral spectrum-Badge--fixed-inline-start">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Info" />
+      </svg>
+      <div class="spectrum-Badge-label">Label Text</div>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Fixed Inline End</h4>
+
+    <div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral spectrum-Badge--fixed-inline-end">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Info" />
+      </svg>
+      <div class="spectrum-Badge-label">Label Text</div>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Fixed Block Start</h4>
+
+    <div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral spectrum-Badge--fixed-block-start">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Info" />
+      </svg>
+      <div class="spectrum-Badge-label">Label Text</div>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Fixed Block End</h4>
+
+    <div class="spectrum-Badge spectrum-Badge--sizeM spectrum-Badge--neutral spectrum-Badge--fixed-block-end">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Badge-icon spectrum-Badge-icon" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Info" />
+      </svg>
+      <div class="spectrum-Badge-label">Label Text</div>
+    </div>
+  </div>
+
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Badge now includes icon and label elements

+
    +
  • Label and icon elements must be nested inside a parent container of class .spectrum-Badge in order to achieve the correct layout and wrapping behavior.
  • +
  • Layout of Badge is applied with a display of inline-flex, allowing badge to display as inline while the child elements for the label and icon utilize flexbox for layout.
  • +
+

Badge now includes fixed positioning

+
    +
  • This document represents the border radius style which applies to each position.
  • +
  • border radius is 0 along the fixed edge of the component.
  • +
  • The actual component position is not represented in this document.
  • +
+

\ No newline at end of file diff --git a/breadcrumb.html b/breadcrumb.html new file mode 100644 index 0000000000..7e193447db --- /dev/null +++ b/breadcrumb.html @@ -0,0 +1,641 @@ +Breadcrumbs - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express
Component status
Contribution
Current version@spectrum-css/breadcrumb@9.1.2
ReleasedJuly 9, 2024
S2-foundations@spectrum-css/breadcrumb@10.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Standard
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs">
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Nav Root</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trend</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Dragged
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs">
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Nav Root</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item is-dragged">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trend</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Nested
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs">
+    <li class="spectrum-Breadcrumbs-item">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon spectrum-Breadcrumbs-folder" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-FolderOpen" />
+        </svg>
+      </button>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Sub Item</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trend</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Nested (root visible)
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs">
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Nav Root</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon spectrum-Breadcrumbs-folder" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-FolderOpen" />
+        </svg>
+      </button>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trend</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Multiline
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs spectrum-Breadcrumbs--multiline">
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Nav Root</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Multiline (dragged)
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs spectrum-Breadcrumbs--multiline">
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Nav Root</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item is-dragged">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Multiline Nested
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs spectrum-Breadcrumbs--multiline">
+    <li class="spectrum-Breadcrumbs-item">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon spectrum-Breadcrumbs-folder" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-FolderOpen" />
+        </svg>
+      </button>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Sub Item</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Multiline Nested (root visible)
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs spectrum-Breadcrumbs--multiline">
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Nav Root</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon spectrum-Breadcrumbs-folder" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-FolderOpen" />
+        </svg>
+      </button>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Compact
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs spectrum-Breadcrumbs--compact">
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Nav Root</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Compact Nested
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs spectrum-Breadcrumbs--compact">
+    <li class="spectrum-Breadcrumbs-item">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon spectrum-Breadcrumbs-folder" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-FolderOpen" />
+        </svg>
+      </button>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Sub Item</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Compact Nested (root visible)
Contribution

+
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs spectrum-Breadcrumbs--compact">
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Nav Root</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon spectrum-Breadcrumbs-folder" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-FolderOpen" />
+        </svg>
+      </button>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Disabled
Contribution

+ +
Show markup
<nav>
+  <ul class="spectrum-Breadcrumbs">
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Nav Root</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <div class="spectrum-Breadcrumbs-itemLink is-disabled" role="link" aria-disabled="true">Trend</div>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+<nav>
+  <ul class="spectrum-Breadcrumbs">
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" href="#">Nav Root</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon spectrum-Breadcrumbs-folder" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-FolderOpen" />
+        </svg>
+      </button>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" tabindex="0">Trendy</a>
+      <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-Breadcrumbs-itemSeparator" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Chevron100" />
+      </svg>
+    </li>
+    <li class="spectrum-Breadcrumbs-item">
+      <a class="spectrum-Breadcrumbs-itemLink" role="link" aria-current="page">January 2019 Assets</a>
+    </li>
+  </ul>
+</nav>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


New Action Button markup

+

Action Button requires .spectrum-ActionButton-icon class on icons nested inside of Action Button.

+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/button-accent.html b/button-accent.html new file mode 100644 index 0000000000..78f160f2b8 --- /dev/null +++ b/button-accent.html @@ -0,0 +1,459 @@ +Button - accent - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Button - accent

Component status
Contribution
Current version@spectrum-css/button@13.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/button@14.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


The call to action button communicates strong emphasis and is reserved for encouraging critical actions.

+

Variants


Sizing
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Disabled
Contribution

+
+ + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent" disabled>
+      <span class="spectrum-Button-label">Button</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent spectrum-Button--iconOnly" aria-label="Edit" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Outline
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--accent spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Outline- Disabled
Contribution

+
+ + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--accent" disabled>
+      <span class="spectrum-Button-label">Button</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--accent" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--accent spectrum-Button--iconOnly" aria-label="Edit" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Fill or Outline class required

+

All buttons now require either the .spectrum-Button--fill or .spectrum-Button--outline class.

+

CTA replaced by Accent with Fill

+

Replace all .spectrum-Button--cta with .spectrum-Button--accent .spectrum-Button--fill.

+

Icon Only

+

Add the .spectrum-Button--iconOnly class to apply the correct styling when an icon is used without a label.
+Provide an aria-label on the button itself when using this variant for accessibility.

+

T-shirt sizing

+

Button now supports t-shirt sizing and requires that you specify the size of button by adding a .spectrum-Button--size* class.

+

Change workflow icon size

+

Previously, all Buttons used .spectrum-Icon--sizeS. This has changed:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Button classnameWorkflow icon classname
.spectrum-Button--sizeS.spectrum-Icon--sizeS
.spectrum-Button--sizeM.spectrum-Icon--sizeM
.spectrum-Button--sizeL.spectrum-Icon--sizeL
.spectrum-Button--sizeXL.spectrum-Icon--sizeXL
+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/button-negative.html b/button-negative.html new file mode 100644 index 0000000000..5d8c267475 --- /dev/null +++ b/button-negative.html @@ -0,0 +1,445 @@ +Button - negative - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Button - negative

Component status
Contribution
Current version@spectrum-css/button@13.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/button@14.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


The negative button is for high emphasis of negative or destructive actions.

+

Variants


Sizing
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Disabled
Contribution

+ + + + +
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--negative" disabled>
+  <span class="spectrum-Button-label">Delete</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--negative" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Delete" />
+  </svg>
+  <span class="spectrum-Button-label">Delete</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--negative spectrum-Button--iconOnly" aria-label="Delete" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Delete" />
+  </svg>
+</button>
+

Outline
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+      <span class="spectrum-Button-label">Delete</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--negative spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Delete">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Delete" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Outline - Disabled
Contribution

+ + + + +
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--negative" disabled>
+  <span class="spectrum-Button-label">Delete</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--negative" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Delete" />
+  </svg>
+  <span class="spectrum-Button-label">Delete</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--negative spectrum-Button--iconOnly" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Delete" />
+  </svg>
+</button>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Fill or Outline class required

+

All buttons now require either the .spectrum-Button--fill or .spectrum-Button--outline class.

+

Negative replaced by Negative with Outline

+

Replace all .spectrum-Button--negative with .spectrum-Button--negative .spectrum-Button--outline.

+

Negative Quiet replaced by Negative with Outline

+

Replace all .spectrum-Button--negative .spectrum-Button--quiet with .spectrum-Button--negative .spectrum-Button--outline.

+

Icon Only

+

Add the .spectrum-Button--iconOnly class to apply the correct styling when an icon is used without a label.
+Provide an aria-label on the button itself when using this variant for accessibility.

+

T-shirt sizing

+

Button now supports t-shirt sizing and requires that you specify the size of button by adding a .spectrum-Button--size* class.

+

Change workflow icon size

+

Previously, all Buttons used .spectrum-Icon--sizeS. This has changed:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Button classnameWorkflow icon classname
.spectrum-Button--sizeS.spectrum-Icon--sizeS
.spectrum-Button--sizeM.spectrum-Icon--sizeM
.spectrum-Button--sizeL.spectrum-Icon--sizeL
.spectrum-Button--sizeXL.spectrum-Icon--sizeXL
+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/button-pending.html b/button-pending.html new file mode 100644 index 0000000000..8c729d079b --- /dev/null +++ b/button-pending.html @@ -0,0 +1,2101 @@ +Button - pending - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Button - pending

Component status
Contribution
Current version@spectrum-css/button@13.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/button@14.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


The pending button is for indicating that a quick progress action is taking place. In this case, the label and optional icon disappear and a progress circle appears. The progress circle always shows an indeterminate progress. We recommend the use of the .is-pending class on the component’s parent container, but there is also an option to use an attribute of pending instead. Buttons should have the disabled attribute when the pending state is applied.

+

Variants


Default (accent, negative, primary, and secondary)
Contribution

+
+

S

+ + + + + +
+ +
+

M (default)

+ + + + + +
+ +
+

L

+ + + + + +
+ +
+

XL

+ + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeS is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--sizeS is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--accent spectrum-Button--iconOnly spectrum-Button--sizeS is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeM is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--sizeM is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--negative spectrum-Button--iconOnly spectrum-Button--sizeM is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeL is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--iconOnly spectrum-Button--sizeL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeXL is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeXL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--iconOnly spectrum-Button--sizeXL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+</div>
+

Outline (accent, negative, primary, and secondary)
Contribution

+
+

S

+ + + + + +
+ +
+

M (default)

+ + + + + +
+ +
+

L

+ + + + + +
+ +
+

XL

+ + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+    <button class="spectrum-Button spectrum-Button--accent spectrum-Button--outline spectrum-Button--sizeS is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--accent spectrum-Button--outline spectrum-Button--sizeS is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--accent spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeS is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+    <button class="spectrum-Button spectrum-Button--negative spectrum-Button--outline spectrum-Button--sizeM is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--negative spectrum-Button--outline spectrum-Button--sizeM is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--negative spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeM is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+    <button class="spectrum-Button spectrum-Button--primary spectrum-Button--outline spectrum-Button--sizeL is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--primary spectrum-Button--outline spectrum-Button--sizeL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--primary spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+    <button class="spectrum-Button spectrum-Button--secondary spectrum-Button--outline spectrum-Button--sizeXL is-pending" disabled>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--secondary spectrum-Button--outline spectrum-Button--sizeXL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--secondary spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeXL is-pending" disabled>
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
+        <div class="spectrum-ProgressCircle-track"></div>
+        <div class="spectrum-ProgressCircle-fills">
+          <div class="spectrum-ProgressCircle-fillMask1">
+            <div class="spectrum-ProgressCircle-fillSubMask1">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+          <div class="spectrum-ProgressCircle-fillMask2">
+            <div class="spectrum-ProgressCircle-fillSubMask2">
+              <div class="spectrum-ProgressCircle-fill"></div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </button>
+  </div>
+</div>
+

Static white
Contribution

Pending button state is only supported for static white, not for static black.

+
+
+
+

S

+ + + + + +
+ +
+

M (default)

+ + + + + +
+ +
+

L

+ + + + + +
+ +
+

XL

+ + + + + +
+
+
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); --spectrum-alias-heading-text-color: white; padding: 15px 20px;">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeS is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeS is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--iconOnly spectrum-Button--sizeS is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeM is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeM is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--iconOnly spectrum-Button--sizeM is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeL is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--iconOnly spectrum-Button--sizeL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeXL is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeXL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--iconOnly spectrum-Button--sizeXL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+  </div>
+</div>
+

Outline on Static White
Contribution

Pending button state is only supported for static white, not for static black.

+
+
+
+

S

+ + + + + +
+ +
+

M (default)

+ + + + + +
+ +
+

L

+ + + + + +
+ +
+

XL

+ + + + + +
+
+
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); --spectrum-alias-heading-text-color: white; padding: 15px 20px;">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeS is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeS is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeS is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeM is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeM is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeM is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeL is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeXL is-pending" disabled>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--sizeXL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--staticWhite spectrum-Button--outline spectrum-Button--iconOnly spectrum-Button--sizeXL is-pending" disabled>
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-ProgressCircle--staticWhite">
+          <div class="spectrum-ProgressCircle-track"></div>
+          <div class="spectrum-ProgressCircle-fills">
+            <div class="spectrum-ProgressCircle-fillMask1">
+              <div class="spectrum-ProgressCircle-fillSubMask1">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+            <div class="spectrum-ProgressCircle-fillMask2">
+              <div class="spectrum-ProgressCircle-fillSubMask2">
+                <div class="spectrum-ProgressCircle-fill"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </button>
+    </div>
+  </div>
+</div>
+

\ No newline at end of file diff --git a/button-primary.html b/button-primary.html new file mode 100644 index 0000000000..ec0c2cb171 --- /dev/null +++ b/button-primary.html @@ -0,0 +1,445 @@ +Button - primary - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Button - primary

Component status
Contribution
Current version@spectrum-css/button@13.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/button@14.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


The primary button is used for medium emphasis.

+

Variants


Sizing
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--primary spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Disabled
Contribution

+ + + + +
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--primary" disabled>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--primary" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--primary spectrum-Button--iconOnly" aria-label="Edit" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+</button>
+

Outline
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--primary spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Outline - Disabled
Contribution

+ + + + +
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary" disabled>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-Button--iconOnly" aria-label="Edit" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+</button>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Fill or Outline class required

+

All buttons now require either the .spectrum-Button--fill or .spectrum-Button--outline class.

+

Primary replaced by Primary with Outline

+

Replace all .spectrum-Button--primary with .spectrum-Button--primary .spectrum-Button--outline.

+

Primary Quiet replaced by Secondary with Outline

+

Replace all .spectrum-Button--primary .spectrum-Button--quiet with .spectrum-Button--secondary .spectrum-Button--outline.

+

Icon Only

+

Add the .spectrum-Button--iconOnly class to apply the correct styling when an icon is used without a label.
+Provide an aria-label on the button itself when using this variant for accessibility.

+

T-shirt sizing

+

Button now supports t-shirt sizing and requires that you specify the size of button by adding a .spectrum-Button--size* class.

+

Change workflow icon size

+

Previously, all Buttons used .spectrum-Icon--sizeS. This has changed:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Button classnameWorkflow icon classname
.spectrum-Button--sizeS.spectrum-Icon--sizeS
.spectrum-Button--sizeM.spectrum-Icon--sizeM
.spectrum-Button--sizeL.spectrum-Icon--sizeL
.spectrum-Button--sizeXL.spectrum-Icon--sizeXL
+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/button-secondary.html b/button-secondary.html new file mode 100644 index 0000000000..a54aca91ef --- /dev/null +++ b/button-secondary.html @@ -0,0 +1,445 @@ +Button - secondary - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Button - secondary

Component status
Contribution
Current version@spectrum-css/button@13.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/button@14.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


The secondary button is for low emphasis.

+

Variants


Sizing
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--fill spectrum-Button--secondary spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Disabled
Contribution

+ + + + +
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--secondary" disabled>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--secondary" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--secondary spectrum-Button--iconOnly" aria-label="Edit" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+</button>
+

Outline
Contribution

+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeS">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeS">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeM">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeM">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeXL">
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeXL">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+      <span class="spectrum-Button-label">Edit</span>
+    </button>
+
+    <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+      <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-icon-18-Edit" />
+      </svg>
+    </button>
+  </div>
+</div>
+

Outline - Disabled
Contribution

+ + + + +
Show markup
<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary" disabled>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+  <span class="spectrum-Button-label">Edit</span>
+</button>
+
+<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-Button--iconOnly" aria-label="Edit" disabled>
+  <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-icon-18-Edit" />
+  </svg>
+</button>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Fill or Outline class required

+

All buttons now require either the .spectrum-Button--fill or .spectrum-Button--outline class.

+

Secondary replaced by Secondary with Outline

+

Replace all .spectrum-Button--secondary with .spectrum-Button--secondary .spectrum-Button--outline.

+

Secondary Quiet replaced by Secondary with Outline

+

Replace all .spectrum-Button--secondary .spectrum-Button--quiet with .spectrum-Button--secondary .spectrum-Button--outline.

+

Icon Only

+

Add the .spectrum-Button--iconOnly class to apply the correct styling when an icon is used without a label.
+Provide an aria-label on the button itself when using this variant for accessibility.

+

T-shirt sizing

+

Button now supports t-shirt sizing and requires that you specify the size of button by adding a .spectrum-Button--size* class.

+

Change workflow icon size

+

Previously, all Buttons used .spectrum-Icon--sizeS. This has changed:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Button classnameWorkflow icon classname
.spectrum-Button--sizeS.spectrum-Icon--sizeS
.spectrum-Button--sizeM.spectrum-Icon--sizeM
.spectrum-Button--sizeL.spectrum-Icon--sizeL
.spectrum-Button--sizeXL.spectrum-Icon--sizeXL
+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/button-staticcolor.html b/button-staticcolor.html new file mode 100644 index 0000000000..c5526d0a9a --- /dev/null +++ b/button-staticcolor.html @@ -0,0 +1,1021 @@ +Button - static color - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Button - static color

Component status
Contribution
Current version@spectrum-css/button@13.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/button@14.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


When a button needs to be placed on top of a colored background or a visual, use the over background button. In order to implement this button, you must set the CSS color property of a parent element to the same value as the background the button is placed against.

+

Variants


Static White
Contribution

+
+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); --spectrum-alias-heading-text-color: white; padding: 15px 20px;">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeS">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeM">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeXL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeXL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Static White - Disabled
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticWhite" disabled>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticWhite" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--iconOnly" aria-label="Edit" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Static White - Secondary
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--secondary">
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--secondary">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticWhite spectrum-Button--secondary spectrum-Button--iconOnly" aria-label="Edit">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Static Black
Contribution

+
+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
+
Show markup
<div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px;">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeS">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeM">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeXL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeXL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Static Black - Disabled
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticBlack" disabled>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticBlack" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--iconOnly" aria-label="Edit" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Static Black - Secondary
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--secondary">
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--secondary">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--staticBlack spectrum-Button--secondary spectrum-Button--iconOnly" aria-label="Edit">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Static White - Outline
Contribution

+
+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); --spectrum-alias-heading-text-color: white; padding: 15px 20px;">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeS">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeM">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeXL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeXL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Static White - Outline, Disabled
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite" disabled>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--iconOnly" aria-label="Edit" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Static White - Outline, Secondary
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--secondary">
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--secondary">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticWhite spectrum-Button--secondary spectrum-Button--iconOnly" aria-label="Edit">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Static Black - Outline
Contribution

+
+
+

S

+ + + + + + +
+
+

M (default)

+ + + + + + +
+ +
+

L

+ + + + + + +
+ +
+

XL

+ + + + + + +
+
+
+
Show markup
<div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px;">
+  <div class="spectrum-Examples">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeS">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeS">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeM">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeM">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeM spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeXL">
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeXL">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+        <span class="spectrum-Button-label">Edit</span>
+      </button>
+
+      <button class="spectrum-Button spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--sizeXL spectrum-Button--iconOnly" aria-label="Edit">
+        <svg class="spectrum-Icon spectrum-Icon--sizeXL" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-icon-18-Edit" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Static Black - Outline, Disabled
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticBlack" disabled>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticBlack" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--iconOnly" aria-label="Edit" disabled>
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Static Black - Outline, Secondary
Contribution

+ + + + + +
+
Show markup
<div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px;">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--secondary">
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--secondary">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+    <span class="spectrum-Button-label">Edit</span>
+  </button>
+
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--staticBlack spectrum-Button--secondary spectrum-Button--iconOnly" aria-label="Edit">
+    <svg class="spectrum-Icon spectrum-Icon--sizeS" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-icon-18-Edit" />
+    </svg>
+  </button>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Fill or Outline class required

+

All buttons now require either the .spectrum-Button--fill or .spectrum-Button--outline class.

+

Over background replaced by StaticWhite with Outline

+

Replace all .spectrum-Button--overBackground with .spectrum-Button--staticWhite .spectrum-Button--outline.

+

Over background Quiet replaced by StaticWhite with Outline

+

Replace all .spectrum-Button--overBackground .spectrum-Button--quiet with .spectrum-Button--staticWhite .spectrum-Button--outline.

+

Icon Only

+

Add the .spectrum-Button--iconOnly class to apply the correct styling when an icon is used without a label.
+Provide an aria-label on the button itself when using this variant for accessibility.

+

T-shirt sizing

+

Button now supports t-shirt sizing and requires that you specify the size of button by adding a .spectrum-Button--size* class.

+

Change workflow icon size

+

Previously, all Buttons used .spectrum-Icon--sizeS. This has changed:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Button classnameWorkflow icon classname
.spectrum-Button--sizeS.spectrum-Icon--sizeS
.spectrum-Button--sizeM.spectrum-Icon--sizeM
.spectrum-Button--sizeL.spectrum-Icon--sizeL
.spectrum-Button--sizeXL.spectrum-Icon--sizeXL
+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/buttongroup.html b/buttongroup.html new file mode 100644 index 0000000000..a95b915a37 --- /dev/null +++ b/buttongroup.html @@ -0,0 +1,95 @@ +Button group - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Button group

Component status
Contribution
Current version@spectrum-css/buttongroup@7.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/buttongroup@8.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Horizontal
Contribution

Default spacing for Medium, Large, and Extra Large t-shirt sizes.

+
+ + + +
+
Show markup
<div class="spectrum-ButtonGroup">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">No, thanks</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Remind me later</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--primary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Rate now</span>
+  </button>
+</div>
+

Horizontal - Small
Contribution

Spacing for the Small t-shirt size.

+
+ + + +
+
Show markup
<div class="spectrum-ButtonGroup spectrum-ButtonGroup--sizeS">
+  <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">No, thanks</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Remind me later</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--fill spectrum-Button--primary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Rate now</span>
+  </button>
+</div>
+

Vertical
Contribution

Default spacing for Medium, Large, and Extra Large t-shirt sizes.

+
+ + + +
+
Show markup
<div class="spectrum-ButtonGroup spectrum-ButtonGroup--vertical">
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">No, thanks</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Remind me later</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--primary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Rate now</span>
+  </button>
+</div>
+

Vertical - Small
Contribution

Spacing for the Small t-shirt size.

+
+ + + +
+
Show markup
<div class="spectrum-ButtonGroup spectrum-ButtonGroup--sizeS spectrum-ButtonGroup--vertical">
+  <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">No, thanks</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Remind me later</span>
+  </button>
+  <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--fill spectrum-Button--primary spectrum-ButtonGroup-item">
+    <span class="spectrum-Button-label">Rate now</span>
+  </button>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

\ No newline at end of file diff --git a/calendar.html b/calendar.html new file mode 100644 index 0000000000..91fb82e104 --- /dev/null +++ b/calendar.html @@ -0,0 +1,867 @@ +Calendar - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Calendar

Component status
Contribution
Current version@spectrum-css/calendar@5.1.2
ReleasedMay 22, 2024
S2-foundations@spectrum-css/calendar@6.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Standard
Contribution

+
+
August 2017
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
Show markup
<div class="spectrum-Calendar">
+   <div class="spectrum-Calendar-header">
+      <div class="spectrum-Calendar-title" role="heading" aria-live="assertive" aria-atomic="true">August 2017</div>
+      <button aria-label="Previous" title="Previous" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-prevMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+      <button aria-label="Next" title="Next" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-nextMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+   </div>
+   <div class="spectrum-Calendar-body" role="grid" tabindex="0" aria-readonly="true" aria-disabled="false">
+     <table role="presentation" class="spectrum-Calendar-table">
+        <thead role="presentation">
+           <tr role="row">
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Sunday">S</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Monday">M</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Tuesday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Wednesday">W</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Thursday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Friday">F</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Saturday">S</abbr></th>
+           </tr>
+        </thead>
+        <tbody role="presentation">
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, July 30, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, July 31, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 1, 2017"><span role="presentation" class="spectrum-Calendar-date">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Today, Wednesday, August 2, 2017 selected"><span role="presentation" class="spectrum-Calendar-date is-today">2</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 3, 2017"><span role="presentation" class="spectrum-Calendar-date">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 4, 2017"><span role="presentation" class="spectrum-Calendar-date">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Saturday, August 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected">5</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 6, 2017"><span role="presentation" class="spectrum-Calendar-date">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 7, 2017"><span role="presentation" class="spectrum-Calendar-date">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 8, 2017"><span role="presentation" class="spectrum-Calendar-date">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 9, 2017"><span role="presentation" class="spectrum-Calendar-date">9</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 10, 2017"><span role="presentation" class="spectrum-Calendar-date">10</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 11, 2017"><span role="presentation" class="spectrum-Calendar-date">11</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 12, 2017"><span role="presentation" class="spectrum-Calendar-date">12</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 13, 2017"><span role="presentation" class="spectrum-Calendar-date">13</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 14, 2017"><span role="presentation" class="spectrum-Calendar-date">14</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 15, 2017"><span role="presentation" class="spectrum-Calendar-date">15</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 16, 2017"><span role="presentation" class="spectrum-Calendar-date">16</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 17, 2017"><span role="presentation" class="spectrum-Calendar-date">17</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 18, 2017"><span role="presentation" class="spectrum-Calendar-date">18</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 19, 2017"><span role="presentation" class="spectrum-Calendar-date">19</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 20, 2017"><span role="presentation" class="spectrum-Calendar-date">20</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 21, 2017"><span role="presentation" class="spectrum-Calendar-date">21</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 22, 2017"><span role="presentation" class="spectrum-Calendar-date">22</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 23, 2017"><span role="presentation" class="spectrum-Calendar-date">23</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 24, 2017"><span role="presentation" class="spectrum-Calendar-date">24</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 25, 2017"><span role="presentation" class="spectrum-Calendar-date">25</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 26, 2017"><span role="presentation" class="spectrum-Calendar-date">26</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 27, 2017"><span role="presentation" class="spectrum-Calendar-date">27</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 28, 2017"><span role="presentation" class="spectrum-Calendar-date">28</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 29, 2017"><span role="presentation" class="spectrum-Calendar-date">29</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 30, 2017"><span role="presentation" class="spectrum-Calendar-date">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 31, 2017"><span role="presentation" class="spectrum-Calendar-date">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 1, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 2, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">2</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, September 3, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, September 4, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, September 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">5</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, September 6, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, September 7, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 8, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 9, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">9</span></td>
+           </tr>
+        </tbody>
+     </table>
+   </div>
+</div>
+

Standard with calendar day of the week abbreviations
Contribution

+
+
August 2017
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
Show markup
<div class="spectrum-Calendar">
+   <div class="spectrum-Calendar-header">
+      <div class="spectrum-Calendar-title" role="heading" aria-live="assertive" aria-atomic="true">August 2017</div>
+      <button aria-label="Previous" title="Previous" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-prevMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+      <button aria-label="Next" title="Next" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-nextMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+   </div>
+   <div class="spectrum-Calendar-body" role="grid" tabindex="0" aria-readonly="true" aria-disabled="false">
+     <table role="presentation" class="spectrum-Calendar-table">
+        <thead role="presentation">
+           <tr role="row">
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Sunday">SUN</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Monday">MON</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Tuesday">TUE</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Wednesday">WED</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Thursday">THU</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Friday">FRI</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Saturday">SAT</abbr></th>
+           </tr>
+        </thead>
+        <tbody role="presentation">
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, July 30, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, July 31, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 1, 2017"><span role="presentation" class="spectrum-Calendar-date">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Today, Wednesday, August 2, 2017 selected"><span role="presentation" class="spectrum-Calendar-date is-today">2</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 3, 2017"><span role="presentation" class="spectrum-Calendar-date">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 4, 2017"><span role="presentation" class="spectrum-Calendar-date">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Saturday, August 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected">5</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 6, 2017"><span role="presentation" class="spectrum-Calendar-date">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 7, 2017"><span role="presentation" class="spectrum-Calendar-date">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 8, 2017"><span role="presentation" class="spectrum-Calendar-date">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 9, 2017"><span role="presentation" class="spectrum-Calendar-date">9</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 10, 2017"><span role="presentation" class="spectrum-Calendar-date">10</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 11, 2017"><span role="presentation" class="spectrum-Calendar-date">11</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 12, 2017"><span role="presentation" class="spectrum-Calendar-date">12</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 13, 2017"><span role="presentation" class="spectrum-Calendar-date">13</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 14, 2017"><span role="presentation" class="spectrum-Calendar-date">14</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 15, 2017"><span role="presentation" class="spectrum-Calendar-date">15</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 16, 2017"><span role="presentation" class="spectrum-Calendar-date">16</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 17, 2017"><span role="presentation" class="spectrum-Calendar-date">17</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 18, 2017"><span role="presentation" class="spectrum-Calendar-date">18</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 19, 2017"><span role="presentation" class="spectrum-Calendar-date">19</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 20, 2017"><span role="presentation" class="spectrum-Calendar-date">20</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 21, 2017"><span role="presentation" class="spectrum-Calendar-date">21</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 22, 2017"><span role="presentation" class="spectrum-Calendar-date">22</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 23, 2017"><span role="presentation" class="spectrum-Calendar-date">23</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 24, 2017"><span role="presentation" class="spectrum-Calendar-date">24</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 25, 2017"><span role="presentation" class="spectrum-Calendar-date">25</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 26, 2017"><span role="presentation" class="spectrum-Calendar-date">26</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 27, 2017"><span role="presentation" class="spectrum-Calendar-date">27</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 28, 2017"><span role="presentation" class="spectrum-Calendar-date">28</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 29, 2017"><span role="presentation" class="spectrum-Calendar-date">29</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 30, 2017"><span role="presentation" class="spectrum-Calendar-date">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 31, 2017"><span role="presentation" class="spectrum-Calendar-date">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 1, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 2, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">2</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, September 3, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, September 4, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, September 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">5</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, September 6, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, September 7, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 8, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 9, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">9</span></td>
+           </tr>
+        </tbody>
+     </table>
+   </div>
+</div>
+

Disabled
Contribution

+
+
August 2017
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
Show markup
<div class="spectrum-Calendar">
+   <div class="spectrum-Calendar-header">
+      <div class="spectrum-Calendar-title" role="heading" aria-live="assertive" aria-atomic="true">August 2017</div>
+      <button aria-label="Previous" title="Previous" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-prevMonth" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+      <button aria-label="Next" title="Next" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-nextMonth" disabled>
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+   </div>
+   <div class="spectrum-Calendar-body" role="grid" aria-readonly="true" aria-disabled="true">
+     <table role="presentation" class="spectrum-Calendar-table">
+        <thead role="presentation">
+           <tr role="row">
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Sunday">S</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Monday">M</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Tuesday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Wednesday">W</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Thursday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Friday">F</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Saturday">S</abbr></th>
+           </tr>
+        </thead>
+        <tbody role="presentation">
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, July 30, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, July 31, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, August 1, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="true" aria-invalid="false" title="Today, Wednesday, August 2, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">2</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, August 3, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, August 4, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, August 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">5</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, August 6, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, August 7, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, August 8, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, August 9, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled is-today">9</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, August 10, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">10</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, August 11, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">11</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, August 12, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">12</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, August 13, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">13</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, August 14, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">14</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, August 15, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">15</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, August 16, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">16</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, August 17, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">17</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, August 18, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">18</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, August 19, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">19</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, August 20, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">20</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, August 21, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">21</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, August 22, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">22</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, August 23, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">23</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, August 24, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">24</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, August 25, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">25</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, August 26, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">26</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, August 27, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">27</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, August 28, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">28</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, August 29, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">29</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, August 30, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, August 31, 2017"><span role="presentation" class="spectrum-Calendar-date is-disabled">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 1, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 2, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">2</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, September 3, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, September 4, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, September 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">5</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, September 6, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, September 7, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 8, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 9, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">9</span></td>
+           </tr>
+        </tbody>
+     </table>
+   </div>
+</div>
+

Focused
Contribution

+
+
August 2017
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
Show markup
<div class="spectrum-Calendar">
+   <div class="spectrum-Calendar-header">
+      <div class="spectrum-Calendar-title" role="heading" aria-live="assertive" aria-atomic="true">August 2017</div>
+      <button aria-label="Previous" title="Previous" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-prevMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+      <button aria-label="Next" title="Next" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-nextMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+   </div>
+   <div class="spectrum-Calendar-body" role="grid" tabindex="0" aria-readonly="true" aria-disabled="false">
+     <table role="presentation" class="spectrum-Calendar-table">
+        <thead role="presentation">
+           <tr role="row">
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Sunday">S</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Monday">M</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Tuesday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Wednesday">W</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Thursday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Friday">F</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Saturday">S</abbr></th>
+           </tr>
+        </thead>
+        <tbody role="presentation">
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, July 30, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, July 31, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 1, 2017"><span role="presentation" class="spectrum-Calendar-date">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Today, Wednesday, August 2, 2017 selected"><span role="presentation" class="spectrum-Calendar-date is-today is-focused">2</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 3, 2017"><span role="presentation" class="spectrum-Calendar-date">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 4, 2017"><span role="presentation" class="spectrum-Calendar-date">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Saturday, August 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-focused">5</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 6, 2017"><span role="presentation" class="spectrum-Calendar-date">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 7, 2017"><span role="presentation" class="spectrum-Calendar-date is-focused">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 8, 2017"><span role="presentation" class="spectrum-Calendar-date">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 9, 2017"><span role="presentation" class="spectrum-Calendar-date">9</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 10, 2017"><span role="presentation" class="spectrum-Calendar-date">10</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 11, 2017"><span role="presentation" class="spectrum-Calendar-date">11</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 12, 2017"><span role="presentation" class="spectrum-Calendar-date">12</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 13, 2017"><span role="presentation" class="spectrum-Calendar-date">13</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 14, 2017"><span role="presentation" class="spectrum-Calendar-date">14</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 15, 2017"><span role="presentation" class="spectrum-Calendar-date">15</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 16, 2017"><span role="presentation" class="spectrum-Calendar-date">16</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 17, 2017"><span role="presentation" class="spectrum-Calendar-date">17</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 18, 2017"><span role="presentation" class="spectrum-Calendar-date">18</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 19, 2017"><span role="presentation" class="spectrum-Calendar-date">19</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 20, 2017"><span role="presentation" class="spectrum-Calendar-date">20</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 21, 2017"><span role="presentation" class="spectrum-Calendar-date">21</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 22, 2017"><span role="presentation" class="spectrum-Calendar-date">22</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 23, 2017"><span role="presentation" class="spectrum-Calendar-date">23</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 24, 2017"><span role="presentation" class="spectrum-Calendar-date">24</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 25, 2017"><span role="presentation" class="spectrum-Calendar-date">25</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 26, 2017"><span role="presentation" class="spectrum-Calendar-date">26</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 27, 2017"><span role="presentation" class="spectrum-Calendar-date">27</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 28, 2017"><span role="presentation" class="spectrum-Calendar-date">28</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 29, 2017"><span role="presentation" class="spectrum-Calendar-date">29</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 30, 2017"><span role="presentation" class="spectrum-Calendar-date">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 31, 2017"><span role="presentation" class="spectrum-Calendar-date">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 1, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 2, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">2</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, September 3, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, September 4, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, September 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">5</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, September 6, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, September 7, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 8, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 9, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">9</span></td>
+           </tr>
+        </tbody>
+     </table>
+  </div>
+</div>
+

Range Selection
Contribution

A calendar with a range selected.
+.is-selection-start goes on the first day in the selection, and .is-range-start goes on the first day of each week or month in the middle of a selection (but not the first day of the selection).
+.is-selection-end goes on the last day of the selection, and .is-range-end goes on the last day of each week or month in the middle of the selection (but not on the last day of the selection).

+
+
+
August 2017
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
Show markup
<div class="spectrum-Calendar">
+   <div class="spectrum-Calendar-header">
+      <div class="spectrum-Calendar-title" role="heading" aria-live="assertive" aria-atomic="true">August 2017</div>
+      <button aria-label="Previous" title="Previous" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-prevMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+      <button aria-label="Next" title="Next" class="spectrum-ActionButton spectrum-ActionButton--quiet spectrum-Calendar-nextMonth">
+        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Chevron100" />
+        </svg>
+      </button>
+   </div>
+   <div class="spectrum-Calendar-body" role="grid" tabindex="0" aria-readonly="true" aria-disabled="false">
+     <table role="presentation" class="spectrum-Calendar-table">
+        <thead role="presentation">
+           <tr role="row">
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Sunday">S</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Monday">M</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Tuesday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Wednesday">W</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Thursday">T</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Friday">F</abbr></th>
+              <th role="columnheader" scope="col" class="spectrum-Calendar-tableCell"><abbr class="spectrum-Calendar-dayOfWeek" title="Saturday">S</abbr></th>
+           </tr>
+        </thead>
+        <tbody role="presentation">
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, July 30, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, July 31, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 1, 2017"><span role="presentation" class="spectrum-Calendar-date">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Today, Wednesday, August 2, 2017 selected"><span role="presentation" class="spectrum-Calendar-date">2</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 3, 2017"><span role="presentation" class="spectrum-Calendar-date">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 4, 2017"><span role="presentation" class="spectrum-Calendar-date">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 5, 2017"><span role="presentation" class="spectrum-Calendar-date">5</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 6, 2017"><span role="presentation" class="spectrum-Calendar-date">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 7, 2017"><span role="presentation" class="spectrum-Calendar-date">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 8, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-range-selection is-selection-start">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 9, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-range-selection">9</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Thursday, August 10, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-range-selection">10</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Friday, August 11, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-range-selection is-today">11</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Saturday, August 12, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-range-selection is-range-end">12</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Sunday, August 13, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-range-selection is-range-start">13</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="true" aria-invalid="false" title="Monday, August 14, 2017"><span role="presentation" class="spectrum-Calendar-date is-selected is-range-selection is-selection-end">14</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 15, 2017"><span role="presentation" class="spectrum-Calendar-date">15</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 16, 2017"><span role="presentation" class="spectrum-Calendar-date">16</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 17, 2017"><span role="presentation" class="spectrum-Calendar-date">17</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 18, 2017"><span role="presentation" class="spectrum-Calendar-date">18</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 19, 2017"><span role="presentation" class="spectrum-Calendar-date">19</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 20, 2017"><span role="presentation" class="spectrum-Calendar-date">20</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 21, 2017"><span role="presentation" class="spectrum-Calendar-date">21</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 22, 2017"><span role="presentation" class="spectrum-Calendar-date">22</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 23, 2017"><span role="presentation" class="spectrum-Calendar-date">23</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 24, 2017"><span role="presentation" class="spectrum-Calendar-date">24</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Friday, August 25, 2017"><span role="presentation" class="spectrum-Calendar-date">25</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Saturday, August 26, 2017"><span role="presentation" class="spectrum-Calendar-date">26</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Sunday, August 27, 2017"><span role="presentation" class="spectrum-Calendar-date">27</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Monday, August 28, 2017"><span role="presentation" class="spectrum-Calendar-date">28</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Tuesday, August 29, 2017"><span role="presentation" class="spectrum-Calendar-date">29</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Wednesday, August 30, 2017"><span role="presentation" class="spectrum-Calendar-date">30</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" tabindex="-1" aria-disabled="false" aria-selected="false" aria-invalid="false" title="Thursday, August 31, 2017"><span role="presentation" class="spectrum-Calendar-date">31</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 1, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">1</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 2, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">2</span></td>
+           </tr>
+           <tr role="row">
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Sunday, September 3, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">3</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Monday, September 4, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">4</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Tuesday, September 5, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">5</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Wednesday, September 6, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">6</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Thursday, September 7, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">7</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Friday, September 8, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">8</span></td>
+              <td role="gridcell" class="spectrum-Calendar-tableCell" aria-disabled="true" aria-selected="false" aria-invalid="false" title="Saturday, September 9, 2017"><span role="presentation" class="spectrum-Calendar-date is-outsideMonth">9</span></td>
+           </tr>
+        </tbody>
+     </table>
+   </div>
+</div>
+

Migration Guide


Previous/Next Icon size change

+

ChevronLeftLarge/ChevronRightLarge was changed to ChevronLeftMedium/ChevronRightMedium.

+

\ No newline at end of file diff --git a/card-asset.html b/card-asset.html new file mode 100644 index 0000000000..90daf6d2b1 --- /dev/null +++ b/card-asset.html @@ -0,0 +1,73 @@ +Card - asset preview - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Card - asset preview

Component status
Contribution
Current version@spectrum-css/card@8.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/card@9.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


A standard cards with a full-sized asset preview.

+

Variants


Standard
Contribution

+
+
+
+ +
+
+
+
+
+
Card Title
+
+
+
jpg
+
+
+
+
+ + + + + +
+
+
+
+
Show markup
<div style="width: 208px;">
+  <div class="spectrum-Card" tabindex="0" role="figure">
+    <div class="spectrum-Card-preview">
+      <div class="spectrum-Asset">
+        <img class="spectrum-Asset-image" src="img/example-card-portrait.jpg" />
+      </div>
+    </div>
+    <hr class="spectrum-Divider spectrum-Divider--sizeS spectrum-Card-divider">
+    <div class="spectrum-Card-body">
+      <div class="spectrum-Card-header">
+        <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Card Title</div>
+      </div>
+      <div class="spectrum-Card-content">
+        <div class="spectrum-Card-subtitle spectrum-Detail spectrum-Detail--sizeS">jpg</div>
+      </div>
+    </div>
+    <div class="spectrum-QuickActions spectrum-Card-quickActions">
+      <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+        <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="">
+        <span class="spectrum-Checkbox-box">
+          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Checkmark100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Dash100" />
+          </svg>
+        </span>
+      </div>
+    </div>
+  </div>
+</div>
+

Migration Guide


Use Spectrum Heading for title and Spectrum Detail for subtitle

+

To make the card component more flexible, products can have more fine control over the typography by using the Heading and Detail components with their corresponding sizes. To be more consistent with previous card designs you can use the following:

+
    +
  • Add the spectrum-Heading and spectrum-Heading--sizeXS or spectrum-Heading--sizeXXS to the spectrum-Card-title element.
  • +
  • Add the spectrum-Detail and spectrum-Detail--sizeS classes to spectrum-Card-subtitle.
  • +
+

Small Card deprecated

+

Card only has one size moving forward and the minimum width has been updated to allow for smaller card widths if needed. There is no longer a need for the spectrum-Card--sizeM class on this component.

+

\ No newline at end of file diff --git a/card-gallery.html b/card-gallery.html new file mode 100644 index 0000000000..c7ec1d2dd7 --- /dev/null +++ b/card-gallery.html @@ -0,0 +1,91 @@ +Card - gallery - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express
Component status
Contribution
Current version@spectrum-css/card@8.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/card@9.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


A gallery card for an image.

+

Variants


Standard
Contribution

+ +
+
Show markup
<div style="width: 532px; height: 224px;">
+  <div class="spectrum-Card spectrum-Card--gallery" tabindex="0" role="figure" style="width: 532px;">
+    <div class="spectrum-Card-preview">
+      <div class="spectrum-Asset">
+        <img class="spectrum-Asset-image" src="img/example-card-landscape.jpeg" />
+      </div>
+    </div>
+    <hr class="spectrum-Divider spectrum-Divider--sizeS spectrum-Card-divider">
+    <div class="spectrum-Card-body">
+      <div class="spectrum-Card-header">
+        <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Name</div>
+        <div class="spectrum-Card-subtitle spectrum-Detail spectrum-Detail--sizeS">jpg</div>
+        <div class="spectrum-Card-description">10/15/18</div>
+        <div class="spectrum-Card-actionButton">
+          <div style="display: inline-block;">
+            <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--quiet">
+              <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
+                <use xlink:href="#spectrum-icon-18-More" />
+              </svg>
+            </button>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="spectrum-QuickActions spectrum-Card-quickActions">
+      <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+        <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="">
+        <span class="spectrum-Checkbox-box">
+          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Checkmark100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Dash100" />
+          </svg>
+        </span>
+      </div>
+    </div>
+  </div>
+</div>
+

Migration Guide


Change workflow icon size to medium

+

Please replace .spectrum-Icon--sizeS with .spectrum-Icon--sizeM.

+

Use Spectrum Heading for title and Spectrum Detail for subtitle

+

To make the card component more flexible, products can have more fine control over the typography by using the Heading and Detail components with their corresponding sizes. To be more consistent with previous card designs you can use the following:

+
    +
  • Add the spectrum-Heading and spectrum-Heading--sizeXS or spectrum-Heading--sizeXXS to the spectrum-Card-title element.
  • +
  • Add the spectrum-Detail and spectrum-Detail--sizeS classes to spectrum-Card-subtitle.
  • +
+

Small Card deprecated

+

Card only has one size moving forward and the minimum width has been updated to allow for smaller card widths if needed. There is no longer a need for the spectrum-Card--sizeM class on this component.

+

\ No newline at end of file diff --git a/card.html b/card.html new file mode 100644 index 0000000000..e2fa2ddc1a --- /dev/null +++ b/card.html @@ -0,0 +1,762 @@ +Card - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Card

Component status
Contribution
Current version@spectrum-css/card@8.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/card@9.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Standard
Contribution

A standard card with cover photo and footer.

+
+
+
+
+
+
Card Title
+
+ +
+
+
+
Optional description; should be kept to one or two lines
+
+
+ +
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-Card" tabindex="0" role="figure">
+  <div class="spectrum-Card-coverPhoto" style="background-image: url(img/example-card-portrait.jpg)"></div>
+  <hr class="spectrum-Divider spectrum-Divider--sizeS spectrum-Card-divider">
+  <div class="spectrum-Card-body">
+    <div class="spectrum-Card-header">
+      <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Card Title</div>
+      <div class="spectrum-Card-actionButton">
+        <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-More" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Card-content">
+      <div class="spectrum-Card-description">Optional description; should be kept to one or two lines</div>
+    </div>
+  </div>
+  <div class="spectrum-Card-footer">
+    Footer
+  </div>
+  <div class="spectrum-QuickActions spectrum-Card-quickActions">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+      <input type="checkbox" class="spectrum-Checkbox-input" aria-checked="false" title="Select" value="">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Standard (long title)
Contribution

A standard card with a title that wraps

+
+
+
+
+
+
This is an exceptionally long card title
+
+ +
+
+
+
Optional description; should be kept to one or two lines
+
+
+ +
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-Card" tabindex="0" role="figure" style="width: 275px;">
+  <div class="spectrum-Card-coverPhoto" style="background-image: url(img/example-card-portrait.jpg)"></div>
+  <hr class="spectrum-Divider spectrum-Divider--sizeS spectrum-Card-divider">
+  <div class="spectrum-Card-body">
+    <div class="spectrum-Card-header">
+      <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">This is an exceptionally long card title</div>
+      <div class="spectrum-Card-actionButton">
+        <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-More" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Card-content">
+      <div class="spectrum-Card-description">Optional description; should be kept to one or two lines</div>
+    </div>
+  </div>
+  <div class="spectrum-Card-footer">
+    Footer
+  </div>
+  <div class="spectrum-QuickActions spectrum-Card-quickActions">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+      <input type="checkbox" class="spectrum-Checkbox-input" aria-checked="false" title="Select" value="">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Standard (no image)
Contribution

A standard card with no photo

+
+
+
+
Card Title
+
+ +
+
+
+
Optional description; should be kept to one or two lines
+
+
+
+
+ + + + + +
+
+
+
Show markup
<div class="spectrum-Card" tabindex="0" role="figure" style="width: 280px">
+  <div class="spectrum-Card-body">
+    <div class="spectrum-Card-header">
+      <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Card Title</div>
+      <div class="spectrum-Card-actionButton">
+        <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-More" />
+          </svg>
+        </button>
+      </div>
+    </div>
+    <div class="spectrum-Card-content">
+      <div class="spectrum-Card-description">Optional description; should be kept to one or two lines</div>
+    </div>
+  </div>
+  <div class="spectrum-QuickActions spectrum-Card-quickActions">
+    <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+      <input type="checkbox" class="spectrum-Checkbox-input" aria-checked="false" title="Select" value="">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+    </div>
+  </div>
+</div>
+

Standard (focused)
Contribution

+
+
+
+
+
+
+
Card Title
+
+ +
+
+
+
Optional description; should be kept to one or two lines
+
+
+ +
+
+ + + + + +
+
+
+
+
+
Show markup
<div role="grid">
+  <div style="width: 208px; outline: 0;" role="row">
+    <div class="spectrum-Card is-focused" role="rowheader" tabindex="0">
+      <div class="spectrum-Card-coverPhoto" style="background-image: url(img/example-card-portrait.jpg)"></div>
+      <hr class="spectrum-Divider spectrum-Divider--sizeS spectrum-Card-divider">
+      <div class="spectrum-Card-body">
+        <div class="spectrum-Card-header">
+          <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Card Title</div>
+          <div class="spectrum-Card-actionButton">
+            <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+              <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+                <use xlink:href="#spectrum-icon-18-More" />
+              </svg>
+            </button>
+          </div>
+        </div>
+        <div class="spectrum-Card-content">
+          <div class="spectrum-Card-description">Optional description; should be kept to one or two lines</div>
+        </div>
+      </div>
+      <div class="spectrum-Card-footer">
+        Footer
+      </div>
+      <div class="spectrum-QuickActions spectrum-Card-quickActions">
+        <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+          <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="" tabindex="-1">
+          <span class="spectrum-Checkbox-box">
+            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Checkmark100" />
+            </svg>
+            <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Dash100" />
+            </svg>
+          </span>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+

Standard (selected)
Contribution

+
+
+
+
+
+
+
Card Title
+
+ +
+
+
+
Optional description; should be kept to one or two lines
+
+
+ +
+
+ + + + + +
+
+
+
+
+
Show markup
<div role="grid">
+  <div style="width: 208px; outline: 0;" role="row">
+    <div class="spectrum-Card is-selected" role="rowheader" tabindex="0">
+      <div class="spectrum-Card-coverPhoto" style="background-image: url(img/example-card-portrait.jpg)"></div>
+      <hr class="spectrum-Divider spectrum-Divider--sizeS spectrum-Card-divider">
+      <div class="spectrum-Card-body">
+        <div class="spectrum-Card-header">
+          <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Card Title</div>
+          <div class="spectrum-Card-actionButton">
+            <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+              <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+                <use xlink:href="#spectrum-icon-18-More" />
+              </svg>
+            </button>
+          </div>
+        </div>
+        <div class="spectrum-Card-content">
+          <div class="spectrum-Card-description">Optional description; should be kept to one or two lines</div>
+        </div>
+      </div>
+      <div class="spectrum-Card-footer">
+        Footer
+      </div>
+      <div class="spectrum-QuickActions spectrum-Card-quickActions">
+        <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+          <input type="checkbox" class="spectrum-Checkbox-input" title="Select" tabindex="-1" checked>
+          <span class="spectrum-Checkbox-box">
+            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Checkmark100" />
+            </svg>
+            <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Dash100" />
+            </svg>
+          </span>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+

Quiet
Contribution

A quiet card for an image.

+
+
+
+
+ +
+
+
+
+
Name
+
+ +
+
+
+
10/15/18
+
+
+
+
+ + + + + +
+
+
+
+
Show markup
<div style="height: 264px;">
+  <div class="spectrum-Card spectrum-Card--quiet" tabindex="0" role="figure" style="width: 200px;">
+    <div class="spectrum-Card-preview">
+      <div class="spectrum-Asset">
+        <img class="spectrum-Asset-image" src="img/example-ava.jpg" style="max-width: 75%; max-height: 75%; object-fit: contain;">
+      </div>
+    </div>
+    <div class="spectrum-Card-body">
+      <div class="spectrum-Card-header">
+        <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Name</div>
+        <div class="spectrum-Card-actionButton">
+          <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-More" />
+            </svg>
+          </button>
+        </div>
+      </div>
+      <div class="spectrum-Card-content">
+        <div class="spectrum-Card-description">10/15/18</div>
+      </div>
+    </div>
+    <div class="spectrum-QuickActions spectrum-Card-quickActions">
+      <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+        <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="">
+        <span class="spectrum-Checkbox-box">
+          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Checkmark100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Dash100" />
+          </svg>
+        </span>
+      </div>
+    </div>
+  </div>
+</div>
+

Quiet (selected)
Contribution

+
+
+
+ +
+
+
+
+
Name
+
+ +
+
+
+
10/15/18
+
+
+
+
+ + + + + +
+
+
+
+
Show markup
<div style="height: 264px;">
+  <div class="spectrum-Card spectrum-Card--quiet is-selected" tabindex="0" role="figure" style="width: 200px;">
+    <div class="spectrum-Card-preview">
+      <div class="spectrum-Asset">
+        <img class="spectrum-Asset-image" src="img/example-ava.jpg" style="max-width: 75%; max-height: 75%; object-fit: contain;">
+      </div>
+    </div>
+    <div class="spectrum-Card-body">
+      <div class="spectrum-Card-header">
+        <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Name</div>
+        <div class="spectrum-Card-actionButton">
+          <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-More" />
+            </svg>
+          </button>
+        </div>
+      </div>
+      <div class="spectrum-Card-content">
+        <div class="spectrum-Card-description">10/15/18</div>
+      </div>
+    </div>
+    <div class="spectrum-QuickActions spectrum-Card-quickActions">
+      <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+        <input type="checkbox" class="spectrum-Checkbox-input" title="Select" checked>
+        <span class="spectrum-Checkbox-box">
+          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Checkmark100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Dash100" />
+          </svg>
+        </span>
+      </div>
+    </div>
+  </div>
+</div>
+

Quiet (focused)
Contribution

+
+
+
+ +
+
+
+
+
Name
+
+ +
+
+
+
10/15/18
+
+
+
+
+ + + + + +
+
+
+
+
Show markup
<div style="height: 264px;">
+  <div class="spectrum-Card spectrum-Card--quiet is-focused" tabindex="0" role="figure" style="width: 200px;">
+    <div class="spectrum-Card-preview">
+      <div class="spectrum-Asset">
+        <img class="spectrum-Asset-image" src="img/example-ava.jpg" style="max-width: 75%; max-height: 75%; object-fit: contain;">
+      </div>
+    </div>
+    <div class="spectrum-Card-body">
+      <div class="spectrum-Card-header">
+        <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">Name</div>
+        <div class="spectrum-Card-actionButton">
+          <button aria-haspopup="true" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet">
+            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-More" />
+            </svg>
+          </button>
+        </div>
+      </div>
+      <div class="spectrum-Card-content">
+        <div class="spectrum-Card-description">10/15/18</div>
+      </div>
+    </div>
+    <div class="spectrum-QuickActions spectrum-Card-quickActions">
+      <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+        <input type="checkbox" class="spectrum-Checkbox-input" title="Select">
+        <span class="spectrum-Checkbox-box">
+          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Checkmark100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Dash100" />
+          </svg>
+        </span>
+      </div>
+    </div>
+  </div>
+</div>
+

Quiet (file)
Contribution

A quiet card for a file asset.

+
+
+
+
+ + + + +
+
+
+
+
FileName
+
+
+
PDF
+
+
+
+
+ + + + + +
+
+
+
+
Show markup
<div style="height: 264px;">
+  <div class="spectrum-Card spectrum-Card--quiet" tabindex="0" role="figure" style="width: 200px;">
+    <div class="spectrum-Card-preview">
+      <div class="spectrum-Asset">
+        <svg viewBox="0 0 128 128" class="spectrum-Asset-file">
+          <path class="spectrum-Asset-fileBackground" d="M24,126c-5.5,0-10-4.5-10-10V12c0-5.5,4.5-10,10-10h61.5c2.1,0,4.1,0.8,5.6,2.3l20.5,20.4c1.5,1.5,2.4,3.5,2.4,5.7V116c0,5.5-4.5,10-10,10H24z"></path>
+          <path class="spectrum-Asset-fileOutline" d="M113.1,23.3L92.6,2.9C90.7,1,88.2,0,85.5,0H24c-6.6,0-12,5.4-12,12v104c0,6.6,5.4,12,12,12h80c6.6,0,12-5.4,12-12V30.4C116,27.8,114.9,25.2,113.1,23.3z M90,6l20.1,20H92c-1.1,0-2-0.9-2-2V6z M112,116c0,4.4-3.6,8-8,8H24c-4.4,0-8-3.6-8-8V12c0-4.4,3.6-8,8-8h61.5c0.2,0,0.3,0,0.5,0v20c0,3.3,2.7,6,6,6h20c0,0.1,0,0.3,0,0.4V116z"></path>
+        </svg>
+      </div>
+    </div>
+    <div class="spectrum-Card-body">
+      <div class="spectrum-Card-header">
+        <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">FileName</div>
+      </div>
+      <div class="spectrum-Card-content">
+        <div class="spectrum-Card-description">PDF</div>
+      </div>
+    </div>
+    <div class="spectrum-QuickActions spectrum-Card-quickActions">
+      <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+        <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="">
+          <span class="spectrum-Checkbox-box">
+          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Checkmark100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Dash100" />
+          </svg>
+        </span>
+      </div>
+    </div>
+  </div>
+</div>
+

Quiet (folder)
Contribution

A quiet card for a folder asset.

+
+
+
+
+ + + + +
+
+
+
+
FolderName
+
+
+
Folder
+
+
+
+
+ + + + + +
+
+
+
+
Show markup
<div style="height: 264px;">
+  <div class="spectrum-Card spectrum-Card--quiet" tabindex="0" role="figure" style="width: 200px;">
+    <div class="spectrum-Card-preview">
+      <div class="spectrum-Asset">
+        <svg viewBox="0 0 32 32" class="spectrum-Asset-folder">
+          <path class="spectrum-Asset-folderBackground" d="M3,29.5c-1.4,0-2.5-1.1-2.5-2.5V5c0-1.4,1.1-2.5,2.5-2.5h10.1c0.5,0,1,0.2,1.4,0.6l3.1,3.1c0.2,0.2,0.4,0.3,0.7,0.3H29c1.4,0,2.5,1.1,2.5,2.5v18c0,1.4-1.1,2.5-2.5,2.5H3z"></path>
+          <path class="spectrum-Asset-folderOutline" d="M29,6H18.3c-0.1,0-0.2,0-0.4-0.2l-3.1-3.1C14.4,2.3,13.8,2,13.1,2H3C1.3,2,0,3.3,0,5v22c0,1.6,1.3,3,3,3h26c1.7,0,3-1.4,3-3V9C32,7.3,30.7,6,29,6z M31,27c0,1.1-0.9,2-2,2H3c-1.1,0-2-0.9-2-2V7h28c1.1,0,2,0.9,2,2V27z"></path>
+        </svg>
+      </div>
+    </div>
+    <div class="spectrum-Card-body">
+      <div class="spectrum-Card-header">
+        <div class="spectrum-Card-title">FolderName</div>
+      </div>
+      <div class="spectrum-Card-content">
+        <div class="spectrum-Card-description">Folder</div>
+      </div>
+    </div>
+    <div class="spectrum-QuickActions spectrum-Card-quickActions">
+      <div class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+        <input type="checkbox" class="spectrum-Checkbox-input" title="Select" value="">
+        <span class="spectrum-Checkbox-box">
+          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Checkmark100" />
+          </svg>
+          <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-css-icon-Dash100" />
+          </svg>
+        </span>
+      </div>
+    </div>
+  </div>
+</div>
+

Horizontal
Contribution

A card with a horizontal layout.

+
+
+ +
+
+
+
FileName
+
+
+
PDF
+
+
+
+
Show markup
<div class="spectrum-Card spectrum-Card--horizontal" tabindex="0" role="figure">
+  <div class="spectrum-Card-preview">
+    <svg class="spectrum-Icon spectrum-Icon--sizeXXL" aria-hidden="true" focusable="false" role="img">
+      <use xlink:href="#spectrum-icon-18-FileTxt" />
+    </svg>
+  </div>
+  <div class="spectrum-Card-body">
+    <div class="spectrum-Card-header">
+      <div class="spectrum-Card-title spectrum-Heading spectrum-Heading--sizeXS">FileName</div>
+    </div>
+    <div class="spectrum-Card-content">
+      <div class="spectrum-Card-description">PDF</div>
+    </div>
+  </div>
+</div>
+

Migration Guide


New Action Button markup

+

Action Button requires .spectrum-ActionButton-icon class on icons nested inside of Action Button.

+

Change workflow icon size to medium

+

Please replace .spectrum-Icon--sizeS with .spectrum-Icon--sizeM.

+

Use Spectrum Heading for title

+

To make the card component more flexible, products can have more fine control over the typography by using the Heading component with its corresponding sizes. To be more consistent with previous card designs you can use the following:

+
    +
  • Add the spectrum-Heading and spectrum-Heading--sizeXS or spectrum-Heading--sizeXXS to the spectrum-Card-title element.
  • +
+

Subtitle deprecated

+

For this first Card iteration, the subtitle option has been removed.

+

Small Card deprecated

+

Card only has one size moving forward and the minimum width has been updated to allow for smaller card widths if needed. There is no longer a need for the spectrum-Card--sizeM class on this component.

+

\ No newline at end of file diff --git a/checkbox.html b/checkbox.html new file mode 100644 index 0000000000..cd1fa1d1cc --- /dev/null +++ b/checkbox.html @@ -0,0 +1,1179 @@ +Checkbox - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Checkbox

Component status
Contribution
Current version@spectrum-css/checkbox@9.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/checkbox@10.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • Checkboxes allow users to select multiple items from a list of individual items, or mark one individual item as selected.
  • +
  • Checkboxes should not be used on their own, they should always be used within a FieldGroup.
  • +
  • Invalid checkboxes are indicated with an alert HelpText when included in a Fieldgroup.
  • +
+

Variants


Standard
Contribution

+
+

Default

+ + + +
+ + + +
+ + +
+ +
+

Invalid

+ + +
+ + + +
+ + +
+ +
+

Disabled

+ + + +
+ + + +
+ + +
+ +
+

Read-only

+ + + +
+ + + +
+ + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Invalid</h4>
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-invalid">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-invalid">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-invalid is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-disabled">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-3" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-disabled">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-4" disabled checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-disabled is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-5" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Read-only</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-disabled is-readOnly">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-3" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-disabled is-readOnly">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-4" disabled checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-disabled is-indeterminate is-readOnly">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-5" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+</div>
+

Emphasized
Contribution

+
+

Default

+ + + +
+ + + +
+ + +
+ +
+

Invalid

+ + +
+ + + +
+ + +
+ +
+

Disabled

+ + + +
+ + + +
+ + +
+ +
+

Read-only

+ + + +
+ + + +
+ + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Invalid</h4>
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--quiet is-invalid">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-invalid">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-invalid is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-disabled">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-3" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-disabled">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-4" disabled checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-disabled is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-5" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Read-only</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-disabled is-readOnly">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-3" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-disabled is-readOnly">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-4" disabled checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized is-disabled is-indeterminate is-readOnly">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-5" disabled>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+  </div>
+</div>
+

T-Shirt Sizes
Contribution

+
+

S

+ + + +
+ + + +
+ + + +
+
+

M (default)

+ + + +
+ + + +
+ + + +
+ +
+

L

+ + + +
+ + + +
+ + + + + +
+ +
+

XL

+ + + +
+ + + +
+ + + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeS">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark50 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark50" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash50 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash50" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br/>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeS">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark50 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark50" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash50 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash50" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br />
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeS is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark50 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark50" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash50 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash50" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark75 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark75" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash75 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash75" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br/>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark75 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark75" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash75 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash75" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br/>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeM is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark75 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark75" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash75 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash75" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeL">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br/>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeL">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br />
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeL is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark100" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash100" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+
+
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeXL">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark200 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark200" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash200 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash200" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br/>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeXL">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark200 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark200" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash200 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash200" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+    <br/>
+
+    <label class="spectrum-Checkbox spectrum-Checkbox--sizeXL is-indeterminate">
+      <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" checked>
+      <span class="spectrum-Checkbox-box">
+        <svg class="spectrum-Icon spectrum-UIIcon-Checkmark200 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Checkmark200" />
+        </svg>
+        <svg class="spectrum-Icon spectrum-UIIcon-Dash200 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Dash200" />
+        </svg>
+      </span>
+      <span class="spectrum-Checkbox-label">Checkbox</span>
+    </label>
+
+  </div>
+</div>
+

Wrapping behavior
Contribution

+
Show markup
<label class="spectrum-Checkbox spectrum-Checkbox--sizeM">
+  <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0">
+  <span class="spectrum-Checkbox-box">
+    <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Checkmark100" />
+    </svg>
+    <svg class="spectrum-Icon spectrum-UIIcon-Dash100 spectrum-Checkbox-partialCheckmark" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Dash100" />
+    </svg>
+  </span>
+  <span class="spectrum-Checkbox-label">Checkbox with an extraordinarily long label please don't do this but if you did it should wrap text when it gets longer than the container which contains the checkbox which has an unacceptably long label</span>
+</label>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Quiet and emphasized

+

Spectrum has chosen the variant previously known as quiet to be the default and has added an emphasized variant with the same styles as the previous default.
+If you were using the quiet variant, the .spectrum-Checkbox--quiet class is no longer required and can be removed.
+If you need a switch to look like it did before this change, add .spectrum-Checkbox--emphasized.

+

T-shirt sizing

+

Checkbox now supports t-shirt sizing and requires that you specify the size by adding a .spectrum-Checkbox--size* class.
+Using the classes .spectrum-Checkbox .spectrum-Checkbox--sizeM will get result in the previous default checkbox size.

+

\ No newline at end of file diff --git a/clearbutton.html b/clearbutton.html new file mode 100644 index 0000000000..cdcf609e60 --- /dev/null +++ b/clearbutton.html @@ -0,0 +1,178 @@ +Clear button - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Clear button

Component status
Contribution
Current version@spectrum-css/clearbutton@6.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/clearbutton@7.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


Used in search and tags.

+

Variants


Sizing
Contribution

+
+

S

+ + +
+
+

M (default)

+ + +
+ +
+

L

+ + +
+ +
+

XL

+ + +
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <button class="spectrum-ClearButton spectrum-ClearButton--sizeS" aria-label="Clear textfield">
+      <div class="spectrum-ClearButton-fill">
+        <svg class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross75" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross75" />
+        </svg>
+      </div>
+    </button>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <button class="spectrum-ClearButton spectrum-ClearButton--sizeM" aria-label="Clear textfield">
+      <div class="spectrum-ClearButton-fill">
+        <svg class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross100" />
+        </svg>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <button class="spectrum-ClearButton spectrum-ClearButton--sizeL" aria-label="Clear textfield">
+      <div class="spectrum-ClearButton-fill">
+        <svg class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross200" />
+        </svg>
+      </div>
+    </button>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <button class="spectrum-ClearButton spectrum-ClearButton--sizeXL" aria-label="Clear textfield">
+      <div class="spectrum-ClearButton-fill">
+        <svg class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross300" />
+        </svg>
+      </div>
+    </button>
+  </div>
+</div>
+

Disabled
Contribution

+
Show markup
<button class="spectrum-ClearButton spectrum-ClearButton--sizeM" disabled>
+  <div class="spectrum-ClearButton-fill">
+    <svg class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Cross100" />
+    </svg>
+  </div>
+</button>
+

Quiet
Contribution

+
Show markup
<button class="spectrum-ClearButton spectrum-ClearButton--sizeM spectrum-ClearButton--quiet" aria-label="Clear textfield">
+  <div class="spectrum-ClearButton-fill">
+    <svg class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+      <use xlink:href="#spectrum-css-icon-Cross100" />
+    </svg>
+  </div>
+</button>
+

Overbackground
Contribution

+ +
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); padding: 15px 20px;">
+  <button class="spectrum-ClearButton spectrum-ClearButton--sizeM spectrum-ClearButton--overBackground" aria-label="Clear textfield">
+    <div class="spectrum-ClearButton-fill">
+      <svg class="spectrum-ClearButton-icon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+        <use xlink:href="#spectrum-css-icon-Cross100" />
+      </svg>
+    </div>
+  </button>
+</div>
+

Migration Guide


New markup

+

In order to support Express, ClearButton has new markup that includes an inner .spectrum-ClearButton-fill element.

+

T-shirt sizing

+

ClearButton now supports t-shirt sizing and requires that you specify the size of the clear button by adding a .spectrum-ClearButton--size* class.

+

Also, use the correct icon size for cross icons:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
T-shirt SizeIcon Size
spectrum-ClearButton--sizeSspectrum-css-icon-Cross75
spectrum-ClearButton--sizeMspectrum-css-icon-Cross100
spectrum-ClearButton--sizeLspectrum-css-icon-Cross200
spectrum-ClearButton--sizeXLspectrum-css-icon-Cross300
+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/closebutton.html b/closebutton.html new file mode 100644 index 0000000000..ffa3147c8b --- /dev/null +++ b/closebutton.html @@ -0,0 +1,367 @@ +Close button - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Close button

Component status
Contribution
Current version@spectrum-css/closebutton@5.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/closebutton@6.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


A button used to close or dismiss components.

+

Variants


Icon Size - Regular
Contribution

+
+

S

+ +
+ +
+
+
+

M (default)

+ +
+ +
+
+ +
+

L

+ +
+ +
+
+ +
+

XL

+ +
+ +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeS">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross75" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross75" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeM">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross100" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross100" />
+        </svg>
+      </button>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeL">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross200" />
+        </svg>
+      </button>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeXL">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross300" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Icon Size - Large
Contribution

Close button supports different sized icons. For cases where you need large icons, you should use the following icons:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Close button classnameUI icon classname
.spectrum-CloseButton--sizeS.spectrum-UIIcon-Cross200
.spectrum-CloseButton--sizeM.spectrum-UIIcon-Cross300
.spectrum-CloseButton--sizeL.spectrum-UIIcon-Cross400
.spectrum-CloseButton--sizeXL.spectrum-UIIcon-Cross500
+
+
+

S

+ +
+ +
+
+
+

M (default)

+ +
+ +
+
+ +
+

L

+ +
+ +
+
+ +
+

XL

+ +
+ +
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeS">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross200" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross200" />
+        </svg>
+      </button>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M (default)</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeM">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross300" />
+        </svg>
+      </button>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeL">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross400" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross400" />
+        </svg>
+      </button>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeXL">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross500" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross500" />
+        </svg>
+      </button>
+    </div>
+  </div>
+</div>
+

Disabled
Contribution

+
Show markup
<button class="spectrum-CloseButton spectrum-CloseButton--sizeM" disabled>
+  <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+    <use xlink:href="#spectrum-css-icon-Cross300" />
+  </svg>
+</button>
+

Static White
Contribution

+
+
+

Default

+ +
+ +
+
+
+

Disabled

+ +
+ +
+
+
+
+
Show markup
<div style="background-color: rgb(15, 121, 125); color: rgb(15, 121, 125); padding: 15px 20px;">
+  <div class="spectrum-Examples" style="display: inline-flex; gap: 24px;">
+    <div class="spectrum-Examples-item">
+      <h4 style="color: white" class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross300" />
+        </svg>
+      </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 style="color: white" class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticWhite" disabled>
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross300" />
+        </svg>
+      </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Static Black
Contribution

+
+
+

Default

+ +
+ +
+
+
+

Disabled

+ +
+ +
+
+
+
+
Show markup
<div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px;">
+  <div class="spectrum-Examples" style="display: inline-flex; gap: 24px">
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticBlack">
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross300" />
+        </svg>
+      </button>
+      </div>
+    </div>
+    <div class="spectrum-Examples-item">
+      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+      <div class="spectrum-Examples-itemGroup">
+      <button class="spectrum-CloseButton spectrum-CloseButton--sizeM spectrum-CloseButton--staticBlack" disabled>
+        <svg class="spectrum-CloseButton-UIIcon spectrum-Icon spectrum-UIIcon-Cross300" focusable="false" aria-hidden="true">
+          <use xlink:href="#spectrum-css-icon-Cross300" />
+        </svg>
+      </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


Sizing

+

Close button supports different sized icons. By default, you should use the following icons:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Close button classnameUI icon classname
.spectrum-CloseButton--sizeS.spectrum-UIIcon-Cross75
.spectrum-CloseButton--sizeM.spectrum-UIIcon-Cross100
.spectrum-CloseButton--sizeL.spectrum-UIIcon-Cross200
.spectrum-CloseButton--sizeXL.spectrum-UIIcon-Cross300
+

Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/coachindicator.html b/coachindicator.html new file mode 100644 index 0000000000..3a11fac470 --- /dev/null +++ b/coachindicator.html @@ -0,0 +1,73 @@ +Coach indicator - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Coach indicator

Component status
Contribution
Current version@spectrum-css/coachindicator@2.1.2
ReleasedJune 13, 2024
Alpha@spectrum-css/coachindicator@1.0.0-alpha.3
ReleasedNovember 1, 2023
S2-foundations@spectrum-css/coachindicator@3.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Standard
Contribution

+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
Show markup
<div class="spectrum-CoachIndicator">
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+</div>
+
+<div class="spectrum-CoachIndicator spectrum-CoachIndicator--dark">
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+</div>
+
+<div class="spectrum-CoachIndicator spectrum-CoachIndicator--light">
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+</div>
+

Quiet
Contribution

+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
Show markup
<div class="spectrum-CoachIndicator spectrum-CoachIndicator--quiet">
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+</div>
+
+<div class="spectrum-CoachIndicator spectrum-CoachIndicator--dark spectrum-CoachIndicator--quiet">
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+</div>
+
+<div class="spectrum-CoachIndicator spectrum-CoachIndicator--light spectrum-CoachIndicator--quiet">
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+  <div class="spectrum-CoachIndicator-ring"></div>
+</div>
+

Migration Guide


    +
  • Coach Indicator is now a seperate component from Coach Mark
  • +
+

\ No newline at end of file diff --git a/coachmark.html b/coachmark.html new file mode 100644 index 0000000000..ff9dd9265a --- /dev/null +++ b/coachmark.html @@ -0,0 +1,399 @@ +Coach mark - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Coach mark

Component status
Contribution
Current version@spectrum-css/coachmark@7.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/coachmark@8.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Variants


Standard
Contribution

+
+
+
+
Try playing with a pixel brush
+
+
+ Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke. +
+ +
+
+
+ +
+
+
+
+
Try playing with a pixel brush
+
+ + + + + +
+
+ +
+
+
+
+ Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke. +
+ +
+
+
+
Show markup
<div class="spectrum-Examples-item" style="height: 300px; width: auto;">
+  <div class="spectrum-CoachMark">
+    <div class="spectrum-Popover is-open">
+      <div class="spectrum-CoachMark-header">
+        <div class="spectrum-CoachMark-title">Try playing with a pixel brush</div>
+      </div>
+      <div class="spectrum-CoachMark-content">
+        Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke.
+      </div>
+      <div class="spectrum-CoachMark-footer">
+      <div class="spectrum-CoachMark-step"><bdo dir="ltr">2 of 8</bdo></div>
+        <div class="spectrum-ButtonGroup spectrum-CoachMark-buttongroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary">
+            <span class="spectrum-Button-label">Previous</span>
+          </button>
+
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+
+        <div class="spectrum-ButtonGroup spectrum-ButtonGroup--sizeS spectrum-CoachMark-buttongroup--mobile">
+          <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Previous">
+            <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft75 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron75"></use>
+            </svg>
+          <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+
+      </div>
+    </div>
+  </div>
+</div>
+
+<div class="spectrum-Examples-item" style="height: 250px; width: auto;">
+  <div class="spectrum-CoachMark">
+    <div class="spectrum-Popover is-open">
+      <div class="spectrum-CoachMark-header">
+        <div class="spectrum-CoachMark-title">Try playing with a pixel brush</div>
+        <div class="spectrum-CoachMark-action-menu">
+
+          <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-CoachMark-menu is-selected">
+            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-More" />
+            </svg>
+          </button>
+
+          <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionButton--quiet spectrum-CoachMark-menu--mobile is-selected">
+            <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-More" />
+            </svg>
+          </button>
+
+          <br>
+          <div class="spectrum-Popover spectrum-Popover--bottom is-open">
+            <ul class="spectrum-Menu" role="menu">
+              <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+                <span class="spectrum-Menu-itemLabel">Skip tour</span>
+              </li>
+              <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+                <span class="spectrum-Menu-itemLabel">Reset tour</span>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+      <div class="spectrum-CoachMark-content">
+        Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke.
+      </div>
+      <div class="spectrum-CoachMark-footer">
+      <div class="spectrum-CoachMark-step"><bdo dir="ltr">2 of 8</bdo></div>
+        <div class="spectrum-ButtonGroup spectrum-CoachMark-buttongroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary">
+            <span class="spectrum-Button-label">Previous</span>
+          </button>
+
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+
+        <div class="spectrum-ButtonGroup spectrum-ButtonGroup--sizeS spectrum-CoachMark-buttongroup--mobile">
+          <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Previous">
+            <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft75 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron75"></use>
+            </svg>
+          <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+

With Media
Contribution

+
+ +
+
+ +
+
+
Try playing with a pixel brush
+
+
+ Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke. +
+ + +
+
+
+ +
+
+
+
+ +
+
+
Try playing with a pixel brush
+
+ + + + + +
+
+ +
+
+
+
+ Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke. +
+ +
+
+
+
Show markup
<div class="spectrum-Examples-item" style="height: 500px; width: auto;">
+  <div class="spectrum-CoachMark">
+
+    <div class="spectrum-Popover is-open">
+      <div class="spectrum-CoachMark-image-wrapper">
+        <img class="spectrum-CoachMark-image" src="img/example-card-landscape.jpeg" />
+      </div>
+      <div class="spectrum-CoachMark-header">
+        <div class="spectrum-CoachMark-title">Try playing with a pixel brush</div>
+      </div>
+      <div class="spectrum-CoachMark-content">
+        Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke.
+      </div>
+
+      <div class="spectrum-CoachMark-footer">
+        <div class="spectrum-CoachMark-step"><bdo dir="ltr">2 of 8</bdo></div>
+        <div class="spectrum-ButtonGroup spectrum-CoachMark-buttongroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary">
+            <span class="spectrum-Button-label">Previous</span>
+          </button>
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+        <div class="spectrum-ButtonGroup spectrum-ButtonGroup--sizeS spectrum-CoachMark-buttongroup--mobile">
+          <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Previous">
+            <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft75 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron75"></use>
+            </svg>
+          <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+
+<div class="spectrum-Examples-item" style="height: 500px; width: auto;">
+  <div class="spectrum-CoachMark">
+    <div class="spectrum-Popover is-open">
+      <div class="spectrum-CoachMark-image-wrapper">
+        <img class="spectrum-CoachMark-image" src="img/example-card-landscape.jpeg" />
+      </div>
+      <div class="spectrum-CoachMark-header">
+        <div class="spectrum-CoachMark-title">Try playing with a pixel brush</div>
+        <div class="spectrum-CoachMark-action-menu">
+
+          <button class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-CoachMark-menu is-selected">
+            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-More" />
+            </svg>
+          </button>
+
+          <button class="spectrum-ActionButton spectrum-ActionButton--sizeS spectrum-ActionButton--quiet spectrum-CoachMark-menu--mobile is-selected">
+            <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-ActionButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-icon-18-More" />
+            </svg>
+          </button>
+
+          <br>
+          <div class="spectrum-Popover spectrum-Popover--bottom is-open">
+            <ul class="spectrum-Menu" role="menu">
+              <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+                <span class="spectrum-Menu-itemLabel">Skip tour</span>
+              </li>
+              <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
+                <span class="spectrum-Menu-itemLabel">Reset tour</span>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+      <div class="spectrum-CoachMark-content">
+        Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke.
+      </div>
+      <div class="spectrum-CoachMark-footer">
+      <div class="spectrum-CoachMark-step"><bdo dir="ltr">2 of 8</bdo></div>
+        <div class="spectrum-ButtonGroup spectrum-CoachMark-buttongroup">
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary">
+            <span class="spectrum-Button-label">Previous</span>
+          </button>
+
+          <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+
+        <div class="spectrum-ButtonGroup spectrum-ButtonGroup--sizeS spectrum-CoachMark-buttongroup--mobile">
+          <button class="spectrum-Button spectrum-Button--outline spectrum-Button--secondary spectrum-Button--sizeS spectrum-Button--iconOnly" aria-label="Previous">
+            <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft75 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron75"></use>
+            </svg>
+          <button class="spectrum-Button spectrum-Button--sizeS spectrum-Button--outline spectrum-Button--primary">
+            <span class="spectrum-Button-label">Next</span>
+          </button>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+

Migration Guide


    +
  • Coach Mark is now a seperate component from Coach Indicator
  • +
+

\ No newline at end of file diff --git a/colorarea.html b/colorarea.html new file mode 100644 index 0000000000..7ce2f4917f --- /dev/null +++ b/colorarea.html @@ -0,0 +1,86 @@ +Color area - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Color area

Component status
Contribution
Current version@spectrum-css/colorarea@5.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/colorarea@6.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • The .spectrum-ColorHandle should be moved with the transform: translate(x, y) style property as the sliders are dragged
  • +
  • Set the background style property of .spectrum-ColorArea-gradient to the gradient of the colors to be selected
  • +
  • Set the value attribute of .spectrum-ColorArea-slider[name=x] to the currently selected x value (i.e. saturation)
  • +
  • Set the value attribute of .spectrum-ColorArea-slider[name=y] to the currently selected y value (i.e. value)
  • +
  • Set the value of the ColorHandle component to the selected color
  • +
  • Marshall focus between the saturation and value sliders according to which keys are pressed (up/down for value, left/right for saturation)
  • +
+

Variants


Standard
Contribution

+
+ +
+
+ + + +
+ + + +
+
Show markup
<div class="spectrum-ColorArea">
+  <div class="spectrum-ColorArea-gradient" style="background: linear-gradient(to top, black 0%, rgba(0, 0, 0, 0) 100%), linear-gradient(to right, white 0%, rgba(0, 0, 0, 0) 100%), rgb(255, 0, 0);"></div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorArea-handle" style="--spectrum-picked-color: rgba(255, 0, 0);">
+    <div class="spectrum-ColorHandle-inner"></div>
+      <svg class="spectrum-ColorLoupe">
+        <!-- use ColorLoupe markup here -->
+      </svg>
+  </div>
+
+  <input type="range" class="spectrum-ColorArea-slider" name="x" aria-label="saturation" min="0" max="1" step="0.01">
+  <input type="range" class="spectrum-ColorArea-slider" name="y" aria-label="luminosity" min="0" max="1" step="0.01">
+</div>
+

Disabled
Contribution

+
+ +
+
+
+ + + +
+
Show markup
<div class="spectrum-ColorArea is-disabled">
+  <div class="spectrum-ColorArea-gradient" style="background: linear-gradient(to top, black 0%, rgba(0, 0, 0, 0) 100%), linear-gradient(to right, white 0%, rgba(0, 0, 0, 0) 100%), rgb(255, 0, 0);"></div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorArea-handle is-disabled">
+    <div class="spectrum-ColorHandle-color" style="background-color: rgb(255, 0, 0)"></div>
+  </div>
+
+  <input type="range" class="spectrum-ColorArea-slider" name="x" aria-label="saturation" min="0" max="1" step="0.01">
+  <input type="range" class="spectrum-ColorArea-slider" name="y" aria-label="luminosity" min="0" max="1" step="0.01">
+</div>
+

Custom Size
Contribution

+
+ +
+
+ + + +
+ + + +
+
Show markup
<div class="spectrum-ColorArea" style="--mod-colorarea-width: 80px; --mod-colorarea-height: 80px">
+  <div class="spectrum-ColorArea-gradient" style="background: linear-gradient(to top, black 0%, rgba(0, 0, 0, 0) 100%), linear-gradient(to right, white 0%, rgba(0, 0, 0, 0) 100%), rgb(255, 0, 0);"></div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorArea-handle">
+    <div class="spectrum-ColorHandle-inner" style="background-color: rgb(255, 0, 0)"></div>
+      <svg class="spectrum-ColorLoupe">
+        <!-- use ColorLoupe markup here -->
+      </svg>
+  </div>
+
+  <input type="range" class="spectrum-ColorArea-slider" name="x" aria-label="saturation" min="0" max="1" step="0.01">
+  <input type="range" class="spectrum-ColorArea-slider" name="y" aria-label="luminosity" min="0" max="1" step="0.01">
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


    +
  • canvas variant has been removed
  • +
+

\ No newline at end of file diff --git a/colorhandle.html b/colorhandle.html new file mode 100644 index 0000000000..569aabeb7f --- /dev/null +++ b/colorhandle.html @@ -0,0 +1,80 @@ +Color handle - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Color handle

Component status
Contribution
Current version@spectrum-css/colorhandle@8.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/colorhandle@9.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • Set the --spectrum-picked-color custom property to the CSS color value you want to show
  • +
  • Apply .is-open to .spectrum-ColorLoupe display the loupe
  • +
+

Variants


Standard
Contribution

+
+
+
Show markup
<div class="spectrum-ColorHandle spectrum-OpacityCheckerboard" style="--spectrum-picked-color: rgba(255, 0, 0, 0.5); position: absolute; inset-block: 50%; inset-inline: 50%;">
+  <div class="spectrum-ColorHandle-inner"></div>
+</div>
+

Disabled
Contribution

+
+
+
Show markup
<div class="spectrum-ColorHandle spectrum-OpacityCheckerboard is-disabled" style="--spectrum-picked-color: rgba(255, 0, 0, 0.5); position: absolute; inset-block: 50%; inset-inline: 50%">
+  <div class="spectrum-ColorHandle-inner"></div>
+</div>
+

Open
Contribution

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
Show markup
<div class="spectrum-ColorHandle spectrum-OpacityCheckerboard" style="--spectrum-picked-color: rgba(255, 0, 0, 0.5); position: absolute; inset-block: 75%; inset-inline: 50%">
+  <div class="spectrum-ColorHandle-inner"></div>
+  <svg class="spectrum-ColorLoupe is-open">
+    <defs>
+      <path
+        id="loupe-path"
+        d="M 22 60 C 18.2 56 14.6 51.7 11.3 47.2 C 8.3 43.3 5.7 39.1 3.5 34.7 C 1.2 30 0 25.9 0 22.4 C 0 17.2 1.8 12.2 5 8.2 C 8.2 4.2 12.7 1.5 17.6 0.4 C 22.6 -0.6 27.8 0.2 32.3 2.6 C 36.8 5 40.3 8.9 42.3 13.7 C 43.4 16.4 44 19.4 44 22.4 C 44 25.9 42.8 30 40.5 34.7 C 38.3 39.1 35.7 43.3 32.7 47.3 C 29.4 51.7 25.8 56 22 60 Z"
+        transform="translate(2, 2)"
+      />
+      <mask id="loupe-mask">
+        <rect x="0" y="0" height="100" width="100" fill="white"/>
+        <use xlink:href="#loupe-path" fill="black" />
+      </mask>
+      <pattern id="checkerboard-primary" patternUnits="userSpaceOnUse" width="16" height="16" class="spectrum-ColorLoupe-checkerboard-pattern">
+        <rect x="0" y="0" width="8" height="8"/>
+        <rect x="8" y="8" width="8" height="8"/>
+      </pattern>
+      <pattern id="checkerboard-secondary" patternUnits="userSpaceOnUse" width="20" height="20" class="spectrum-ColorLoupe-checkerboard-pattern">
+        <rect x="0" y="0" width="10" height="10"/>
+        <rect x="10" y="10" width="10" height="10"/>
+      </pattern>
+    </defs>
+    <g>
+      <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-background" />
+      <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-fill" />
+      <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-inner-border" />
+      <use xlink:href="#loupe-path" mask="url(#loupe-mask)" class="spectrum-ColorLoupe-outer-border" />
+    </g>
+  </svg>
+</div>
+

Migration Guide


Remove focus-ring class

+

We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

+

\ No newline at end of file diff --git a/colorloupe.html b/colorloupe.html new file mode 100644 index 0000000000..4cc2f4ffe8 --- /dev/null +++ b/colorloupe.html @@ -0,0 +1,61 @@ +Color loupe - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Color loupe

Component status
Contribution
Current version@spectrum-css/colorloupe@5.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/colorloupe@6.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • Set the --spectrum-picked-color custom property to the CSS color value you want to show
  • +
  • Apply .is-open to display the loupe
  • +
  • Color Loupe does not have a disabled style; do not show it when the handle its attached to is disabled.
  • +
+

Variants


Standard
Contribution

+ + + + + + + + + + + + + + + + + + + + + + +
Show markup
<svg class="spectrum-ColorLoupe is-open" style="--spectrum-picked-color: rgba(255, 0, 0, 0.5); position: absolute; inset-block-start: 25%; inset-inline-start: 50%;">
+  <defs>
+    <path
+      id="loupe-path"
+      d="M 22 60 C 18.2 56 14.6 51.7 11.3 47.2 C 8.3 43.3 5.7 39.1 3.5 34.7 C 1.2 30 0 25.9 0 22.4 C 0 17.2 1.8 12.2 5 8.2 C 8.2 4.2 12.7 1.5 17.6 0.4 C 22.6 -0.6 27.8 0.2 32.3 2.6 C 36.8 5 40.3 8.9 42.3 13.7 C 43.4 16.4 44 19.4 44 22.4 C 44 25.9 42.8 30 40.5 34.7 C 38.3 39.1 35.7 43.3 32.7 47.3 C 29.4 51.7 25.8 56 22 60 Z"
+      transform="translate(2, 2)"
+    />
+    <mask id="loupe-mask">
+      <rect x="0" y="0" height="100" width="100" fill="white"/>
+      <use xlink:href="#loupe-path" fill="black" />
+    </mask>
+    <pattern id="checkerboard-primary" patternUnits="userSpaceOnUse" width="16" height="16" class="spectrum-ColorLoupe-checkerboard-pattern">
+      <rect x="0" y="0" width="8" height="8"/>
+      <rect x="8" y="8" width="8" height="8"/>
+    </pattern>
+    <pattern id="checkerboard-secondary" patternUnits="userSpaceOnUse" width="20" height="20" class="spectrum-ColorLoupe-checkerboard-pattern">
+      <rect x="0" y="0" width="10" height="10"/>
+      <rect x="10" y="10" width="10" height="10"/>
+    </pattern>
+  </defs>
+  <g>
+    <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-background" />
+    <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-fill" />
+    <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-inner-border" />
+    <use xlink:href="#loupe-path" mask="url(#loupe-mask)" class="spectrum-ColorLoupe-outer-border" />
+  </g>
+</svg>
+

\ No newline at end of file diff --git a/colorslider.html b/colorslider.html new file mode 100644 index 0000000000..44639b4450 --- /dev/null +++ b/colorslider.html @@ -0,0 +1,313 @@ +Color slider - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Color slider

Component status
Contribution
Current version@spectrum-css/colorslider@6.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/colorslider@7.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • Set the color of the nested Color handle component to match Color slider’s currently selected color using its custom property: --spectrum-picked-color.
  • +
  • The .spectrum-ColorHandle should be moved with inset-inline-* (horizontal) or inset-block-* (vertical) style properties as the slider is dragged.
  • +
  • Ensure that you set the min and max attributes of the .spectrum-ColorSlider-slider input to the corresponding scale (i.e. 0 to 1 for a, 0 to 255 for r, etc).
  • +
  • Ensure that you set the step attribute of the .spectrum-ColorSlider-slider input appropriately (i.e. 0.1 for a, s, v or 1 and h, r, etc).
  • +
  • Set the background style property of .spectrum-ColorSlider-gradient to the gradient of the colors to be selected. The CSS will automatically reverse the gradient element horizontally when using a RTL (right-to-left) base direction.
  • +
  • Alternatively, provide a <canvas> or <img> element with the gradient you want to use and apply the .spectrum-ColorSlider-gradient class.
  • +
+

Variants


Standard
Contribution

+ + +
+
+ + + +
+ + +
+
Show markup
<div class="spectrum-ColorSlider">
+  <div class="spectrum-ColorSlider-checkerboard" role="presentation">
+    <div class="spectrum-ColorSlider-gradient" role="presentation" style="background: linear-gradient(to right, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%);"></div>
+  </div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorSlider-handle" style="--spectrum-picked-color: rgb(255, 0, 0)">
+    <div class="spectrum-ColorHandle-inner"></div>
+    <svg class="spectrum-ColorLoupe">
+      <!-- use ColorLoupe markup here -->
+    </svg>
+  </div>
+
+  <input type="range" class="spectrum-ColorSlider-slider" min="0" max="100" step="1">
+</div>
+

Alpha
Contribution

+ + +
+
+ + + +
+ + +
+
Show markup
<div class="spectrum-ColorSlider">
+  <div class="spectrum-OpacityCheckerboard spectrum-ColorSlider-checkerboard" role="presentation">
+    <div class="spectrum-ColorSlider-gradient" role="presentation" style="background: linear-gradient(to right, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 100%);"></div>
+  </div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorSlider-handle" style="--spectrum-picked-color: rgba(0, 0, 0, 1)">
+    <div class="spectrum-ColorHandle-inner"></div>
+    <svg class="spectrum-ColorLoupe">
+      <!-- use ColorLoupe markup here -->
+    </svg>
+  </div>
+
+  <input type="range" class="spectrum-ColorSlider-slider" min="0" max="100" step="1">
+</div>
+

Disabled
Contribution

+ + +
+
+ + + +
+ + +
+
Show markup
<div class="spectrum-ColorSlider is-disabled">
+  <div class="spectrum-ColorSlider-checkerboard" role="presentation">
+    <div class="spectrum-ColorSlider-gradient" role="presentation" style="background: linear-gradient(to right, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%);"></div>
+  </div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorSlider-handle is-disabled" style="--spectrum-picked-color: rgb(255, 0, 0)">
+    <div class="spectrum-ColorHandle-inner"></div>
+    <svg class="spectrum-ColorLoupe">
+      <!-- use ColorLoupe markup here -->
+    </svg>
+  </div>
+
+  <input type="range" class="spectrum-ColorSlider-slider" min="0" max="100" step="1">
+</div>
+

Vertical
Contribution

+ + +
+
+ + + +
+ + +
+
Show markup
<div class="spectrum-ColorSlider spectrum-ColorSlider--vertical">
+  <div class="spectrum-ColorSlider-checkerboard" role="presentation">
+    <div class="spectrum-ColorSlider-gradient" role="presentation" style="background: linear-gradient(to bottom, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%);"></div>
+  </div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorSlider-handle" style="--spectrum-picked-color: rgb(255, 0, 0)">
+    <div class="spectrum-ColorHandle-inner"></div>
+    <svg class="spectrum-ColorLoupe">
+      <!-- use ColorLoupe markup here -->
+    </svg>
+  </div>
+
+  <input type="range" class="spectrum-ColorSlider-slider" min="0" max="100" step="1">
+</div>
+

Standard (with image)
Contribution

+ + +
+
+ + + + + + +
+ + +
+
Show markup
<div class="spectrum-ColorSlider">
+  <div class="spectrum-ColorSlider-checkerboard" role="presentation">
+    <img class="spectrum-ColorSlider-gradient" role="presentation" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAAeCAIAAAAkbYJ/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjNBMTBENzk4QkQzMTFFQThDOTdDN0QyNDNGMUNFMzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjNBMTBEN0E4QkQzMTFFQThDOTdDN0QyNDNGMUNFMzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGM0ExMEQ3NzhCRDMxMUVBOEM5N0M3RDI0M0YxQ0UzMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGM0ExMEQ3ODhCRDMxMUVBOEM5N0M3RDI0M0YxQ0UzMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrmQ8p4AAADbSURBVHja7JFLDsMgDAWNc/9L9h7YiQ0Gou66rGaUWHxegDDN5SPiEm/Uo+3S3LPWIzEy2uqu1Vh1dy3q5TM/ks38yprJbGdXK38GdHwVs94sAtXNas9h/LIK2zE11jlHrI5ksa9a5r+mdJ3E8i+OveISurzCvldr3V/dp91XQLTPvWYdgbFCr/tcp81BqW/bzKxLkz2epxLzPWglS7Y1ERX4axCMYEAwIBgQDAgGBAOCEQwIBgQDggHBgGBAMIIBwYBgQDAgGBAMCAYEIxgQDAgGBAOC4RduAQYALiXYw9aNKvcAAAAASUVORK5CYII=">
+  </div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorSlider-handle" style="--spectrum-picked-color: #ff00de">
+    <div class="spectrum-ColorHandle-inner"></div>
+    <svg class="spectrum-ColorLoupe">
+      <g transform="translate(1 1)">
+        <path class="spectrum-ColorLoupe-inner" d="M24,0A24,24,0,0,1,48,24c0,16.255-24,40-24,40S0,40.255,0,24A24,24,0,0,1,24,0Z" fill="#ff00de" />
+        <path class="spectrum-ColorLoupe-outer" d="M24,2A21.98,21.98,0,0,0,2,24c0,6.2,4,14.794,11.568,24.853A144.233,144.233,0,0,0,24,61.132,144.085,144.085,0,0,0,34.4,48.893C41.99,38.816,46,30.209,46,24A21.98,21.98,0,0,0,24,2m0-2A24,24,0,0,1,48,24c0,16.255-24,40-24,40S0,40.255,0,24A24,24,0,0,1,24,0Z"/>
+      </g>
+    </svg>
+  </div>
+
+  <input type="range" class="spectrum-ColorSlider-slider" min="0" max="100" step="1">
+</div>
+

Full example
Contribution

+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
Show markup
<div class="spectrum-ColorSlider" style="position: relative; top: 80px;">
+  <div class="spectrum-ColorSlider-checkerboard" role="presentation">
+    <div class="spectrum-ColorSlider-gradient" role="presentation" style="background: linear-gradient(to right, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%);"></div>
+  </div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorSlider-handle" style="--spectrum-picked-color: rgba(143, 254, 254, 1); inset-inline-start: 50%;">
+    <div class="spectrum-ColorHandle-inner"></div>
+    <svg class="spectrum-ColorLoupe is-open">
+      <defs>
+        <path
+          id="loupe-path"
+          d="M 22 60 C 18.2 56 14.6 51.7 11.3 47.2 C 8.3 43.3 5.7 39.1 3.5 34.7 C 1.2 30 0 25.9 0 22.4 C 0 17.2 1.8 12.2 5 8.2 C 8.2 4.2 12.7 1.5 17.6 0.4 C 22.6 -0.6 27.8 0.2 32.3 2.6 C 36.8 5 40.3 8.9 42.3 13.7 C 43.4 16.4 44 19.4 44 22.4 C 44 25.9 42.8 30 40.5 34.7 C 38.3 39.1 35.7 43.3 32.7 47.3 C 29.4 51.7 25.8 56 22 60 Z"
+          transform="translate(2, 2)"
+        />
+        <mask id="loupe-mask">
+          <rect x="0" y="0" height="100" width="100" fill="white"/>
+          <use xlink:href="#loupe-path" fill="black" />
+        </mask>
+        <pattern id="checkerboard-primary" patternUnits="userSpaceOnUse" width="16" height="16" class="spectrum-ColorLoupe-checkerboard-pattern">
+          <rect x="0" y="0" width="8" height="8"/>
+          <rect x="8" y="8" width="8" height="8"/>
+        </pattern>
+        <pattern id="checkerboard-secondary" patternUnits="userSpaceOnUse" width="20" height="20" class="spectrum-ColorLoupe-checkerboard-pattern">
+          <rect x="0" y="0" width="10" height="10"/>
+          <rect x="10" y="10" width="10" height="10"/>
+        </pattern>
+      </defs>
+      <g>
+        <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-background" />
+        <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-fill" />
+        <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-inner-border" />
+        <use xlink:href="#loupe-path" mask="url(#loupe-mask)" class="spectrum-ColorLoupe-outer-border" />
+      </g>
+    </svg>
+</div>
+
+  <input type="range" class="spectrum-ColorSlider-slider" min="0" max="100" step="1">
+</div>
+

Full example (alpha)
Contribution

+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
Show markup
<div class="spectrum-ColorSlider" style="position: relative; top: 80px;">
+  <div class="spectrum-OpacityCheckerboard spectrum-ColorSlider-checkerboard" role="presentation">
+    <div class="spectrum-ColorSlider-gradient" role="presentation" style="background: linear-gradient(to right, rgba(255, 0, 0, 0.5) 0%, rgba(255, 255, 0, 0.5) 17%, rgba(0, 255, 0, 0.5) 33%, rgba(0, 255, 255, 0.5) 50%, rgba(0, 0, 255, 0.5) 67%, rgba(255, 0, 255, 0.5) 83%, rgba(255, 0, 0, 0.5) 100%);"></div>
+  </div>
+
+  <div class="spectrum-ColorHandle spectrum-ColorSlider-handle" style="--spectrum-picked-color: rgba(143, 254, 254, 0.5); inset-inline-start: 50%">
+    <div class="spectrum-ColorHandle-inner"></div>
+    <svg class="spectrum-ColorLoupe is-open">
+      <defs>
+        <path
+          id="loupe-path"
+          d="M 22 60 C 18.2 56 14.6 51.7 11.3 47.2 C 8.3 43.3 5.7 39.1 3.5 34.7 C 1.2 30 0 25.9 0 22.4 C 0 17.2 1.8 12.2 5 8.2 C 8.2 4.2 12.7 1.5 17.6 0.4 C 22.6 -0.6 27.8 0.2 32.3 2.6 C 36.8 5 40.3 8.9 42.3 13.7 C 43.4 16.4 44 19.4 44 22.4 C 44 25.9 42.8 30 40.5 34.7 C 38.3 39.1 35.7 43.3 32.7 47.3 C 29.4 51.7 25.8 56 22 60 Z"
+          transform="translate(2, 2)"
+        />
+        <mask id="loupe-mask">
+          <rect x="0" y="0" height="100" width="100" fill="white"/>
+          <use xlink:href="#loupe-path" fill="black" />
+        </mask>
+        <pattern id="checkerboard-primary" patternUnits="userSpaceOnUse" width="16" height="16" class="spectrum-ColorLoupe-checkerboard-pattern">
+          <rect x="0" y="0" width="8" height="8"/>
+          <rect x="8" y="8" width="8" height="8"/>
+        </pattern>
+        <pattern id="checkerboard-secondary" patternUnits="userSpaceOnUse" width="20" height="20" class="spectrum-ColorLoupe-checkerboard-pattern">
+          <rect x="0" y="0" width="10" height="10"/>
+          <rect x="10" y="10" width="10" height="10"/>
+        </pattern>
+      </defs>
+      <g>
+        <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-background" />
+        <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-checkerboard-fill" />
+        <use xlink:href="#loupe-path" class="spectrum-ColorLoupe-inner-border" />
+        <use xlink:href="#loupe-path" mask="url(#loupe-mask)" class="spectrum-ColorLoupe-outer-border" />
+      </g>
+    </svg>
+</div>
+
+  <input type="range" class="spectrum-ColorSlider-slider" min="0" max="100" step="1">
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


    +
  • The component now supports a RTL (right-to-left) base direction with logical properties, and reverses the gradient.
  • +
  • Color slider examples no longer display a “canvas” variant.
  • +
+

\ No newline at end of file diff --git a/colorwheel.html b/colorwheel.html new file mode 100644 index 0000000000..ef5ac37f0e --- /dev/null +++ b/colorwheel.html @@ -0,0 +1,141 @@ +Color wheel - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Color wheel

Component status
Contribution
Current version@spectrum-css/colorwheel@4.1.1
ReleasedMay 22, 2024
S2-foundations@spectrum-css/colorwheel@5.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


    +
  • For a given rotation on the wheel, X, the .spectrum-ColorHandle should be moved by applying the style property transform: translate(${Y * Math.cos(X)}px, ${Y * Math.sin(X)}px), where Y is ((radius - .spectrum-colorwheel-track-width) / 2))
  • +
  • Set the value attribute of .spectrum-ColorWheel-value to the currently selected color (i.e. hsl(326, 100%, 50%))
  • +
  • Add .is-dragged when the handle is being dragged
  • +
  • To display with ColorArea inside of ColorWheel, add ColorArea to spectrum-ColorWheel-colorarea-container with style="--mod-colorarea-width: 70.1%; --mod-colorarea-height: 70.1%"
  • +
  • .spectrum-colorwheel-colorarea-container-size is hard coded to position the ColorArea within the ColorWheel using .spectrum-color-wheel-color-area-margin. Using JS container size can be calcaulted with Math.sqrt(2 * R * R), where R is the innerRadius as calcaulted for the clip paths
  • +
  • .spectrum-colorwheel-path, .spectrum-colorwheel-path-borders and .spectrum-colorwheel-colorarea-container are hard coded in CSS and include token values in custom CSS variables so they can be accessed with JS to and used to calcualte these values, const wheel = document.querySelector(".spectrum-ColorWheel-wheel") getComputedStyle(wheel).getPropertyValue('--track-width'))
  • +
+

Variants


Standard
Contribution

+
+
+
+
+
+
+
+
+ + + + + + +
+ +
+
Show markup
<div class="spectrum-ColorWheel">
+  <div class="spectrum-ColorWheel-inner">
+    <div class="spectrum-ColorWheel-colorarea-container"></div>
+  </div>
+  <div class="spectrum-ColorWheel-border">
+    <div class="spectrum-ColorWheel-wheel"></div>
+  </div>
+  <div class="spectrum-ColorHandle spectrum-ColorWheel-handle">
+    <div class="spectrum-ColorHandle-inner" style="background-color: rgb(255, 0, 0)"></div>
+    <svg class="spectrum-ColorLoupe">
+      <g transform="translate(1 1)">
+        <path class="spectrum-ColorLoupe-inner" d="M24,0A24,24,0,0,1,48,24c0,16.255-24,40-24,40S0,40.255,0,24A24,24,0,0,1,24,0Z" fill="rgb(255, 0, 0)" />
+        <path class="spectrum-ColorLoupe-outer" d="M24,2A21.98,21.98,0,0,0,2,24c0,6.2,4,14.794,11.568,24.853A144.233,144.233,0,0,0,24,61.132,144.085,144.085,0,0,0,34.4,48.893C41.99,38.816,46,30.209,46,24A21.98,21.98,0,0,0,24,2m0-2A24,24,0,0,1,48,24c0,16.255-24,40-24,40S0,40.255,0,24A24,24,0,0,1,24,0Z"/>
+      </g>
+    </svg>
+  </div>
+  <input type="range" class="spectrum-ColorWheel-slider" aria-label="hue" min="0" max="360" step="`">
+</div>
+

Disabled
Contribution

+
+
+
+
+
+
+
+
+ + + + + + +
+ +
+
Show markup
<div class="spectrum-ColorWheel is-disabled">
+  <div class="spectrum-ColorWheel-inner">
+    <div class="spectrum-ColorWheel-colorarea-container"></div>
+  </div>
+  <div class="spectrum-ColorWheel-border is-disabled">
+    <div class="spectrum-ColorWheel-wheel is-disabled"></div>
+  </div>
+  <div class="spectrum-ColorHandle spectrum-ColorWheel-handle is-disabled">
+    <div class="spectrum-ColorHandle-inner" style="background-color: rgb(255, 0, 0)"></div>
+    <svg class="spectrum-ColorLoupe">
+      <g transform="translate(1 1)">
+        <path class="spectrum-ColorLoupe-inner" d="M24,0A24,24,0,0,1,48,24c0,16.255-24,40-24,40S0,40.255,0,24A24,24,0,0,1,24,0Z" fill="rgb(255, 0, 0)" />
+        <path class="spectrum-ColorLoupe-outer" d="M24,2A21.98,21.98,0,0,0,2,24c0,6.2,4,14.794,11.568,24.853A144.233,144.233,0,0,0,24,61.132,144.085,144.085,0,0,0,34.4,48.893C41.99,38.816,46,30.209,46,24A21.98,21.98,0,0,0,24,2m0-2A24,24,0,0,1,48,24c0,16.255-24,40-24,40S0,40.255,0,24A24,24,0,0,1,24,0Z"/>
+      </g>
+    </svg>
+  </div>
+  <input type="range" class="spectrum-ColorWheel-slider" aria-label="hue" min="0" max="360" step="`">
+</div>
+

Standard with ColorArea
Contribution

+
+
+
+
+
+
+ + + +
+ + +
+
+
+
+
+
+
+
+ + + +
+ +
+
Show markup
<div class="spectrum-ColorWheel">
+  <div class="spectrum-ColorWheel-inner">
+    <div class="spectrum-ColorWheel-colorarea-container">
+      <div class="spectrum-ColorArea" style="--mod-colorarea-width: 70.1%; --mod-colorarea-height: 70.1%">
+        <div class="spectrum-ColorArea-gradient" style="background: linear-gradient(to top, black 0%, rgba(0, 0, 0, 0) 100%), linear-gradient(to right, white 0%, rgba(0, 0, 0, 0) 100%), rgb(255, 0, 0);"></div>
+        <div class="spectrum-ColorHandle spectrum-ColorWheel-ColorArea-handle">
+          <div class="spectrum-ColorHandle-inner" style="background-color: rgb(255, 0, 0)"></div>
+            <svg class="spectrum-ColorLoupe">
+              <!-- use ColorLoupe markup here -->
+            </svg>
+        </div>
+      <input type="range" class="spectrum-ColorArea-slider" name="x" aria-label="saturation and value" min="0" max="1" step="0.01">
+      <input type="range" class="spectrum-ColorArea-slider" name="y" aria-label="saturation and value" min="0" max="1" step="0.01">
+    </div>
+    </div>
+  </div>
+  <div class="spectrum-ColorWheel-border">
+    <div class="spectrum-ColorWheel-wheel"></div>
+  </div>
+  <div class="spectrum-ColorHandle spectrum-ColorWheel-handle">
+    <div class="spectrum-ColorHandle-inner" style="background-color: rgb(255, 0, 0)"></div>
+    <svg class="spectrum-ColorLoupe">
+      <!-- use ColorLoupe markup here -->
+    </svg>
+  </div>
+  <input type="range" class="spectrum-ColorWheel-slider" aria-label="hue" min="0" max="360" step="`">
+</div>
+

Custom Properties API


This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

+

Migration Guide


    +
  • Colorwheel no longer displays a canvas variant
  • +
  • ColorWheel refactored to use a clip-path instead of an svg with a mask
  • +
+

\ No newline at end of file diff --git a/combobox.html b/combobox.html new file mode 100644 index 0000000000..6dae36b15d --- /dev/null +++ b/combobox.html @@ -0,0 +1,668 @@ +Combobox - Spectrum CSS
  • Light
  • Dark
  • Darkest
  • Medium
  • Large
  • LTR
  • RTL
  • Default
  • Express

Combobox

Component status
Contribution
Current version@spectrum-css/combobox@3.1.2
ReleasedMay 22, 2024
S2-foundations@spectrum-css/combobox@4.0.0-s2-foundations.9
ReleasedJuly 16, 2024

Usage notes


Combobox combines a text field with a picker menu.

+

Variants


Standard
Contribution

+
+

Default

+ +
+
+
+ +
+ + +
+
+
+
+

With Field Label

+ +
+
Country
+ +
+
+ +
+ + +
+
+
+
+

Disabled

+ +
+
+
+ +
+ + +
+
+
+
+

Open

+ +
+
+
+ +
+ + + +
+
    +
  • + Ballard +
  • +
  • + Fremont +
  • +
  • + Greenwood +
  • + +
  • + United States of America +
  • +
+
+
+
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox">
+        <div class="spectrum-Textfield spectrum-Combobox-textfield">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right spectrum-Combobox-button" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">With Field Label</h4>
+
+    <div class="spectrum-Examples-itemGroup" style="display:block;">
+      <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">Country</div>
+
+      <div class="spectrum-Combobox">
+        <div class="spectrum-Textfield spectrum-Combobox-textfield">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right spectrum-Combobox-button" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox is-disabled">
+        <div class="spectrum-Textfield spectrum-Combobox-textfield is-disabled">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input" disabled>
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right spectrum-Combobox-button" disabled aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Open</h4>
+
+    <div class="spectrum-Examples-itemGroup" style="min-height: 240px;">
+      <div class="spectrum-Combobox is-open">
+        <div class="spectrum-Textfield spectrum-Combobox-textfield">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right spectrum-Combobox-button is-open" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+
+        <div class="spectrum-Popover spectrum-Popover--bottom is-open" style="position: absolute; top: 100%; left: 0; width: 100%;">
+          <ul class="spectrum-Menu" role="listbox">
+            <li class="spectrum-Menu-item is-selected" role="option" tabindex="0">
+              <span class="spectrum-Menu-itemLabel">Ballard</span>
+            </li>
+            <li class="spectrum-Menu-item" role="option" tabindex="0">
+              <span class="spectrum-Menu-itemLabel">Fremont</span>
+            </li>
+            <li class="spectrum-Menu-item" role="option" tabindex="0">
+              <span class="spectrum-Menu-itemLabel">Greenwood</span>
+            </li>
+            <li class="spectrum-Menu-divider" role="separator"></li>
+            <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
+              <span class="spectrum-Menu-itemLabel">United States of America</span>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+

Quiet
Contribution

+
+

Default

+ +
+
+
+ +
+ + +
+
+
+
+

With Field Label

+ +
+
Country
+ +
+
+ +
+ + +
+
+
+
+

Disabled

+ +
+
+
+ +
+ + +
+
+
+
+

Open

+ +
+
+
+ +
+ + + +
+
    +
  • + Ballard +
  • +
  • + Fremont +
  • +
  • + Greenwood +
  • + +
  • + United States of America +
  • +
+
+
+
+
+
+
Show markup
<div class="spectrum-Examples">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Default</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox spectrum-Combobox--quiet">
+        <div class="spectrum-Textfield spectrum-Textfield--quiet spectrum-Combobox-textfield">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--quiet spectrum-PickerButton--right spectrum-Combobox-button" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">With Field Label</h4>
+
+    <div class="spectrum-Examples-itemGroup" style="display:block;">
+      <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">Country</div>
+
+      <div class="spectrum-Combobox spectrum-Combobox--quiet">
+        <div class="spectrum-Textfield spectrum-Textfield--quiet spectrum-Combobox-textfield">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--quiet spectrum-PickerButton--right spectrum-Combobox-button" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox spectrum-Combobox--quiet is-disabled">
+        <div class="spectrum-Textfield spectrum-Textfield--quiet spectrum-Combobox-textfield is-disabled">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input" disabled>
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--quiet spectrum-PickerButton--right spectrum-Combobox-button" disabled aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Open</h4>
+
+    <div class="spectrum-Examples-itemGroup" style="min-height: 240px;">
+      <div class="spectrum-Combobox spectrum-Combobox--quiet is-open">
+        <div class="spectrum-Textfield spectrum-Textfield--quiet spectrum-Combobox-textfield">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--quiet spectrum-PickerButton--right spectrum-Combobox-button" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+
+        <div class="spectrum-Popover spectrum-Popover--bottom is-open" style="position: absolute; top: 100%; width: 100%">
+          <ul class="spectrum-Menu" role="listbox">
+            <li class="spectrum-Menu-item is-selected" role="option" tabindex="0">
+              <span class="spectrum-Menu-itemLabel">Ballard</span>
+            </li>
+            <li class="spectrum-Menu-item" role="option" tabindex="0">
+              <span class="spectrum-Menu-itemLabel">Fremont</span>
+            </li>
+            <li class="spectrum-Menu-item" role="option" tabindex="0">
+              <span class="spectrum-Menu-itemLabel">Greenwood</span>
+            </li>
+            <li class="spectrum-Menu-divider" role="separator"></li>
+            <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
+              <span class="spectrum-Menu-itemLabel">United States of America</span>
+            </li>
+          </ul>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+

Invalid
Contribution

+
+

Standard

+ +
+
+
+ + +
+ + +
+
+
+
+

Quiet

+ +
+
+
+ + +
+ + +
+
+
+
+
Show markup
<div class="spectrum-Examples" style="justify-content: space-evenly;">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Standard</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox is-invalid">
+        <div class="spectrum-Textfield spectrum-Combobox-textfield is-invalid">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Textfield-validationIcon" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-Alert" />
+          </svg>
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right spectrum-Combobox-button is-invalid" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Quiet</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox spectrum-Combobox--quiet is-invalid">
+        <div class="spectrum-Textfield spectrum-Textfield--quiet is-invalid spectrum-Combobox-textfield">
+          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Textfield-validationIcon" focusable="false" aria-hidden="true">
+            <use xlink:href="#spectrum-icon-18-Alert" />
+          </svg>
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--quiet spectrum-PickerButton--right spectrum-Combobox-button is-invalid" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Loading
Contribution

+
+

Standard

+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ +
+

Quiet

+ +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
Show markup
<div class="spectrum-Examples" style="justify-content: space-evenly;">
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Standard</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox is-loading">
+        <div class="spectrum-Textfield spectrum-Combobox-textfield is-loading">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+
+          <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-Combobox-progress-circle">
+            <div class="spectrum-ProgressCircle-track"></div>
+            <div class="spectrum-ProgressCircle-fills">
+              <div class="spectrum-ProgressCircle-fillMask1">
+                <div class="spectrum-ProgressCircle-fillSubMask1">
+                  <div class="spectrum-ProgressCircle-fill"></div>
+                </div>
+              </div>
+              <div class="spectrum-ProgressCircle-fillMask2">
+                <div class="spectrum-ProgressCircle-fillSubMask2">
+                  <div class="spectrum-ProgressCircle-fill"></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right spectrum-Combobox-button is-loading" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+
+  <div class="spectrum-Examples-item">
+    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Quiet</h4>
+
+    <div class="spectrum-Examples-itemGroup">
+      <div class="spectrum-Combobox spectrum-Combobox--quiet is-loading">
+        <div class="spectrum-Textfield spectrum-Textfield--quiet spectrum-Combobox-textfield is-loading">
+          <input type="text" name="field" value="" class="spectrum-Textfield-input spectrum-Combobox-input">
+
+          <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small spectrum-Combobox-progress-circle">
+            <div class="spectrum-ProgressCircle-track"></div>
+            <div class="spectrum-ProgressCircle-fills">
+              <div class="spectrum-ProgressCircle-fillMask1">
+                <div class="spectrum-ProgressCircle-fillSubMask1">
+                  <div class="spectrum-ProgressCircle-fill"></div>
+                </div>
+              </div>
+              <div class="spectrum-ProgressCircle-fillMask2">
+                <div class="spectrum-ProgressCircle-fillSubMask2">
+                  <div class="spectrum-ProgressCircle-fill"></div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <button tabindex="-1" class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--quiet spectrum-PickerButton--right spectrum-Combobox-button is-loading" aria-haspopup="listbox">
+          <div class="spectrum-PickerButton-fill">
+            <svg class="spectrum-PickerButton-icon spectrum-Icon spectrum-UIIcon-ChevronDown200" focusable="false" aria-hidden="true">
+              <use xlink:href="#spectrum-css-icon-Chevron200" />
+            </svg>
+          </div>
+        </button>
+      </div>
+    </div>
+  </div>
+</div>
+

Migration Guide


Component separated from InputGroup

+

This component was previously a variant style for InputGroup. InputGroup is now deprecated.
+The classes containing InputGroup have been renamed or removed. For details, see the “renamed” and “removed” sections below or the example markup.

+

New Picker markup

+

Instead of a .spectrum-Picker, Combobox now uses .spectrum-PickerButton. Refer to the example markup for usage details.

+

New Textfield markup

+

Combobox now uses the new Textfield markup. See the Textfield migration guide for more information.

+

Additional clases

+

The following classes must be added:

+
    +
  • .spectrum-Combobox-textfield is now required on the Textfield outer element (.spectrum-Textfield)
  • +
  • .spectrum-Combobox-input is now required on the <input> element inside of Textfields (.spectrum-Textfield-input)
  • +
  • .spectrum-Combobox-button is now required on the FieldButton (.spectrum-ActionButton spectrum-ActionButton--sizeM)
  • +
+

Indicating validity and focus

+

Validity and focus must be bubbled up to the parent so descendants siblings can be styled.

+

Thus, implementations should add the following classes to the .spectrum-Combobox parent class in the following situations:

+
    +
  • .is-focused - when the input or button is focused with the mouse
  • +
  • .is-keyboardFocused - when the input or button is focused with the keyboard
  • +
  • .is-valid - when the input has an explicit valid state
  • +
  • .is-invalid - when the input has an explicit invalid state
  • +
  • .is-disabled - when the control is disabled; should also add to the .spectrum-Combobox-textfield and include a [disabled] attribute to the .spectrum-Combobox-button
  • +
  • .is-loading - when the progress circle is being shown
  • +
+

Renamed classes

+
    +
  • .spectrum-InputGroup-textfield -> .spectrum-Combobox-textfield
  • +
  • .spectrum-InputGroup-input -> .spectrum-Combobox-input
  • +
  • .spectrum-InputGroup-button -> .spectrum-Combobox-button
  • +
+

Removed classes

+
    +
  • .InputGroup (can be be removed from the parent element)
  • +
+

\ No newline at end of file diff --git a/components/accordion/index-base.css b/components/accordion/index-base.css new file mode 100644 index 0000000000..ac180cd94a --- /dev/null +++ b/components/accordion/index-base.css @@ -0,0 +1,274 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Accordion { + --spectrum-accordion-item-height: var(--spectrum-component-height-200); + --spectrum-accordion-item-width: var(--spectrum-accordion-minimum-width); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-100); + --spectrum-accordion-disclosure-indicator-to-text-space: var(--spectrum-accordion-disclosure-indicator-to-text); + --spectrum-accordion-edge-to-disclosure-indicator-space: var(--spectrum-accordion-edge-to-disclosure-indicator); + --spectrum-accordion-edge-to-text-space: var(--spectrum-accordion-edge-to-text); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-medium); + --spectrum-accordion-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-accordion-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-accordion-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-accordion-item-content-area-top-to-content: var(--spectrum-accordion-content-area-top-to-content); + --spectrum-accordion-item-content-area-bottom-to-content: var(--spectrum-accordion-content-area-bottom-to-content); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-accordion-item-header-font: var(--spectrum-sans-font-family-stack); + --spectrum-accordion-item-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-accordion-item-header-font-style: var(--spectrum-default-font-style); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-300); + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-content-font: var(--spectrum-sans-font-family-stack); + --spectrum-accordion-item-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-accordion-item-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-s); + --spectrum-accordion-item-content-line-height: var(--spectrum-line-height-100); + --spectrum-accordion-background-color-default: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-default)); + --spectrum-accordion-background-color-hover: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-hover)); + --spectrum-accordion-background-color-down: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-down)); + --spectrum-accordion-background-color-key-focus: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-key-focus)); + --spectrum-accordion-item-header-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-accordion-item-header-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-accordion-item-header-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-accordion-item-header-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-accordion-item-header-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-accordion-item-content-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-accordion-item-content-color: var(--spectrum-body-color); + --spectrum-accordion-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-accordion-divider-color: var(--spectrum-gray-300); + --spectrum-accordion-min-block-size: max( + var(--mod-accordion-item-height, var(--spectrum-accordion-item-height)), + calc(var(--mod-accordion-item-header-top-to-text-space, var(--spectrum-accordion-item-header-top-to-text-space)) + var(--mod-accordion-item-header-bottom-to-text-space, var(--spectrum-accordion-item-header-bottom-to-text-space)) + var(--mod-accordion-item-header-font-size, var(--spectrum-accordion-item-header-font-size)) * var(--mod-accordion-item-header-line-height, var(--spectrum-accordion-item-header-line-height))) + ); +} +.spectrum-Accordion:dir(rtl), +[dir="rtl"] .spectrum-Accordion { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Accordion:lang(ja), +.spectrum-Accordion:lang(ko), +.spectrum-Accordion:lang(zh) { + --spectrum-accordion-item-header-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-accordion-item-content-line-height: var(--spectrum-cjk-line-height-100); +} +.spectrum-Accordion--compact { + --spectrum-accordion-item-height: var(--spectrum-component-height-100); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-medium); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeS { + --spectrum-accordion-item-height: var(--spectrum-component-height-75); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-small); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-small); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeL { + --spectrum-accordion-item-height: var(--spectrum-component-height-200); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-large); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-height: var(--spectrum-component-height-300); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-extra-large); +} +.spectrum-Accordion--spacious { + --spectrum-accordion-item-header-line-height: 1.278; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-medium); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeS { + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-small-top-to-text-spacious); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-small); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeL { + --spectrum-accordion-item-header-line-height: 1.273; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-large); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-extra-large); +} +.spectrum-Accordion--sizeS { + --spectrum-accordion-item-height: var(--spectrum-component-height-100); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-75); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-50); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-200); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-xs); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-small); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-small); +} +.spectrum-Accordion--sizeL { + --spectrum-accordion-item-height: var(--spectrum-component-height-300); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-200); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-500); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-m); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-large); +} +.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-height: var(--spectrum-component-height-400); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-300); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-700); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-l); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-extra-large); +} +.spectrum-Accordion { + display: block; + list-style: none; + padding: 0; + margin: 0; +} +.spectrum-Accordion-item { + z-index: inherit; + position: relative; + margin: 0; + min-block-size: var(--mod-accordion-item-height, var(--spectrum-accordion-item-height)); + min-inline-size: var(--mod-accordion-item-width, var(--spectrum-accordion-item-width)); + border-block-end: 1px solid transparent; + border-color: var(--mod-accordion-divider-color, var(--spectrum-accordion-divider-color)); + border-width: var(--mod-accordion-divider-thickness, var(--spectrum-divider-thickness-small)); +} +.spectrum-Accordion-item:first-child { + border-block-start: 1px solid transparent; + border-color: var(--mod-accordion-divider-color, var(--spectrum-accordion-divider-color)); + border-width: var(--mod-accordion-divider-thickness, var(--spectrum-divider-thickness-small)); +} +.spectrum-Accordion-itemHeading { + margin: 0; + position: relative; + box-sizing: border-box; +} +.spectrum-Accordion-itemIconContainer { + padding-inline-start: var(--mod-accordion-edge-to-disclosure-indicator-space, var(--spectrum-accordion-edge-to-disclosure-indicator-space)); + inline-size: var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height)); + block-size: var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height)); + display: flex; + justify-content: center; + align-items: center; + color: var(--mod-accordion-item-header-color-default, var(--spectrum-accordion-item-header-color-default)); + position: absolute; + inset-block-start: max(0px, calc((var(--mod-accordion-min-block-size, var(--spectrum-accordion-min-block-size)) - var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height))) / 2)); +} +.spectrum-Accordion-itemIconContainer:dir(rtl), +[dir="rtl"] .spectrum-Accordion-itemIconContainer { + transform: scaleX(-1); +} +.spectrum-Accordion-itemContent { + padding-block: var(--mod-accordion-item-content-area-top-to-content, var(--spectrum-accordion-item-content-area-top-to-content)) var(--mod-accordion-item-content-area-bottom-to-content, var(--spectrum-accordion-item-content-area-bottom-to-content)); + padding-inline: var(--mod-accordion-component-edge-to-text, var(--spectrum-accordion-component-edge-to-text)) var(--mod-accordion-component-edge-to-text, var(--spectrum-accordion-component-edge-to-text)); + display: none; + color: var(--mod-accordion-item-content-color, var(--spectrum-accordion-item-content-color)); + font-weight: var(--mod-accordion-item-content-font-weight, var(--spectrum-accordion-item-content-font-weight)); + font-style: var(--mod-accordion-item-content-font-style, var(--spectrum-accordion-item-content-font-style)); + font-size: var(--mod-accordion-item-content-font-size, var(--spectrum-accordion-item-content-font-size)); + font-family: var(--mod-accordion-item-content-font, var(--spectrum-accordion-item-content-font)); + line-height: var(--mod-accordion-item-content-line-height, var(--spectrum-accordion-item-content-line-height)); +} +.spectrum-Accordion-itemHeader { + position: relative; + display: flex; + align-items: center; + justify-content: flex-start; + box-sizing: border-box; + padding-block: var(--mod-accordion-item-header-top-to-text-space, var(--spectrum-accordion-item-header-top-to-text-space)) var(--mod-accordion-item-header-bottom-to-text-space, var(--spectrum-accordion-item-header-bottom-to-text-space)); + padding-inline-start: calc(var(--mod-accordion-disclosure-indicator-to-text-space, var(--spectrum-accordion-disclosure-indicator-to-text-space)) + var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height))); + padding-inline-end: var(--mod-accordion-edge-to-text-space, var(--spectrum-accordion-edge-to-text-space)); + min-block-size: var(--mod-accordion-min-block-size, var(--spectrum-accordion-min-block-size)); + line-height: var(--mod-accordion-item-header-line-height, var(--spectrum-accordion-item-header-line-height)); + text-overflow: ellipsis; + cursor: pointer; + font-size: var(--mod-accordion-item-header-font-size, var(--spectrum-accordion-item-header-font-size)); + font-weight: var(--mod-accordion-item-header-font-weight, var(--spectrum-accordion-item-header-font-weight)); + font-style: var(--mod-accordion-item-header-font-style, var(--spectrum-accordion-item-header-font-style)); + font-family: var(--mod-accordion-item-header-font, var(--spectrum-accordion-item-header-font)); + appearance: none; + border: 0; + text-align: start; + inline-size: 100%; + color: var(--mod-accordion-item-header-color-default, var(--spectrum-accordion-item-header-color-default)); + background-color: var(--mod-accordion-background-color-default, var(--spectrum-accordion-background-color-default)); +} +.spectrum-Accordion-itemHeader:focus { + outline: none; +} +.spectrum-Accordion-itemHeader:focus:after { + content: ""; + position: absolute; + inset-inline-start: 0; +} +.spectrum-Accordion-itemHeader:focus-visible { + border-radius: var(--mod-accordion-corner-radius, var(--spectrum-accordion-corner-radius)); + outline: var(--mod-accordion-focus-indicator-thickness, var(--spectrum-accordion-focus-indicator-thickness)) solid var(--mod-accordion-focus-indicator-color, var(--spectrum-accordion-focus-indicator-color)); + background-color: var(--mod-accordion-background-color-key-focus, var(--spectrum-accordion-background-color-key-focus)); + color: var(--mod-accordion-item-header-color-key-focus, var(--spectrum-accordion-item-header-color-key-focus)); + outline-offset: calc(var(--mod-accordion-focus-indicator-gap, var(--spectrum-accordion-focus-indicator-gap)) * -1); +} +.spectrum-Accordion-itemHeader:active { + background-color: var(--mod-accordion-background-color-down, var(--spectrum-accordion-background-color-down)); + color: var(--mod-accordion-item-header-color-down, var(--spectrum-accordion-item-header-color-down)); +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader, +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:focus-visible { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); + background-color: initial; +} +@media (hover: hover) { + .spectrum-Accordion-itemHeader:hover { + background-color: var(--mod-accordion-background-color-hover, var(--spectrum-accordion-background-color-hover)); + } + .spectrum-Accordion-itemHeader:hover, + .spectrum-Accordion-itemHeader:hover + .spectrum-Accordion-itemIconContainer { + color: var(--mod-accordion-item-header-color-hover, var(--spectrum-accordion-item-header-color-hover)); + } + .spectrum-Accordion-item.is-open .spectrum-Accordion-itemHeader:hover { + background-color: var(--mod-accordion-background-color-hover, var(--spectrum-accordion-background-color-hover)); + } + .spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:hover { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); + background-color: initial; + } +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader + .spectrum-Accordion-itemIconContainer { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemContent { + color: var(--mod-accordion-item-content-disabled-color, var(--spectrum-accordion-item-content-disabled-color)); +} +@media (forced-colors: active) { + .spectrum-Accordion-itemHeader:after { + forced-color-adjust: none; + content: ""; + position: absolute; + inset-inline-start: 0; + } +} +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemHeading > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator, +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator { + transform: var(--spectrum-logical-rotation,) rotate(90deg); +} +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemContent { + display: block; +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader { + cursor: default; +} +/*# sourceMappingURL=components/accordion/index.css.map */ diff --git a/components/accordion/index-vars.css b/components/accordion/index-vars.css new file mode 100644 index 0000000000..ac180cd94a --- /dev/null +++ b/components/accordion/index-vars.css @@ -0,0 +1,274 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Accordion { + --spectrum-accordion-item-height: var(--spectrum-component-height-200); + --spectrum-accordion-item-width: var(--spectrum-accordion-minimum-width); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-100); + --spectrum-accordion-disclosure-indicator-to-text-space: var(--spectrum-accordion-disclosure-indicator-to-text); + --spectrum-accordion-edge-to-disclosure-indicator-space: var(--spectrum-accordion-edge-to-disclosure-indicator); + --spectrum-accordion-edge-to-text-space: var(--spectrum-accordion-edge-to-text); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-medium); + --spectrum-accordion-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-accordion-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-accordion-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-accordion-item-content-area-top-to-content: var(--spectrum-accordion-content-area-top-to-content); + --spectrum-accordion-item-content-area-bottom-to-content: var(--spectrum-accordion-content-area-bottom-to-content); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-accordion-item-header-font: var(--spectrum-sans-font-family-stack); + --spectrum-accordion-item-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-accordion-item-header-font-style: var(--spectrum-default-font-style); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-300); + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-content-font: var(--spectrum-sans-font-family-stack); + --spectrum-accordion-item-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-accordion-item-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-s); + --spectrum-accordion-item-content-line-height: var(--spectrum-line-height-100); + --spectrum-accordion-background-color-default: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-default)); + --spectrum-accordion-background-color-hover: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-hover)); + --spectrum-accordion-background-color-down: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-down)); + --spectrum-accordion-background-color-key-focus: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-key-focus)); + --spectrum-accordion-item-header-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-accordion-item-header-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-accordion-item-header-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-accordion-item-header-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-accordion-item-header-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-accordion-item-content-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-accordion-item-content-color: var(--spectrum-body-color); + --spectrum-accordion-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-accordion-divider-color: var(--spectrum-gray-300); + --spectrum-accordion-min-block-size: max( + var(--mod-accordion-item-height, var(--spectrum-accordion-item-height)), + calc(var(--mod-accordion-item-header-top-to-text-space, var(--spectrum-accordion-item-header-top-to-text-space)) + var(--mod-accordion-item-header-bottom-to-text-space, var(--spectrum-accordion-item-header-bottom-to-text-space)) + var(--mod-accordion-item-header-font-size, var(--spectrum-accordion-item-header-font-size)) * var(--mod-accordion-item-header-line-height, var(--spectrum-accordion-item-header-line-height))) + ); +} +.spectrum-Accordion:dir(rtl), +[dir="rtl"] .spectrum-Accordion { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Accordion:lang(ja), +.spectrum-Accordion:lang(ko), +.spectrum-Accordion:lang(zh) { + --spectrum-accordion-item-header-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-accordion-item-content-line-height: var(--spectrum-cjk-line-height-100); +} +.spectrum-Accordion--compact { + --spectrum-accordion-item-height: var(--spectrum-component-height-100); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-medium); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeS { + --spectrum-accordion-item-height: var(--spectrum-component-height-75); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-small); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-small); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeL { + --spectrum-accordion-item-height: var(--spectrum-component-height-200); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-large); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-height: var(--spectrum-component-height-300); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-extra-large); +} +.spectrum-Accordion--spacious { + --spectrum-accordion-item-header-line-height: 1.278; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-medium); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeS { + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-small-top-to-text-spacious); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-small); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeL { + --spectrum-accordion-item-header-line-height: 1.273; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-large); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-extra-large); +} +.spectrum-Accordion--sizeS { + --spectrum-accordion-item-height: var(--spectrum-component-height-100); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-75); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-50); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-200); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-xs); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-small); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-small); +} +.spectrum-Accordion--sizeL { + --spectrum-accordion-item-height: var(--spectrum-component-height-300); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-200); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-500); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-m); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-large); +} +.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-height: var(--spectrum-component-height-400); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-300); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-700); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-l); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-extra-large); +} +.spectrum-Accordion { + display: block; + list-style: none; + padding: 0; + margin: 0; +} +.spectrum-Accordion-item { + z-index: inherit; + position: relative; + margin: 0; + min-block-size: var(--mod-accordion-item-height, var(--spectrum-accordion-item-height)); + min-inline-size: var(--mod-accordion-item-width, var(--spectrum-accordion-item-width)); + border-block-end: 1px solid transparent; + border-color: var(--mod-accordion-divider-color, var(--spectrum-accordion-divider-color)); + border-width: var(--mod-accordion-divider-thickness, var(--spectrum-divider-thickness-small)); +} +.spectrum-Accordion-item:first-child { + border-block-start: 1px solid transparent; + border-color: var(--mod-accordion-divider-color, var(--spectrum-accordion-divider-color)); + border-width: var(--mod-accordion-divider-thickness, var(--spectrum-divider-thickness-small)); +} +.spectrum-Accordion-itemHeading { + margin: 0; + position: relative; + box-sizing: border-box; +} +.spectrum-Accordion-itemIconContainer { + padding-inline-start: var(--mod-accordion-edge-to-disclosure-indicator-space, var(--spectrum-accordion-edge-to-disclosure-indicator-space)); + inline-size: var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height)); + block-size: var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height)); + display: flex; + justify-content: center; + align-items: center; + color: var(--mod-accordion-item-header-color-default, var(--spectrum-accordion-item-header-color-default)); + position: absolute; + inset-block-start: max(0px, calc((var(--mod-accordion-min-block-size, var(--spectrum-accordion-min-block-size)) - var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height))) / 2)); +} +.spectrum-Accordion-itemIconContainer:dir(rtl), +[dir="rtl"] .spectrum-Accordion-itemIconContainer { + transform: scaleX(-1); +} +.spectrum-Accordion-itemContent { + padding-block: var(--mod-accordion-item-content-area-top-to-content, var(--spectrum-accordion-item-content-area-top-to-content)) var(--mod-accordion-item-content-area-bottom-to-content, var(--spectrum-accordion-item-content-area-bottom-to-content)); + padding-inline: var(--mod-accordion-component-edge-to-text, var(--spectrum-accordion-component-edge-to-text)) var(--mod-accordion-component-edge-to-text, var(--spectrum-accordion-component-edge-to-text)); + display: none; + color: var(--mod-accordion-item-content-color, var(--spectrum-accordion-item-content-color)); + font-weight: var(--mod-accordion-item-content-font-weight, var(--spectrum-accordion-item-content-font-weight)); + font-style: var(--mod-accordion-item-content-font-style, var(--spectrum-accordion-item-content-font-style)); + font-size: var(--mod-accordion-item-content-font-size, var(--spectrum-accordion-item-content-font-size)); + font-family: var(--mod-accordion-item-content-font, var(--spectrum-accordion-item-content-font)); + line-height: var(--mod-accordion-item-content-line-height, var(--spectrum-accordion-item-content-line-height)); +} +.spectrum-Accordion-itemHeader { + position: relative; + display: flex; + align-items: center; + justify-content: flex-start; + box-sizing: border-box; + padding-block: var(--mod-accordion-item-header-top-to-text-space, var(--spectrum-accordion-item-header-top-to-text-space)) var(--mod-accordion-item-header-bottom-to-text-space, var(--spectrum-accordion-item-header-bottom-to-text-space)); + padding-inline-start: calc(var(--mod-accordion-disclosure-indicator-to-text-space, var(--spectrum-accordion-disclosure-indicator-to-text-space)) + var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height))); + padding-inline-end: var(--mod-accordion-edge-to-text-space, var(--spectrum-accordion-edge-to-text-space)); + min-block-size: var(--mod-accordion-min-block-size, var(--spectrum-accordion-min-block-size)); + line-height: var(--mod-accordion-item-header-line-height, var(--spectrum-accordion-item-header-line-height)); + text-overflow: ellipsis; + cursor: pointer; + font-size: var(--mod-accordion-item-header-font-size, var(--spectrum-accordion-item-header-font-size)); + font-weight: var(--mod-accordion-item-header-font-weight, var(--spectrum-accordion-item-header-font-weight)); + font-style: var(--mod-accordion-item-header-font-style, var(--spectrum-accordion-item-header-font-style)); + font-family: var(--mod-accordion-item-header-font, var(--spectrum-accordion-item-header-font)); + appearance: none; + border: 0; + text-align: start; + inline-size: 100%; + color: var(--mod-accordion-item-header-color-default, var(--spectrum-accordion-item-header-color-default)); + background-color: var(--mod-accordion-background-color-default, var(--spectrum-accordion-background-color-default)); +} +.spectrum-Accordion-itemHeader:focus { + outline: none; +} +.spectrum-Accordion-itemHeader:focus:after { + content: ""; + position: absolute; + inset-inline-start: 0; +} +.spectrum-Accordion-itemHeader:focus-visible { + border-radius: var(--mod-accordion-corner-radius, var(--spectrum-accordion-corner-radius)); + outline: var(--mod-accordion-focus-indicator-thickness, var(--spectrum-accordion-focus-indicator-thickness)) solid var(--mod-accordion-focus-indicator-color, var(--spectrum-accordion-focus-indicator-color)); + background-color: var(--mod-accordion-background-color-key-focus, var(--spectrum-accordion-background-color-key-focus)); + color: var(--mod-accordion-item-header-color-key-focus, var(--spectrum-accordion-item-header-color-key-focus)); + outline-offset: calc(var(--mod-accordion-focus-indicator-gap, var(--spectrum-accordion-focus-indicator-gap)) * -1); +} +.spectrum-Accordion-itemHeader:active { + background-color: var(--mod-accordion-background-color-down, var(--spectrum-accordion-background-color-down)); + color: var(--mod-accordion-item-header-color-down, var(--spectrum-accordion-item-header-color-down)); +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader, +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:focus-visible { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); + background-color: initial; +} +@media (hover: hover) { + .spectrum-Accordion-itemHeader:hover { + background-color: var(--mod-accordion-background-color-hover, var(--spectrum-accordion-background-color-hover)); + } + .spectrum-Accordion-itemHeader:hover, + .spectrum-Accordion-itemHeader:hover + .spectrum-Accordion-itemIconContainer { + color: var(--mod-accordion-item-header-color-hover, var(--spectrum-accordion-item-header-color-hover)); + } + .spectrum-Accordion-item.is-open .spectrum-Accordion-itemHeader:hover { + background-color: var(--mod-accordion-background-color-hover, var(--spectrum-accordion-background-color-hover)); + } + .spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:hover { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); + background-color: initial; + } +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader + .spectrum-Accordion-itemIconContainer { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemContent { + color: var(--mod-accordion-item-content-disabled-color, var(--spectrum-accordion-item-content-disabled-color)); +} +@media (forced-colors: active) { + .spectrum-Accordion-itemHeader:after { + forced-color-adjust: none; + content: ""; + position: absolute; + inset-inline-start: 0; + } +} +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemHeading > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator, +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator { + transform: var(--spectrum-logical-rotation,) rotate(90deg); +} +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemContent { + display: block; +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader { + cursor: default; +} +/*# sourceMappingURL=components/accordion/index.css.map */ diff --git a/components/accordion/index.css b/components/accordion/index.css new file mode 100644 index 0000000000..ac180cd94a --- /dev/null +++ b/components/accordion/index.css @@ -0,0 +1,274 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Accordion { + --spectrum-accordion-item-height: var(--spectrum-component-height-200); + --spectrum-accordion-item-width: var(--spectrum-accordion-minimum-width); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-100); + --spectrum-accordion-disclosure-indicator-to-text-space: var(--spectrum-accordion-disclosure-indicator-to-text); + --spectrum-accordion-edge-to-disclosure-indicator-space: var(--spectrum-accordion-edge-to-disclosure-indicator); + --spectrum-accordion-edge-to-text-space: var(--spectrum-accordion-edge-to-text); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-medium); + --spectrum-accordion-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-accordion-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-accordion-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-accordion-item-content-area-top-to-content: var(--spectrum-accordion-content-area-top-to-content); + --spectrum-accordion-item-content-area-bottom-to-content: var(--spectrum-accordion-content-area-bottom-to-content); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-accordion-item-header-font: var(--spectrum-sans-font-family-stack); + --spectrum-accordion-item-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-accordion-item-header-font-style: var(--spectrum-default-font-style); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-300); + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-content-font: var(--spectrum-sans-font-family-stack); + --spectrum-accordion-item-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-accordion-item-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-s); + --spectrum-accordion-item-content-line-height: var(--spectrum-line-height-100); + --spectrum-accordion-background-color-default: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-default)); + --spectrum-accordion-background-color-hover: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-hover)); + --spectrum-accordion-background-color-down: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-down)); + --spectrum-accordion-background-color-key-focus: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-background-opacity-key-focus)); + --spectrum-accordion-item-header-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-accordion-item-header-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-accordion-item-header-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-accordion-item-header-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-accordion-item-header-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-accordion-item-content-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-accordion-item-content-color: var(--spectrum-body-color); + --spectrum-accordion-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-accordion-divider-color: var(--spectrum-gray-300); + --spectrum-accordion-min-block-size: max( + var(--mod-accordion-item-height, var(--spectrum-accordion-item-height)), + calc(var(--mod-accordion-item-header-top-to-text-space, var(--spectrum-accordion-item-header-top-to-text-space)) + var(--mod-accordion-item-header-bottom-to-text-space, var(--spectrum-accordion-item-header-bottom-to-text-space)) + var(--mod-accordion-item-header-font-size, var(--spectrum-accordion-item-header-font-size)) * var(--mod-accordion-item-header-line-height, var(--spectrum-accordion-item-header-line-height))) + ); +} +.spectrum-Accordion:dir(rtl), +[dir="rtl"] .spectrum-Accordion { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Accordion:lang(ja), +.spectrum-Accordion:lang(ko), +.spectrum-Accordion:lang(zh) { + --spectrum-accordion-item-header-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-accordion-item-content-line-height: var(--spectrum-cjk-line-height-100); +} +.spectrum-Accordion--compact { + --spectrum-accordion-item-height: var(--spectrum-component-height-100); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-medium); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeS { + --spectrum-accordion-item-height: var(--spectrum-component-height-75); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-small); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-small); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeL { + --spectrum-accordion-item-height: var(--spectrum-component-height-200); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-large); +} +.spectrum-Accordion--compact.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-height: var(--spectrum-component-height-300); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-compact-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-compact-extra-large); +} +.spectrum-Accordion--spacious { + --spectrum-accordion-item-header-line-height: 1.278; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-medium); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-medium); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeS { + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-small-top-to-text-spacious); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-small); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeL { + --spectrum-accordion-item-header-line-height: 1.273; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-large); +} +.spectrum-Accordion--spacious.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-header-line-height: 1.25; + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-spacious-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-spacious-extra-large); +} +.spectrum-Accordion--sizeS { + --spectrum-accordion-item-height: var(--spectrum-component-height-100); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-75); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-50); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-200); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-xs); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-small); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-small); +} +.spectrum-Accordion--sizeL { + --spectrum-accordion-item-height: var(--spectrum-component-height-300); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-200); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-500); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-m); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-large); +} +.spectrum-Accordion--sizeXL { + --spectrum-accordion-item-height: var(--spectrum-component-height-400); + --spectrum-accordion-disclosure-indicator-height: var(--spectrum-component-height-300); + --spectrum-accordion-component-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-accordion-item-header-font-size: var(--spectrum-font-size-700); + --spectrum-accordion-item-content-font-size: var(--spectrum-body-size-l); + --spectrum-accordion-item-header-top-to-text-space: var(--spectrum-accordion-top-to-text-regular-extra-large); + --spectrum-accordion-item-header-bottom-to-text-space: var(--spectrum-accordion-bottom-to-text-regular-extra-large); +} +.spectrum-Accordion { + display: block; + list-style: none; + padding: 0; + margin: 0; +} +.spectrum-Accordion-item { + z-index: inherit; + position: relative; + margin: 0; + min-block-size: var(--mod-accordion-item-height, var(--spectrum-accordion-item-height)); + min-inline-size: var(--mod-accordion-item-width, var(--spectrum-accordion-item-width)); + border-block-end: 1px solid transparent; + border-color: var(--mod-accordion-divider-color, var(--spectrum-accordion-divider-color)); + border-width: var(--mod-accordion-divider-thickness, var(--spectrum-divider-thickness-small)); +} +.spectrum-Accordion-item:first-child { + border-block-start: 1px solid transparent; + border-color: var(--mod-accordion-divider-color, var(--spectrum-accordion-divider-color)); + border-width: var(--mod-accordion-divider-thickness, var(--spectrum-divider-thickness-small)); +} +.spectrum-Accordion-itemHeading { + margin: 0; + position: relative; + box-sizing: border-box; +} +.spectrum-Accordion-itemIconContainer { + padding-inline-start: var(--mod-accordion-edge-to-disclosure-indicator-space, var(--spectrum-accordion-edge-to-disclosure-indicator-space)); + inline-size: var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height)); + block-size: var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height)); + display: flex; + justify-content: center; + align-items: center; + color: var(--mod-accordion-item-header-color-default, var(--spectrum-accordion-item-header-color-default)); + position: absolute; + inset-block-start: max(0px, calc((var(--mod-accordion-min-block-size, var(--spectrum-accordion-min-block-size)) - var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height))) / 2)); +} +.spectrum-Accordion-itemIconContainer:dir(rtl), +[dir="rtl"] .spectrum-Accordion-itemIconContainer { + transform: scaleX(-1); +} +.spectrum-Accordion-itemContent { + padding-block: var(--mod-accordion-item-content-area-top-to-content, var(--spectrum-accordion-item-content-area-top-to-content)) var(--mod-accordion-item-content-area-bottom-to-content, var(--spectrum-accordion-item-content-area-bottom-to-content)); + padding-inline: var(--mod-accordion-component-edge-to-text, var(--spectrum-accordion-component-edge-to-text)) var(--mod-accordion-component-edge-to-text, var(--spectrum-accordion-component-edge-to-text)); + display: none; + color: var(--mod-accordion-item-content-color, var(--spectrum-accordion-item-content-color)); + font-weight: var(--mod-accordion-item-content-font-weight, var(--spectrum-accordion-item-content-font-weight)); + font-style: var(--mod-accordion-item-content-font-style, var(--spectrum-accordion-item-content-font-style)); + font-size: var(--mod-accordion-item-content-font-size, var(--spectrum-accordion-item-content-font-size)); + font-family: var(--mod-accordion-item-content-font, var(--spectrum-accordion-item-content-font)); + line-height: var(--mod-accordion-item-content-line-height, var(--spectrum-accordion-item-content-line-height)); +} +.spectrum-Accordion-itemHeader { + position: relative; + display: flex; + align-items: center; + justify-content: flex-start; + box-sizing: border-box; + padding-block: var(--mod-accordion-item-header-top-to-text-space, var(--spectrum-accordion-item-header-top-to-text-space)) var(--mod-accordion-item-header-bottom-to-text-space, var(--spectrum-accordion-item-header-bottom-to-text-space)); + padding-inline-start: calc(var(--mod-accordion-disclosure-indicator-to-text-space, var(--spectrum-accordion-disclosure-indicator-to-text-space)) + var(--mod-accordion-disclosure-indicator-height, var(--spectrum-accordion-disclosure-indicator-height))); + padding-inline-end: var(--mod-accordion-edge-to-text-space, var(--spectrum-accordion-edge-to-text-space)); + min-block-size: var(--mod-accordion-min-block-size, var(--spectrum-accordion-min-block-size)); + line-height: var(--mod-accordion-item-header-line-height, var(--spectrum-accordion-item-header-line-height)); + text-overflow: ellipsis; + cursor: pointer; + font-size: var(--mod-accordion-item-header-font-size, var(--spectrum-accordion-item-header-font-size)); + font-weight: var(--mod-accordion-item-header-font-weight, var(--spectrum-accordion-item-header-font-weight)); + font-style: var(--mod-accordion-item-header-font-style, var(--spectrum-accordion-item-header-font-style)); + font-family: var(--mod-accordion-item-header-font, var(--spectrum-accordion-item-header-font)); + appearance: none; + border: 0; + text-align: start; + inline-size: 100%; + color: var(--mod-accordion-item-header-color-default, var(--spectrum-accordion-item-header-color-default)); + background-color: var(--mod-accordion-background-color-default, var(--spectrum-accordion-background-color-default)); +} +.spectrum-Accordion-itemHeader:focus { + outline: none; +} +.spectrum-Accordion-itemHeader:focus:after { + content: ""; + position: absolute; + inset-inline-start: 0; +} +.spectrum-Accordion-itemHeader:focus-visible { + border-radius: var(--mod-accordion-corner-radius, var(--spectrum-accordion-corner-radius)); + outline: var(--mod-accordion-focus-indicator-thickness, var(--spectrum-accordion-focus-indicator-thickness)) solid var(--mod-accordion-focus-indicator-color, var(--spectrum-accordion-focus-indicator-color)); + background-color: var(--mod-accordion-background-color-key-focus, var(--spectrum-accordion-background-color-key-focus)); + color: var(--mod-accordion-item-header-color-key-focus, var(--spectrum-accordion-item-header-color-key-focus)); + outline-offset: calc(var(--mod-accordion-focus-indicator-gap, var(--spectrum-accordion-focus-indicator-gap)) * -1); +} +.spectrum-Accordion-itemHeader:active { + background-color: var(--mod-accordion-background-color-down, var(--spectrum-accordion-background-color-down)); + color: var(--mod-accordion-item-header-color-down, var(--spectrum-accordion-item-header-color-down)); +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader, +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:focus-visible { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); + background-color: initial; +} +@media (hover: hover) { + .spectrum-Accordion-itemHeader:hover { + background-color: var(--mod-accordion-background-color-hover, var(--spectrum-accordion-background-color-hover)); + } + .spectrum-Accordion-itemHeader:hover, + .spectrum-Accordion-itemHeader:hover + .spectrum-Accordion-itemIconContainer { + color: var(--mod-accordion-item-header-color-hover, var(--spectrum-accordion-item-header-color-hover)); + } + .spectrum-Accordion-item.is-open .spectrum-Accordion-itemHeader:hover { + background-color: var(--mod-accordion-background-color-hover, var(--spectrum-accordion-background-color-hover)); + } + .spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:hover { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); + background-color: initial; + } +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader + .spectrum-Accordion-itemIconContainer { + color: var(--mod-accordion-item-header-disabled-color, var(--spectrum-accordion-item-header-disabled-color)); +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemContent { + color: var(--mod-accordion-item-content-disabled-color, var(--spectrum-accordion-item-content-disabled-color)); +} +@media (forced-colors: active) { + .spectrum-Accordion-itemHeader:after { + forced-color-adjust: none; + content: ""; + position: absolute; + inset-inline-start: 0; + } +} +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemHeading > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator, +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator { + transform: var(--spectrum-logical-rotation,) rotate(90deg); +} +.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemContent { + display: block; +} +.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader { + cursor: default; +} +/*# sourceMappingURL=components/accordion/index.css.map */ diff --git a/components/accordion/metadata.json b/components/accordion/metadata.json new file mode 100644 index 0000000000..0115c3c8ba --- /dev/null +++ b/components/accordion/metadata.json @@ -0,0 +1,195 @@ +{ + "selectors": [ + ".spectrum-Accordion", + ".spectrum-Accordion--compact", + ".spectrum-Accordion--compact.spectrum-Accordion--sizeL", + ".spectrum-Accordion--compact.spectrum-Accordion--sizeS", + ".spectrum-Accordion--compact.spectrum-Accordion--sizeXL", + ".spectrum-Accordion--sizeL", + ".spectrum-Accordion--sizeS", + ".spectrum-Accordion--sizeXL", + ".spectrum-Accordion--spacious", + ".spectrum-Accordion--spacious.spectrum-Accordion--sizeL", + ".spectrum-Accordion--spacious.spectrum-Accordion--sizeS", + ".spectrum-Accordion--spacious.spectrum-Accordion--sizeXL", + ".spectrum-Accordion-item", + ".spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemContent", + ".spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader", + ".spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader + .spectrum-Accordion-itemIconContainer", + ".spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader,\n.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:focus-visible", + ".spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader:hover", + ".spectrum-Accordion-item.is-open .spectrum-Accordion-itemHeader:hover", + ".spectrum-Accordion-item.is-open > .spectrum-Accordion-itemContent", + ".spectrum-Accordion-item.is-open > .spectrum-Accordion-itemHeading > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator,\n.spectrum-Accordion-item.is-open > .spectrum-Accordion-itemIconContainer > .spectrum-Accordion-itemIndicator", + ".spectrum-Accordion-item:first-child", + ".spectrum-Accordion-itemContent", + ".spectrum-Accordion-itemHeader", + ".spectrum-Accordion-itemHeader:active", + ".spectrum-Accordion-itemHeader:after", + ".spectrum-Accordion-itemHeader:focus", + ".spectrum-Accordion-itemHeader:focus-visible", + ".spectrum-Accordion-itemHeader:focus:after", + ".spectrum-Accordion-itemHeader:hover", + ".spectrum-Accordion-itemHeader:hover,\n\t.spectrum-Accordion-itemHeader:hover + .spectrum-Accordion-itemIconContainer", + ".spectrum-Accordion-itemHeading", + ".spectrum-Accordion-itemIconContainer", + ".spectrum-Accordion-itemIconContainer:dir(rtl),\n[dir=\"rtl\"] .spectrum-Accordion-itemIconContainer", + ".spectrum-Accordion:dir(rtl),\n[dir=\"rtl\"] .spectrum-Accordion", + ".spectrum-Accordion:lang(ja),\n.spectrum-Accordion:lang(ko),\n.spectrum-Accordion:lang(zh)" + ], + "mods": [ + "--mod-accordion-background-color-default", + "--mod-accordion-background-color-down", + "--mod-accordion-background-color-hover", + "--mod-accordion-background-color-key-focus", + "--mod-accordion-component-edge-to-text", + "--mod-accordion-corner-radius", + "--mod-accordion-disclosure-indicator-height", + "--mod-accordion-disclosure-indicator-to-text-space", + "--mod-accordion-divider-color", + "--mod-accordion-divider-thickness", + "--mod-accordion-edge-to-disclosure-indicator-space", + "--mod-accordion-edge-to-text-space", + "--mod-accordion-focus-indicator-color", + "--mod-accordion-focus-indicator-gap", + "--mod-accordion-focus-indicator-thickness", + "--mod-accordion-item-content-area-bottom-to-content", + "--mod-accordion-item-content-area-top-to-content", + "--mod-accordion-item-content-color", + "--mod-accordion-item-content-disabled-color", + "--mod-accordion-item-content-font", + "--mod-accordion-item-content-font-size", + "--mod-accordion-item-content-font-style", + "--mod-accordion-item-content-font-weight", + "--mod-accordion-item-content-line-height", + "--mod-accordion-item-header-bottom-to-text-space", + "--mod-accordion-item-header-color-default", + "--mod-accordion-item-header-color-down", + "--mod-accordion-item-header-color-hover", + "--mod-accordion-item-header-color-key-focus", + "--mod-accordion-item-header-disabled-color", + "--mod-accordion-item-header-font", + "--mod-accordion-item-header-font-size", + "--mod-accordion-item-header-font-style", + "--mod-accordion-item-header-font-weight", + "--mod-accordion-item-header-line-height", + "--mod-accordion-item-header-top-to-text-space", + "--mod-accordion-item-height", + "--mod-accordion-item-width", + "--mod-accordion-min-block-size" + ], + "spectrum": [ + "--spectrum-accordion-background-color-default", + "--spectrum-accordion-background-color-down", + "--spectrum-accordion-background-color-hover", + "--spectrum-accordion-background-color-key-focus", + "--spectrum-accordion-bottom-to-text-compact-extra-large", + "--spectrum-accordion-bottom-to-text-compact-large", + "--spectrum-accordion-bottom-to-text-compact-medium", + "--spectrum-accordion-bottom-to-text-compact-small", + "--spectrum-accordion-bottom-to-text-regular-extra-large", + "--spectrum-accordion-bottom-to-text-regular-large", + "--spectrum-accordion-bottom-to-text-regular-medium", + "--spectrum-accordion-bottom-to-text-regular-small", + "--spectrum-accordion-bottom-to-text-spacious-extra-large", + "--spectrum-accordion-bottom-to-text-spacious-large", + "--spectrum-accordion-bottom-to-text-spacious-medium", + "--spectrum-accordion-bottom-to-text-spacious-small", + "--spectrum-accordion-component-edge-to-text", + "--spectrum-accordion-content-area-bottom-to-content", + "--spectrum-accordion-content-area-top-to-content", + "--spectrum-accordion-corner-radius", + "--spectrum-accordion-disclosure-indicator-height", + "--spectrum-accordion-disclosure-indicator-to-text", + "--spectrum-accordion-disclosure-indicator-to-text-space", + "--spectrum-accordion-divider-color", + "--spectrum-accordion-edge-to-disclosure-indicator", + "--spectrum-accordion-edge-to-disclosure-indicator-space", + "--spectrum-accordion-edge-to-text", + "--spectrum-accordion-edge-to-text-space", + "--spectrum-accordion-focus-indicator-color", + "--spectrum-accordion-focus-indicator-gap", + "--spectrum-accordion-focus-indicator-thickness", + "--spectrum-accordion-item-content-area-bottom-to-content", + "--spectrum-accordion-item-content-area-top-to-content", + "--spectrum-accordion-item-content-color", + "--spectrum-accordion-item-content-disabled-color", + "--spectrum-accordion-item-content-font", + "--spectrum-accordion-item-content-font-size", + "--spectrum-accordion-item-content-font-style", + "--spectrum-accordion-item-content-font-weight", + "--spectrum-accordion-item-content-line-height", + "--spectrum-accordion-item-header-bottom-to-text-space", + "--spectrum-accordion-item-header-color-default", + "--spectrum-accordion-item-header-color-down", + "--spectrum-accordion-item-header-color-hover", + "--spectrum-accordion-item-header-color-key-focus", + "--spectrum-accordion-item-header-disabled-color", + "--spectrum-accordion-item-header-font", + "--spectrum-accordion-item-header-font-size", + "--spectrum-accordion-item-header-font-style", + "--spectrum-accordion-item-header-font-weight", + "--spectrum-accordion-item-header-line-height", + "--spectrum-accordion-item-header-top-to-text-space", + "--spectrum-accordion-item-height", + "--spectrum-accordion-item-width", + "--spectrum-accordion-min-block-size", + "--spectrum-accordion-minimum-width", + "--spectrum-accordion-small-top-to-text-spacious", + "--spectrum-accordion-top-to-text-compact-extra-large", + "--spectrum-accordion-top-to-text-compact-large", + "--spectrum-accordion-top-to-text-compact-medium", + "--spectrum-accordion-top-to-text-compact-small", + "--spectrum-accordion-top-to-text-regular-extra-large", + "--spectrum-accordion-top-to-text-regular-large", + "--spectrum-accordion-top-to-text-regular-medium", + "--spectrum-accordion-top-to-text-regular-small", + "--spectrum-accordion-top-to-text-spacious-extra-large", + "--spectrum-accordion-top-to-text-spacious-large", + "--spectrum-accordion-top-to-text-spacious-medium", + "--spectrum-background-opacity-default", + "--spectrum-background-opacity-down", + "--spectrum-background-opacity-hover", + "--spectrum-background-opacity-key-focus", + "--spectrum-body-color", + "--spectrum-body-sans-serif-font-style", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-body-size-l", + "--spectrum-body-size-m", + "--spectrum-body-size-s", + "--spectrum-body-size-xs", + "--spectrum-bold-font-weight", + "--spectrum-cjk-line-height-100", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-50", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-400", + "--spectrum-component-height-75", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-disabled-content-color", + "--spectrum-divider-thickness-small", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-500", + "--spectrum-font-size-700", + "--spectrum-gray-300", + "--spectrum-gray-900-rgb", + "--spectrum-line-height-100", + "--spectrum-logical-rotation", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-sans-font-family-stack" + ], + "system": [], + "a11y": [] +} diff --git a/components/accordion/package.json b/components/accordion/package.json new file mode 100644 index 0000000000..9e27981361 --- /dev/null +++ b/components/accordion/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/accordion", + "version": "5.2.0", + "description": "The Spectrum CSS accordion component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/accordion", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/accordion" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/accordion/template.js b/components/accordion/template.js new file mode 100644 index 0000000000..3f4644c862 --- /dev/null +++ b/components/accordion/template.js @@ -0,0 +1,168 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const AccordionItem = ({ + heading, + content, + rootClass = "spectrum-Accordion-item", + id, + idx = 0, + isDisabled = false, + isOpen = false, + iconSize = "m", + customStyles = {}, + customClasses = [], + onclick, +} = {}, context = {}) => { + return html` +
({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + role="presentation" + @click=${onclick} + > + +

+ + + + ${Icon({ + iconName: !isOpen ? "ChevronRight" : "ChevronDown", + setName: "ui", + size: iconSize, + customClasses: [`${rootClass}Indicator`], + }, context)} + +

+ +
+ ${content} +
+
+ `; +}; + +export const Template = ({ + rootClass = "spectrum-Accordion", + size = "m", + density = "regular", + items = [], + id, + disableAll = false, + collapseAll = false, + customClasses = [], + customStyles = {}, +} = {}, context = {}) => { + const { updateArgs } = context; + + return html` +
({ ...a, [c]: true }), {}), + })}" + id=${ifDefined(id)} + role="region" + style=${styleMap(customStyles)} + > + ${repeat(Array.from(items.keys()), (heading, idx) => { + const item = items.get(heading); + return AccordionItem({ + ...item, + rootClass: `${rootClass}-item`, + heading, + idx, + iconSize: `${size}`, + isDisabled: item.isDisabled || disableAll, + isOpen: collapseAll === true ? false : item.isOpen, + onclick: () => { + if (item.isDisabled) return; + + // Update the args + const newItems = new Map(items); + newItems.set(heading, { + ...item, + isOpen: !item.isOpen, + }); + updateArgs({ items: newItems }); + }, + }, context); + })} +
+ `; +}; + +export const AccordionGroup = Variants({ + Template, + testData: [ + { + testHeading: "Standard", + customStyles: { + maxInlineSize: "500px", + }, + }, + { + testHeading: "Compact", + density: "compact", + collapseAll: true, + customStyles: { + maxInlineSize: "500px", + }, + withStates: false, + }, + { + testHeading: "Spacious", + density: "spacious", + collapseAll: true, + customStyles: { + maxInlineSize: "500px", + }, + withStates: false, + }, + { + testHeading: "Text wrapping", + collapseAll: true, + customStyles: { + maxInlineSize: "300px", + }, + withStates: false, + }, + ], + stateData: [ + { + testHeading: "Disabled", + disableAll: true, + }, + ], +}); diff --git a/components/actionbar/index-base.css b/components/actionbar/index-base.css new file mode 100644 index 0000000000..c865204bd8 --- /dev/null +++ b/components/actionbar/index-base.css @@ -0,0 +1,120 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ActionBar { + --spectrum-actionbar-height: var(--spectrum-action-bar-height); + --spectrum-actionbar-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-actionbar-item-counter-font-size: var(--spectrum-font-size-100); + --spectrum-actionbar-item-counter-line-height: var(--spectrum-line-height-100); + --spectrum-actionbar-item-counter-color: var(--spectrum-neutral-content-color-default); + --spectrum-actionbar-popover-background-color: var(--spectrum-gray-50); + --spectrum-actionbar-popover-border-color: var(--spectrum-gray-400); + --spectrum-actionbar-emphasized-background-color: var(--spectrum-informative-background-color-default); + --spectrum-actionbar-emphasized-item-counter-color: var(--spectrum-white); + --spectrum-actionbar-spacing-outer-edge: var(--spectrum-spacing-300); + --spectrum-actionbar-spacing-close-button-top: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-close-button-start: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-close-button-end: var(--spectrum-spacing-75); + --spectrum-actionbar-spacing-item-counter-top: var(--spectrum-action-bar-top-to-item-counter); + --spectrum-actionbar-spacing-item-counter-end: var(--spectrum-spacing-400); + --spectrum-actionbar-spacing-action-group-top: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-action-group-end: var(--spectrum-spacing-100); + --spectrum-actionbar-shadow-horizontal: var(--spectrum-drop-shadow-x); + --spectrum-actionbar-shadow-vertical: var(--spectrum-drop-shadow-y); + --spectrum-actionbar-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-actionbar-shadow-color: var(--spectrum-drop-shadow-color); +} +.spectrum-ActionBar:lang(ja), +.spectrum-ActionBar:lang(ko), +.spectrum-ActionBar:lang(zh) { + --spectrum-actionbar-item-counter-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +@media (forced-colors: active) { + .spectrum-ActionBar, + .spectrum-ActionBar--emphasized .spectrum-ActionBar-popover { + --highcontrast-actionbar-popover-border-color: CanvasText; + } +} +.spectrum-ActionBar { + padding: 0 var(--mod-actionbar-spacing-outer-edge, var(--spectrum-actionbar-spacing-outer-edge)); + inset-block-end: 0; + z-index: 1; + box-sizing: border-box; + pointer-events: none; + block-size: 0; + opacity: 0; +} +.spectrum-ActionBar.is-open { + block-size: calc(var(--mod-actionbar-spacing-outer-edge, var(--spectrum-actionbar-spacing-outer-edge)) + var(--mod-actionbar-height, var(--spectrum-actionbar-height))); + opacity: 1; +} +.spectrum-ActionBar .spectrum-ActionBar-popover { + block-size: var(--mod-actionbar-height, var(--spectrum-actionbar-height)); + box-sizing: border-box; + inline-size: 100%; + margin: auto; + padding-block-start: 0; + padding-block-end: 0; + position: relative; + border-radius: var(--mod-actionbar-corner-radius, var(--spectrum-actionbar-corner-radius)); + border-color: var(--highcontrast-actionbar-popover-border-color, var(--mod-actionbar-popover-border-color, var(--spectrum-actionbar-popover-border-color))); + background-color: var(--mod-actionbar-popover-background-color, var(--spectrum-actionbar-popover-background-color)); + filter: drop-shadow(var(--mod-actionbar-shadow-horizontal, var(--spectrum-actionbar-shadow-horizontal)) var(--mod-actionbar-shadow-vertical, var(--spectrum-actionbar-shadow-vertical)) var(--mod-actionbar-shadow-blur, var(--spectrum-actionbar-shadow-blur)) var(--mod-actionbar-shadow-color, var(--spectrum-actionbar-shadow-color))); + pointer-events: auto; + display: flex; + flex-direction: row; +} +.spectrum-ActionBar .spectrum-CloseButton { + margin-inline-start: var(--mod-actionbar-spacing-close-button-start, var(--spectrum-actionbar-spacing-close-button-start)); + margin-inline-end: var(--mod-actionbar-spacing-close-button-end, var(--spectrum-actionbar-spacing-close-button-end)); + margin-block-start: var(--mod-actionbar-spacing-close-button-top, var(--spectrum-actionbar-spacing-close-button-top)); + flex-shrink: 0; +} +.spectrum-ActionBar .spectrum-FieldLabel { + margin-inline-end: var(--mod-actionbar-spacing-item-counter-end, var(--spectrum-actionbar-spacing-item-counter-end)); + margin-block-start: var(--mod-actionbar-spacing-item-counter-top, var(--spectrum-actionbar-spacing-item-counter-top)); + padding: 0; + font-size: var(--mod-actionbar-item-counter-font-size, var(--spectrum-actionbar-item-counter-font-size)); + color: var(--mod-actionbar-item-counter-color, var(--spectrum-actionbar-item-counter-color)); + line-height: var(--mod-actionbar-item-counter-line-height, var(--spectrum-actionbar-item-counter-line-height)); +} +.spectrum-ActionBar .spectrum-FieldLabel:lang(ja), +.spectrum-ActionBar .spectrum-FieldLabel:lang(ko), +.spectrum-ActionBar .spectrum-FieldLabel:lang(zh) { + line-height: var(--mod-actionbar-item-counter-line-height-cjk, var(--spectrum-actionbar-item-counter-line-height-cjk)); +} +.spectrum-ActionBar .spectrum-ActionGroup { + margin-inline-end: var(--mod-actionbar-spacing-action-group-end, var(--spectrum-actionbar-spacing-action-group-end)); + margin-block-start: var(--mod-actionbar-spacing-action-group-top, var(--spectrum-actionbar-spacing-action-group-top)); + margin-inline-start: auto; +} +.spectrum-ActionBar--emphasized .spectrum-ActionBar-popover { + filter: none; + background-color: var(--mod-actionbar-emphasized-background-color, var(--spectrum-actionbar-emphasized-background-color)); + border-color: transparent; +} +.spectrum-ActionBar--emphasized .spectrum-FieldLabel { + color: var(--mod-actionbar-emphasized-item-counter-color, var(--spectrum-actionbar-emphasized-item-counter-color)); +} +.spectrum-ActionBar--sticky { + inset-inline-start: 0; + inset-inline-end: 0; + position: sticky; +} +.spectrum-ActionBar--fixed { + position: fixed; +} +.spectrum-ActionBar--flexible .spectrum-ActionBar-popover { + inline-size: auto; +} +/*# sourceMappingURL=components/actionbar/index.css.map */ diff --git a/components/actionbar/index-vars.css b/components/actionbar/index-vars.css new file mode 100644 index 0000000000..c865204bd8 --- /dev/null +++ b/components/actionbar/index-vars.css @@ -0,0 +1,120 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ActionBar { + --spectrum-actionbar-height: var(--spectrum-action-bar-height); + --spectrum-actionbar-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-actionbar-item-counter-font-size: var(--spectrum-font-size-100); + --spectrum-actionbar-item-counter-line-height: var(--spectrum-line-height-100); + --spectrum-actionbar-item-counter-color: var(--spectrum-neutral-content-color-default); + --spectrum-actionbar-popover-background-color: var(--spectrum-gray-50); + --spectrum-actionbar-popover-border-color: var(--spectrum-gray-400); + --spectrum-actionbar-emphasized-background-color: var(--spectrum-informative-background-color-default); + --spectrum-actionbar-emphasized-item-counter-color: var(--spectrum-white); + --spectrum-actionbar-spacing-outer-edge: var(--spectrum-spacing-300); + --spectrum-actionbar-spacing-close-button-top: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-close-button-start: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-close-button-end: var(--spectrum-spacing-75); + --spectrum-actionbar-spacing-item-counter-top: var(--spectrum-action-bar-top-to-item-counter); + --spectrum-actionbar-spacing-item-counter-end: var(--spectrum-spacing-400); + --spectrum-actionbar-spacing-action-group-top: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-action-group-end: var(--spectrum-spacing-100); + --spectrum-actionbar-shadow-horizontal: var(--spectrum-drop-shadow-x); + --spectrum-actionbar-shadow-vertical: var(--spectrum-drop-shadow-y); + --spectrum-actionbar-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-actionbar-shadow-color: var(--spectrum-drop-shadow-color); +} +.spectrum-ActionBar:lang(ja), +.spectrum-ActionBar:lang(ko), +.spectrum-ActionBar:lang(zh) { + --spectrum-actionbar-item-counter-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +@media (forced-colors: active) { + .spectrum-ActionBar, + .spectrum-ActionBar--emphasized .spectrum-ActionBar-popover { + --highcontrast-actionbar-popover-border-color: CanvasText; + } +} +.spectrum-ActionBar { + padding: 0 var(--mod-actionbar-spacing-outer-edge, var(--spectrum-actionbar-spacing-outer-edge)); + inset-block-end: 0; + z-index: 1; + box-sizing: border-box; + pointer-events: none; + block-size: 0; + opacity: 0; +} +.spectrum-ActionBar.is-open { + block-size: calc(var(--mod-actionbar-spacing-outer-edge, var(--spectrum-actionbar-spacing-outer-edge)) + var(--mod-actionbar-height, var(--spectrum-actionbar-height))); + opacity: 1; +} +.spectrum-ActionBar .spectrum-ActionBar-popover { + block-size: var(--mod-actionbar-height, var(--spectrum-actionbar-height)); + box-sizing: border-box; + inline-size: 100%; + margin: auto; + padding-block-start: 0; + padding-block-end: 0; + position: relative; + border-radius: var(--mod-actionbar-corner-radius, var(--spectrum-actionbar-corner-radius)); + border-color: var(--highcontrast-actionbar-popover-border-color, var(--mod-actionbar-popover-border-color, var(--spectrum-actionbar-popover-border-color))); + background-color: var(--mod-actionbar-popover-background-color, var(--spectrum-actionbar-popover-background-color)); + filter: drop-shadow(var(--mod-actionbar-shadow-horizontal, var(--spectrum-actionbar-shadow-horizontal)) var(--mod-actionbar-shadow-vertical, var(--spectrum-actionbar-shadow-vertical)) var(--mod-actionbar-shadow-blur, var(--spectrum-actionbar-shadow-blur)) var(--mod-actionbar-shadow-color, var(--spectrum-actionbar-shadow-color))); + pointer-events: auto; + display: flex; + flex-direction: row; +} +.spectrum-ActionBar .spectrum-CloseButton { + margin-inline-start: var(--mod-actionbar-spacing-close-button-start, var(--spectrum-actionbar-spacing-close-button-start)); + margin-inline-end: var(--mod-actionbar-spacing-close-button-end, var(--spectrum-actionbar-spacing-close-button-end)); + margin-block-start: var(--mod-actionbar-spacing-close-button-top, var(--spectrum-actionbar-spacing-close-button-top)); + flex-shrink: 0; +} +.spectrum-ActionBar .spectrum-FieldLabel { + margin-inline-end: var(--mod-actionbar-spacing-item-counter-end, var(--spectrum-actionbar-spacing-item-counter-end)); + margin-block-start: var(--mod-actionbar-spacing-item-counter-top, var(--spectrum-actionbar-spacing-item-counter-top)); + padding: 0; + font-size: var(--mod-actionbar-item-counter-font-size, var(--spectrum-actionbar-item-counter-font-size)); + color: var(--mod-actionbar-item-counter-color, var(--spectrum-actionbar-item-counter-color)); + line-height: var(--mod-actionbar-item-counter-line-height, var(--spectrum-actionbar-item-counter-line-height)); +} +.spectrum-ActionBar .spectrum-FieldLabel:lang(ja), +.spectrum-ActionBar .spectrum-FieldLabel:lang(ko), +.spectrum-ActionBar .spectrum-FieldLabel:lang(zh) { + line-height: var(--mod-actionbar-item-counter-line-height-cjk, var(--spectrum-actionbar-item-counter-line-height-cjk)); +} +.spectrum-ActionBar .spectrum-ActionGroup { + margin-inline-end: var(--mod-actionbar-spacing-action-group-end, var(--spectrum-actionbar-spacing-action-group-end)); + margin-block-start: var(--mod-actionbar-spacing-action-group-top, var(--spectrum-actionbar-spacing-action-group-top)); + margin-inline-start: auto; +} +.spectrum-ActionBar--emphasized .spectrum-ActionBar-popover { + filter: none; + background-color: var(--mod-actionbar-emphasized-background-color, var(--spectrum-actionbar-emphasized-background-color)); + border-color: transparent; +} +.spectrum-ActionBar--emphasized .spectrum-FieldLabel { + color: var(--mod-actionbar-emphasized-item-counter-color, var(--spectrum-actionbar-emphasized-item-counter-color)); +} +.spectrum-ActionBar--sticky { + inset-inline-start: 0; + inset-inline-end: 0; + position: sticky; +} +.spectrum-ActionBar--fixed { + position: fixed; +} +.spectrum-ActionBar--flexible .spectrum-ActionBar-popover { + inline-size: auto; +} +/*# sourceMappingURL=components/actionbar/index.css.map */ diff --git a/components/actionbar/index.css b/components/actionbar/index.css new file mode 100644 index 0000000000..c865204bd8 --- /dev/null +++ b/components/actionbar/index.css @@ -0,0 +1,120 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ActionBar { + --spectrum-actionbar-height: var(--spectrum-action-bar-height); + --spectrum-actionbar-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-actionbar-item-counter-font-size: var(--spectrum-font-size-100); + --spectrum-actionbar-item-counter-line-height: var(--spectrum-line-height-100); + --spectrum-actionbar-item-counter-color: var(--spectrum-neutral-content-color-default); + --spectrum-actionbar-popover-background-color: var(--spectrum-gray-50); + --spectrum-actionbar-popover-border-color: var(--spectrum-gray-400); + --spectrum-actionbar-emphasized-background-color: var(--spectrum-informative-background-color-default); + --spectrum-actionbar-emphasized-item-counter-color: var(--spectrum-white); + --spectrum-actionbar-spacing-outer-edge: var(--spectrum-spacing-300); + --spectrum-actionbar-spacing-close-button-top: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-close-button-start: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-close-button-end: var(--spectrum-spacing-75); + --spectrum-actionbar-spacing-item-counter-top: var(--spectrum-action-bar-top-to-item-counter); + --spectrum-actionbar-spacing-item-counter-end: var(--spectrum-spacing-400); + --spectrum-actionbar-spacing-action-group-top: var(--spectrum-spacing-100); + --spectrum-actionbar-spacing-action-group-end: var(--spectrum-spacing-100); + --spectrum-actionbar-shadow-horizontal: var(--spectrum-drop-shadow-x); + --spectrum-actionbar-shadow-vertical: var(--spectrum-drop-shadow-y); + --spectrum-actionbar-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-actionbar-shadow-color: var(--spectrum-drop-shadow-color); +} +.spectrum-ActionBar:lang(ja), +.spectrum-ActionBar:lang(ko), +.spectrum-ActionBar:lang(zh) { + --spectrum-actionbar-item-counter-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +@media (forced-colors: active) { + .spectrum-ActionBar, + .spectrum-ActionBar--emphasized .spectrum-ActionBar-popover { + --highcontrast-actionbar-popover-border-color: CanvasText; + } +} +.spectrum-ActionBar { + padding: 0 var(--mod-actionbar-spacing-outer-edge, var(--spectrum-actionbar-spacing-outer-edge)); + inset-block-end: 0; + z-index: 1; + box-sizing: border-box; + pointer-events: none; + block-size: 0; + opacity: 0; +} +.spectrum-ActionBar.is-open { + block-size: calc(var(--mod-actionbar-spacing-outer-edge, var(--spectrum-actionbar-spacing-outer-edge)) + var(--mod-actionbar-height, var(--spectrum-actionbar-height))); + opacity: 1; +} +.spectrum-ActionBar .spectrum-ActionBar-popover { + block-size: var(--mod-actionbar-height, var(--spectrum-actionbar-height)); + box-sizing: border-box; + inline-size: 100%; + margin: auto; + padding-block-start: 0; + padding-block-end: 0; + position: relative; + border-radius: var(--mod-actionbar-corner-radius, var(--spectrum-actionbar-corner-radius)); + border-color: var(--highcontrast-actionbar-popover-border-color, var(--mod-actionbar-popover-border-color, var(--spectrum-actionbar-popover-border-color))); + background-color: var(--mod-actionbar-popover-background-color, var(--spectrum-actionbar-popover-background-color)); + filter: drop-shadow(var(--mod-actionbar-shadow-horizontal, var(--spectrum-actionbar-shadow-horizontal)) var(--mod-actionbar-shadow-vertical, var(--spectrum-actionbar-shadow-vertical)) var(--mod-actionbar-shadow-blur, var(--spectrum-actionbar-shadow-blur)) var(--mod-actionbar-shadow-color, var(--spectrum-actionbar-shadow-color))); + pointer-events: auto; + display: flex; + flex-direction: row; +} +.spectrum-ActionBar .spectrum-CloseButton { + margin-inline-start: var(--mod-actionbar-spacing-close-button-start, var(--spectrum-actionbar-spacing-close-button-start)); + margin-inline-end: var(--mod-actionbar-spacing-close-button-end, var(--spectrum-actionbar-spacing-close-button-end)); + margin-block-start: var(--mod-actionbar-spacing-close-button-top, var(--spectrum-actionbar-spacing-close-button-top)); + flex-shrink: 0; +} +.spectrum-ActionBar .spectrum-FieldLabel { + margin-inline-end: var(--mod-actionbar-spacing-item-counter-end, var(--spectrum-actionbar-spacing-item-counter-end)); + margin-block-start: var(--mod-actionbar-spacing-item-counter-top, var(--spectrum-actionbar-spacing-item-counter-top)); + padding: 0; + font-size: var(--mod-actionbar-item-counter-font-size, var(--spectrum-actionbar-item-counter-font-size)); + color: var(--mod-actionbar-item-counter-color, var(--spectrum-actionbar-item-counter-color)); + line-height: var(--mod-actionbar-item-counter-line-height, var(--spectrum-actionbar-item-counter-line-height)); +} +.spectrum-ActionBar .spectrum-FieldLabel:lang(ja), +.spectrum-ActionBar .spectrum-FieldLabel:lang(ko), +.spectrum-ActionBar .spectrum-FieldLabel:lang(zh) { + line-height: var(--mod-actionbar-item-counter-line-height-cjk, var(--spectrum-actionbar-item-counter-line-height-cjk)); +} +.spectrum-ActionBar .spectrum-ActionGroup { + margin-inline-end: var(--mod-actionbar-spacing-action-group-end, var(--spectrum-actionbar-spacing-action-group-end)); + margin-block-start: var(--mod-actionbar-spacing-action-group-top, var(--spectrum-actionbar-spacing-action-group-top)); + margin-inline-start: auto; +} +.spectrum-ActionBar--emphasized .spectrum-ActionBar-popover { + filter: none; + background-color: var(--mod-actionbar-emphasized-background-color, var(--spectrum-actionbar-emphasized-background-color)); + border-color: transparent; +} +.spectrum-ActionBar--emphasized .spectrum-FieldLabel { + color: var(--mod-actionbar-emphasized-item-counter-color, var(--spectrum-actionbar-emphasized-item-counter-color)); +} +.spectrum-ActionBar--sticky { + inset-inline-start: 0; + inset-inline-end: 0; + position: sticky; +} +.spectrum-ActionBar--fixed { + position: fixed; +} +.spectrum-ActionBar--flexible .spectrum-ActionBar-popover { + inline-size: auto; +} +/*# sourceMappingURL=components/actionbar/index.css.map */ diff --git a/components/actionbar/metadata.json b/components/actionbar/metadata.json new file mode 100644 index 0000000000..27668e09ba --- /dev/null +++ b/components/actionbar/metadata.json @@ -0,0 +1,87 @@ +{ + "selectors": [ + ".spectrum-ActionBar", + ".spectrum-ActionBar .spectrum-ActionBar-popover", + ".spectrum-ActionBar .spectrum-ActionGroup", + ".spectrum-ActionBar .spectrum-CloseButton", + ".spectrum-ActionBar .spectrum-FieldLabel", + ".spectrum-ActionBar .spectrum-FieldLabel:lang(ja),\n.spectrum-ActionBar .spectrum-FieldLabel:lang(ko),\n.spectrum-ActionBar .spectrum-FieldLabel:lang(zh)", + ".spectrum-ActionBar,\n\t.spectrum-ActionBar--emphasized .spectrum-ActionBar-popover", + ".spectrum-ActionBar--emphasized .spectrum-ActionBar-popover", + ".spectrum-ActionBar--emphasized .spectrum-FieldLabel", + ".spectrum-ActionBar--fixed", + ".spectrum-ActionBar--flexible .spectrum-ActionBar-popover", + ".spectrum-ActionBar--sticky", + ".spectrum-ActionBar.is-open", + ".spectrum-ActionBar:lang(ja),\n.spectrum-ActionBar:lang(ko),\n.spectrum-ActionBar:lang(zh)" + ], + "mods": [ + "--mod-actionbar-corner-radius", + "--mod-actionbar-emphasized-background-color", + "--mod-actionbar-emphasized-item-counter-color", + "--mod-actionbar-height", + "--mod-actionbar-item-counter-color", + "--mod-actionbar-item-counter-font-size", + "--mod-actionbar-item-counter-line-height", + "--mod-actionbar-item-counter-line-height-cjk", + "--mod-actionbar-popover-background-color", + "--mod-actionbar-popover-border-color", + "--mod-actionbar-shadow-blur", + "--mod-actionbar-shadow-color", + "--mod-actionbar-shadow-horizontal", + "--mod-actionbar-shadow-vertical", + "--mod-actionbar-spacing-action-group-end", + "--mod-actionbar-spacing-action-group-top", + "--mod-actionbar-spacing-close-button-end", + "--mod-actionbar-spacing-close-button-start", + "--mod-actionbar-spacing-close-button-top", + "--mod-actionbar-spacing-item-counter-end", + "--mod-actionbar-spacing-item-counter-top", + "--mod-actionbar-spacing-outer-edge" + ], + "spectrum": [ + "--spectrum-action-bar-height", + "--spectrum-action-bar-top-to-item-counter", + "--spectrum-actionbar-corner-radius", + "--spectrum-actionbar-emphasized-background-color", + "--spectrum-actionbar-emphasized-item-counter-color", + "--spectrum-actionbar-height", + "--spectrum-actionbar-item-counter-color", + "--spectrum-actionbar-item-counter-font-size", + "--spectrum-actionbar-item-counter-line-height", + "--spectrum-actionbar-item-counter-line-height-cjk", + "--spectrum-actionbar-popover-background-color", + "--spectrum-actionbar-popover-border-color", + "--spectrum-actionbar-shadow-blur", + "--spectrum-actionbar-shadow-color", + "--spectrum-actionbar-shadow-horizontal", + "--spectrum-actionbar-shadow-vertical", + "--spectrum-actionbar-spacing-action-group-end", + "--spectrum-actionbar-spacing-action-group-top", + "--spectrum-actionbar-spacing-close-button-end", + "--spectrum-actionbar-spacing-close-button-start", + "--spectrum-actionbar-spacing-close-button-top", + "--spectrum-actionbar-spacing-item-counter-end", + "--spectrum-actionbar-spacing-item-counter-top", + "--spectrum-actionbar-spacing-outer-edge", + "--spectrum-cjk-line-height-100", + "--spectrum-corner-radius-100", + "--spectrum-drop-shadow-blur", + "--spectrum-drop-shadow-color", + "--spectrum-drop-shadow-x", + "--spectrum-drop-shadow-y", + "--spectrum-font-size-100", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-informative-background-color-default", + "--spectrum-line-height-100", + "--spectrum-neutral-content-color-default", + "--spectrum-spacing-100", + "--spectrum-spacing-300", + "--spectrum-spacing-400", + "--spectrum-spacing-75", + "--spectrum-white" + ], + "system": [], + "a11y": ["--highcontrast-actionbar-popover-border-color"] +} diff --git a/components/actionbar/package.json b/components/actionbar/package.json new file mode 100644 index 0000000000..babb3348e0 --- /dev/null +++ b/components/actionbar/package.json @@ -0,0 +1,47 @@ +{ + "name": "@spectrum-css/actionbar", + "version": "8.1.1", + "description": "The Spectrum CSS actionbar component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/actionbar", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/actionbar" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actiongroup": ">=5", + "@spectrum-css/closebutton": ">=5", + "@spectrum-css/fieldlabel": ">=8", + "@spectrum-css/popover": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/actiongroup": "workspace:^", + "@spectrum-css/closebutton": "workspace:^", + "@spectrum-css/fieldlabel": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/actionbar/template.js b/components/actionbar/template.js new file mode 100644 index 0000000000..7da46ce1c2 --- /dev/null +++ b/components/actionbar/template.js @@ -0,0 +1,91 @@ +import { Template as ActionGroup } from "@spectrum-css/actiongroup/stories/template.js"; +import { Template as CloseButton } from "@spectrum-css/closebutton/stories/template.js"; +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { Template as Popover } from "@spectrum-css/popover/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ActionBar", + size = "m", + isOpen = true, + isEmphasized = false, + isSticky = false, + isFixed = false, + isFlexible = false, + customClasses = [], +}) => html` +
({ ...a, [c]: true }), {}), + })} + > + ${Popover({ + customClasses: [`${rootClass}-popover`], + isOpen, + content: [ + CloseButton({ + label: "Clear selection", + staticColor: isEmphasized ? "white" : undefined, + }), + FieldLabel({ size: "s", label: "2 Selected" }), + ActionGroup({ + size: "m", + areQuiet: true, + staticColor: isEmphasized ? "white" : undefined, + content: [ + { + iconName: "Edit", + label: "Edit", + }, + { + iconName: "Copy", + label: "Copy", + }, + { + iconName: "Delete", + label: "Delete", + }, + ], + }), + ], + })} +
+`; + +export const ActionBarGroup = Variants({ + Template, + testData: [ + {}, + { + testHeading: "Emphasized", + isEmphasized: true, + }, + ], + stateData: [ + // @todo these only work if rendered in an iframe + // { + // testHeading: "Sticky", + // isSticky: true, + // }, + // { + // testHeading: "Fixed", + // isFixed: true, + // }, + // { + // testHeading: "Flexible", + // isFlexible: true, + // }, + ], +}); diff --git a/components/actionbutton/index-base.css b/components/actionbutton/index-base.css new file mode 100644 index 0000000000..0d43301fdb --- /dev/null +++ b/components/actionbutton/index-base.css @@ -0,0 +1,377 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ActionButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-ActionButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-ActionButton:focus { + outline: none; +} +.spectrum-ActionButton.is-disabled, +.spectrum-ActionButton:disabled { + cursor: default; +} +.spectrum-ActionButton-icon { + flex-shrink: 0; + max-block-size: 100%; +} +a.spectrum-ActionButton { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-ActionButton-label { + align-self: center; + justify-self: center; + text-align: center; +} +.spectrum-ActionButton-label:empty { + display: none; +} +.spectrum-ActionButton { + --spectrum-actionbutton-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-actionbutton-border-radius: var(--spectrum-corner-radius-100); + --spectrum-actionbutton-border-width: var(--spectrum-border-width-100); + --spectrum-actionbutton-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-actionbutton-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-actionbutton-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-actionbutton-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-actionbutton-focus-indicator-border-radius: calc(var(--spectrum-actionbutton-border-radius) + var(--spectrum-actionbutton-focus-indicator-gap)); +} +.spectrum-ActionButton:dir(rtl), +[dir="rtl"] .spectrum-ActionButton { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-ActionButton.is-selected { + --mod-actionbutton-background-color-default: var(--mod-actionbutton-background-color-default-selected, var(--spectrum-neutral-background-color-selected-default)); + --mod-actionbutton-background-color-hover: var(--mod-actionbutton-background-color-hover-selected, var(--spectrum-neutral-background-color-selected-hover)); + --mod-actionbutton-background-color-down: var(--mod-actionbutton-background-color-down-selected, var(--spectrum-neutral-background-color-selected-down)); + --mod-actionbutton-background-color-focus: var(--mod-actionbutton-background-color-focus-selected, var(--spectrum-neutral-background-color-selected-key-focus)); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-content-color-default-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-content-color-hover-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-content-color-down-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-content-color-focus-selected, var(--spectrum-gray-50)); +} +.spectrum-ActionButton.is-selected.spectrum-ActionButton--emphasized { + --mod-actionbutton-background-color-default: var(--mod-actionbutton-background-color-default-selected-emphasized, var(--spectrum-accent-background-color-default)); + --mod-actionbutton-background-color-hover: var(--mod-actionbutton-background-color-hover-selected-emphasized, var(--spectrum-accent-background-color-hover)); + --mod-actionbutton-background-color-down: var(--mod-actionbutton-background-color-down-selected-emphasized, var(--spectrum-accent-background-color-down)); + --mod-actionbutton-background-color-focus: var(--mod-actionbutton-background-color-focus-selected-emphasized, var(--spectrum-accent-background-color-key-focus)); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-content-color-default-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-content-color-hover-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-content-color-down-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-content-color-focus-selected-emphasized, var(--spectrum-white)); +} +.spectrum-ActionButton--sizeXS { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-50) * 2 + var(--spectrum-workflow-icon-size-50)); + --spectrum-actionbutton-height: var(--spectrum-component-height-50); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-50); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-50); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-small); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-50) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-50) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-50) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeS { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-75) * 2 + var(--spectrum-workflow-icon-size-75)); + --spectrum-actionbutton-height: var(--spectrum-component-height-75); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-75); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-small); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-75) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-75) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-75) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeM { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-100) * 2 + var(--spectrum-workflow-icon-size-100)); + --spectrum-actionbutton-height: var(--spectrum-component-height-100); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-100); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-medium); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-100) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-100) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-100) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeL { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-200) * 2 + var(--spectrum-workflow-icon-size-200)); + --spectrum-actionbutton-height: var(--spectrum-component-height-200); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-200); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-large); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-200) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-200) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-200) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeXL { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-300) * 2 + var(--spectrum-workflow-icon-size-300)); + --spectrum-actionbutton-height: var(--spectrum-component-height-300); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-300); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-300); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-large); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-300) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-300) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-300) - var(--spectrum-actionbutton-border-width)); +} +@media (forced-colors: active) { + .spectrum-ActionButton { + --highcontrast-actionbutton-focus-indicator-color: ButtonText; + } + .spectrum-ActionButton:after { + forced-color-adjust: none; + } + .spectrum-ActionButton.is-selected { + --highcontrast-actionbutton-background-color-default: Highlight; + --highcontrast-actionbutton-background-color-hover: Highlight; + --highcontrast-actionbutton-background-color-focus: Highlight; + --highcontrast-actionbutton-background-color-down: Highlight; + --highcontrast-actionbutton-background-color-disabled: ButtonFace; + --highcontrast-actionbutton-border-color-default: HighlightText; + --highcontrast-actionbutton-border-color-hover: HighlightText; + --highcontrast-actionbutton-border-color-focus: HighlightText; + --highcontrast-actionbutton-border-color-down: HighlightText; + --highcontrast-actionbutton-border-color-disabled: GrayText; + --highcontrast-actionbutton-content-color-default: HighlightText; + --highcontrast-actionbutton-content-color-hover: HighlightText; + --highcontrast-actionbutton-content-color-focus: HighlightText; + --highcontrast-actionbutton-content-color-down: HighlightText; + --highcontrast-actionbutton-content-color-disabled: GrayText; + } + .spectrum-ActionButton.is-selected .spectrum-ActionButton-hold, + .spectrum-ActionButton.is-selected .spectrum-ActionButton-icon, + .spectrum-ActionButton.is-selected .spectrum-ActionButton-label { + forced-color-adjust: none; + } +} +.spectrum-ActionButton { + position: relative; + min-inline-size: var(--mod-actionbutton-min-width, var(--spectrum-actionbutton-min-width)); + block-size: var(--mod-actionbutton-height, var(--spectrum-actionbutton-height)); + border-radius: var(--mod-actionbutton-border-radius, var(--spectrum-actionbutton-border-radius)); + border-width: var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width)); + gap: calc(var(--mod-actionbutton-text-to-visual, var(--spectrum-actionbutton-text-to-visual)) + var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text)) - var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only))); + padding-inline: var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text)); + background-color: var(--highcontrast-actionbutton-background-color-default, var(--mod-actionbutton-background-color-default, var(--spectrum-actionbutton-background-color-default))); + border-color: var(--highcontrast-actionbutton-border-color-default, var(--mod-actionbutton-border-color-default, var(--spectrum-actionbutton-border-color-default))); + color: var(--highcontrast-actionbutton-content-color-default, var(--mod-actionbutton-content-color-default, var(--spectrum-actionbutton-content-color-default))); +} +@media (hover: hover) { + .spectrum-ActionButton:hover { + background-color: var(--highcontrast-actionbutton-background-color-hover, var(--mod-actionbutton-background-color-hover, var(--spectrum-actionbutton-background-color-hover))); + border-color: var(--highcontrast-actionbutton-border-color-hover, var(--mod-actionbutton-border-color-hover, var(--spectrum-actionbutton-border-color-hover))); + color: var(--highcontrast-actionbutton-content-color-hover, var(--mod-actionbutton-content-color-hover, var(--spectrum-actionbutton-content-color-hover))); + } +} +.spectrum-ActionButton:focus-visible { + background-color: var(--highcontrast-actionbutton-background-color-focus, var(--mod-actionbutton-background-color-focus, var(--spectrum-actionbutton-background-color-focus))); + border-color: var(--highcontrast-actionbutton-border-color-focus, var(--mod-actionbutton-border-color-focus, var(--spectrum-actionbutton-border-color-focus))); + color: var(--highcontrast-actionbutton-content-color-focus, var(--mod-actionbutton-content-color-focus, var(--spectrum-actionbutton-content-color-focus))); +} +.spectrum-ActionButton:active { + background-color: var(--highcontrast-actionbutton-background-color-down, var(--mod-actionbutton-background-color-down, var(--spectrum-actionbutton-background-color-down))); + border-color: var(--highcontrast-actionbutton-border-color-down, var(--mod-actionbutton-border-color-down, var(--spectrum-actionbutton-border-color-down))); + color: var(--highcontrast-actionbutton-content-color-down, var(--mod-actionbutton-content-color-down, var(--spectrum-actionbutton-content-color-down))); +} +.spectrum-ActionButton.is-disabled, +.spectrum-ActionButton:disabled { + background-color: var(--highcontrast-actionbutton-background-color-disabled, var(--mod-actionbutton-background-color-disabled, var(--spectrum-actionbutton-background-color-disabled))); + border-color: var(--highcontrast-actionbutton-border-color-disabled, var(--mod-actionbutton-border-color-disabled, var(--spectrum-actionbutton-border-color-disabled))); + color: var(--highcontrast-actionbutton-content-color-disabled, var(--mod-actionbutton-content-color-disabled, var(--spectrum-actionbutton-content-color-disabled))); +} +.spectrum-ActionButton-icon { + inline-size: var(--mod-actionbutton-icon-size, var(--spectrum-actionbutton-icon-size)); + block-size: var(--mod-actionbutton-icon-size, var(--spectrum-actionbutton-icon-size)); + margin-inline-start: calc(var(--mod-actionbutton-edge-to-visual, var(--spectrum-actionbutton-edge-to-visual)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); + margin-inline-end: calc(var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); + color: inherit; +} +.spectrum-ActionButton-hold + .spectrum-ActionButton-icon, +.spectrum-ActionButton-icon:only-child { + margin-inline-start: calc(var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); +} +.spectrum-ActionButton-label { + pointer-events: none; + font-size: var(--mod-actionbutton-font-size, var(--spectrum-actionbutton-font-size)); + white-space: nowrap; + color: var(--mod-actionbutton-label-color, inherit); + text-overflow: ellipsis; + overflow: hidden; +} +.spectrum-ActionButton-hold { + position: absolute; + inset-inline-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))); + inset-block-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))); + color: inherit; + transform: var(--spectrum-logical-rotation); +} +.spectrum-ActionButton { + transition: border-color var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration)) ease-in-out; +} +.spectrum-ActionButton:after { + position: absolute; + inset: 0; + margin: calc((var(--mod-actionbutton-focus-indicator-gap, var(--spectrum-actionbutton-focus-indicator-gap)) + var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))) * -1); + border-radius: var(--mod-actionbutton-focus-indicator-border-radius, var(--spectrum-actionbutton-focus-indicator-border-radius)); + transition: box-shadow var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration)) ease-in-out; + pointer-events: none; + content: ""; +} +.spectrum-ActionButton:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-ActionButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-actionbutton-focus-indicator-thickness, var(--spectrum-actionbutton-focus-indicator-thickness)) var(--highcontrast-actionbutton-focus-indicator-color, var(--mod-actionbutton-focus-indicator-color, var(--spectrum-actionbutton-focus-indicator-color))); +} +.spectrum-ActionButton { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--quiet { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-quiet-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-quiet-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-quiet-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-quiet-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-quiet-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-quiet-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-quiet-border-color-disabled); +} +.spectrum-ActionButton.is-selected { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-selected-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-selected-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-selected-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-selected-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-selected-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-selected-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack.spectrum-ActionButton--quiet { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-focus); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite.spectrum-ActionButton--quiet { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-focus); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticblack-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticblack-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticblack-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticblack-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticblack-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticblack-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticblack-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticblack-border-color-focus); + --spectrum-actionbutton-content-color-default: var(--system-spectrum-actionbutton-staticblack-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--system-spectrum-actionbutton-staticblack-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--system-spectrum-actionbutton-staticblack-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--system-spectrum-actionbutton-staticblack-content-color-focus); + --spectrum-actionbutton-focus-indicator-color: var(--system-spectrum-actionbutton-staticblack-focus-indicator-color); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticblack-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-staticblack-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack.is-selected { + --mod-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default); + --mod-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover); + --mod-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down); + --mod-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus)); + --mod-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled); + --mod-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticwhite-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticwhite-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticwhite-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticwhite-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticwhite-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticwhite-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticwhite-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticwhite-border-color-focus); + --spectrum-actionbutton-content-color-default: var(--system-spectrum-actionbutton-staticwhite-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--system-spectrum-actionbutton-staticwhite-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--system-spectrum-actionbutton-staticwhite-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--system-spectrum-actionbutton-staticwhite-content-color-focus); + --spectrum-actionbutton-focus-indicator-color: var(--system-spectrum-actionbutton-staticwhite-focus-indicator-color); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticwhite-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-staticwhite-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite.is-selected { + --mod-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default); + --mod-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover); + --mod-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down); + --mod-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus)); + --mod-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled); + --mod-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled); +} +/*# sourceMappingURL=components/actionbutton/index.css.map */ diff --git a/components/actionbutton/index-theme.css b/components/actionbutton/index-theme.css new file mode 100644 index 0000000000..cdec986a30 --- /dev/null +++ b/components/actionbutton/index-theme.css @@ -0,0 +1,137 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-75); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-border-color-default: var(--spectrum-gray-400); + --system-spectrum-actionbutton-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-actionbutton-border-color-down: var(--spectrum-gray-600); + --system-spectrum-actionbutton-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-actionbutton-background-color-disabled: transparent; + --system-spectrum-actionbutton-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-actionbutton-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-quiet-background-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-selected-border-color-default: transparent; + --system-spectrum-actionbutton-selected-border-color-hover: transparent; + --system-spectrum-actionbutton-selected-border-color-down: transparent; + --system-spectrum-actionbutton-selected-border-color-focus: transparent; + --system-spectrum-actionbutton-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-selected-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: transparent; + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-actionbutton-staticblack-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-actionbutton-staticblack-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-actionbutton-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-border-color-default: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-border-color-hover: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-border-color-down: var(--spectrum-transparent-white-600); + --system-spectrum-actionbutton-staticwhite-border-color-focus: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-actionbutton-staticwhite-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-actionbutton-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled: transparent; +} +.spectrum--express { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-border-color-default: transparent; + --system-spectrum-actionbutton-border-color-hover: transparent; + --system-spectrum-actionbutton-border-color-down: transparent; + --system-spectrum-actionbutton-border-color-focus: transparent; + --system-spectrum-actionbutton-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-staticblack-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticwhite-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); +} +/*# sourceMappingURL=components/actionbutton/themes/express.css.map */ diff --git a/components/actionbutton/index-vars.css b/components/actionbutton/index-vars.css new file mode 100644 index 0000000000..4cef27811d --- /dev/null +++ b/components/actionbutton/index-vars.css @@ -0,0 +1,500 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ActionButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-ActionButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-ActionButton:focus { + outline: none; +} +.spectrum-ActionButton.is-disabled, +.spectrum-ActionButton:disabled { + cursor: default; +} +.spectrum-ActionButton-icon { + flex-shrink: 0; + max-block-size: 100%; +} +a.spectrum-ActionButton { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-ActionButton-label { + align-self: center; + justify-self: center; + text-align: center; +} +.spectrum-ActionButton-label:empty { + display: none; +} +.spectrum { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-75); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-border-color-default: var(--spectrum-gray-400); + --system-spectrum-actionbutton-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-actionbutton-border-color-down: var(--spectrum-gray-600); + --system-spectrum-actionbutton-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-actionbutton-background-color-disabled: transparent; + --system-spectrum-actionbutton-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-actionbutton-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-quiet-background-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-selected-border-color-default: transparent; + --system-spectrum-actionbutton-selected-border-color-hover: transparent; + --system-spectrum-actionbutton-selected-border-color-down: transparent; + --system-spectrum-actionbutton-selected-border-color-focus: transparent; + --system-spectrum-actionbutton-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-selected-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: transparent; + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-actionbutton-staticblack-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-actionbutton-staticblack-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-actionbutton-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-border-color-default: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-border-color-hover: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-border-color-down: var(--spectrum-transparent-white-600); + --system-spectrum-actionbutton-staticwhite-border-color-focus: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-actionbutton-staticwhite-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-actionbutton-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled: transparent; +} +.spectrum--express { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-border-color-default: transparent; + --system-spectrum-actionbutton-border-color-hover: transparent; + --system-spectrum-actionbutton-border-color-down: transparent; + --system-spectrum-actionbutton-border-color-focus: transparent; + --system-spectrum-actionbutton-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-staticblack-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticwhite-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); +} +.spectrum-ActionButton { + --spectrum-actionbutton-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-actionbutton-border-radius: var(--spectrum-corner-radius-100); + --spectrum-actionbutton-border-width: var(--spectrum-border-width-100); + --spectrum-actionbutton-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-actionbutton-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-actionbutton-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-actionbutton-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-actionbutton-focus-indicator-border-radius: calc(var(--spectrum-actionbutton-border-radius) + var(--spectrum-actionbutton-focus-indicator-gap)); +} +.spectrum-ActionButton:dir(rtl), +[dir="rtl"] .spectrum-ActionButton { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-ActionButton.is-selected { + --mod-actionbutton-background-color-default: var(--mod-actionbutton-background-color-default-selected, var(--spectrum-neutral-background-color-selected-default)); + --mod-actionbutton-background-color-hover: var(--mod-actionbutton-background-color-hover-selected, var(--spectrum-neutral-background-color-selected-hover)); + --mod-actionbutton-background-color-down: var(--mod-actionbutton-background-color-down-selected, var(--spectrum-neutral-background-color-selected-down)); + --mod-actionbutton-background-color-focus: var(--mod-actionbutton-background-color-focus-selected, var(--spectrum-neutral-background-color-selected-key-focus)); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-content-color-default-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-content-color-hover-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-content-color-down-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-content-color-focus-selected, var(--spectrum-gray-50)); +} +.spectrum-ActionButton.is-selected.spectrum-ActionButton--emphasized { + --mod-actionbutton-background-color-default: var(--mod-actionbutton-background-color-default-selected-emphasized, var(--spectrum-accent-background-color-default)); + --mod-actionbutton-background-color-hover: var(--mod-actionbutton-background-color-hover-selected-emphasized, var(--spectrum-accent-background-color-hover)); + --mod-actionbutton-background-color-down: var(--mod-actionbutton-background-color-down-selected-emphasized, var(--spectrum-accent-background-color-down)); + --mod-actionbutton-background-color-focus: var(--mod-actionbutton-background-color-focus-selected-emphasized, var(--spectrum-accent-background-color-key-focus)); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-content-color-default-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-content-color-hover-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-content-color-down-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-content-color-focus-selected-emphasized, var(--spectrum-white)); +} +.spectrum-ActionButton--sizeXS { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-50) * 2 + var(--spectrum-workflow-icon-size-50)); + --spectrum-actionbutton-height: var(--spectrum-component-height-50); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-50); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-50); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-small); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-50) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-50) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-50) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeS { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-75) * 2 + var(--spectrum-workflow-icon-size-75)); + --spectrum-actionbutton-height: var(--spectrum-component-height-75); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-75); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-small); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-75) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-75) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-75) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeM { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-100) * 2 + var(--spectrum-workflow-icon-size-100)); + --spectrum-actionbutton-height: var(--spectrum-component-height-100); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-100); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-medium); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-100) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-100) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-100) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeL { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-200) * 2 + var(--spectrum-workflow-icon-size-200)); + --spectrum-actionbutton-height: var(--spectrum-component-height-200); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-200); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-large); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-200) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-200) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-200) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeXL { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-300) * 2 + var(--spectrum-workflow-icon-size-300)); + --spectrum-actionbutton-height: var(--spectrum-component-height-300); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-300); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-300); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-large); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-300) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-300) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-300) - var(--spectrum-actionbutton-border-width)); +} +@media (forced-colors: active) { + .spectrum-ActionButton { + --highcontrast-actionbutton-focus-indicator-color: ButtonText; + } + .spectrum-ActionButton:after { + forced-color-adjust: none; + } + .spectrum-ActionButton.is-selected { + --highcontrast-actionbutton-background-color-default: Highlight; + --highcontrast-actionbutton-background-color-hover: Highlight; + --highcontrast-actionbutton-background-color-focus: Highlight; + --highcontrast-actionbutton-background-color-down: Highlight; + --highcontrast-actionbutton-background-color-disabled: ButtonFace; + --highcontrast-actionbutton-border-color-default: HighlightText; + --highcontrast-actionbutton-border-color-hover: HighlightText; + --highcontrast-actionbutton-border-color-focus: HighlightText; + --highcontrast-actionbutton-border-color-down: HighlightText; + --highcontrast-actionbutton-border-color-disabled: GrayText; + --highcontrast-actionbutton-content-color-default: HighlightText; + --highcontrast-actionbutton-content-color-hover: HighlightText; + --highcontrast-actionbutton-content-color-focus: HighlightText; + --highcontrast-actionbutton-content-color-down: HighlightText; + --highcontrast-actionbutton-content-color-disabled: GrayText; + } + .spectrum-ActionButton.is-selected .spectrum-ActionButton-hold, + .spectrum-ActionButton.is-selected .spectrum-ActionButton-icon, + .spectrum-ActionButton.is-selected .spectrum-ActionButton-label { + forced-color-adjust: none; + } +} +.spectrum-ActionButton { + position: relative; + min-inline-size: var(--mod-actionbutton-min-width, var(--spectrum-actionbutton-min-width)); + block-size: var(--mod-actionbutton-height, var(--spectrum-actionbutton-height)); + border-radius: var(--mod-actionbutton-border-radius, var(--spectrum-actionbutton-border-radius)); + border-width: var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width)); + gap: calc(var(--mod-actionbutton-text-to-visual, var(--spectrum-actionbutton-text-to-visual)) + var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text)) - var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only))); + padding-inline: var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text)); + background-color: var(--highcontrast-actionbutton-background-color-default, var(--mod-actionbutton-background-color-default, var(--spectrum-actionbutton-background-color-default))); + border-color: var(--highcontrast-actionbutton-border-color-default, var(--mod-actionbutton-border-color-default, var(--spectrum-actionbutton-border-color-default))); + color: var(--highcontrast-actionbutton-content-color-default, var(--mod-actionbutton-content-color-default, var(--spectrum-actionbutton-content-color-default))); +} +@media (hover: hover) { + .spectrum-ActionButton:hover { + background-color: var(--highcontrast-actionbutton-background-color-hover, var(--mod-actionbutton-background-color-hover, var(--spectrum-actionbutton-background-color-hover))); + border-color: var(--highcontrast-actionbutton-border-color-hover, var(--mod-actionbutton-border-color-hover, var(--spectrum-actionbutton-border-color-hover))); + color: var(--highcontrast-actionbutton-content-color-hover, var(--mod-actionbutton-content-color-hover, var(--spectrum-actionbutton-content-color-hover))); + } +} +.spectrum-ActionButton:focus-visible { + background-color: var(--highcontrast-actionbutton-background-color-focus, var(--mod-actionbutton-background-color-focus, var(--spectrum-actionbutton-background-color-focus))); + border-color: var(--highcontrast-actionbutton-border-color-focus, var(--mod-actionbutton-border-color-focus, var(--spectrum-actionbutton-border-color-focus))); + color: var(--highcontrast-actionbutton-content-color-focus, var(--mod-actionbutton-content-color-focus, var(--spectrum-actionbutton-content-color-focus))); +} +.spectrum-ActionButton:active { + background-color: var(--highcontrast-actionbutton-background-color-down, var(--mod-actionbutton-background-color-down, var(--spectrum-actionbutton-background-color-down))); + border-color: var(--highcontrast-actionbutton-border-color-down, var(--mod-actionbutton-border-color-down, var(--spectrum-actionbutton-border-color-down))); + color: var(--highcontrast-actionbutton-content-color-down, var(--mod-actionbutton-content-color-down, var(--spectrum-actionbutton-content-color-down))); +} +.spectrum-ActionButton.is-disabled, +.spectrum-ActionButton:disabled { + background-color: var(--highcontrast-actionbutton-background-color-disabled, var(--mod-actionbutton-background-color-disabled, var(--spectrum-actionbutton-background-color-disabled))); + border-color: var(--highcontrast-actionbutton-border-color-disabled, var(--mod-actionbutton-border-color-disabled, var(--spectrum-actionbutton-border-color-disabled))); + color: var(--highcontrast-actionbutton-content-color-disabled, var(--mod-actionbutton-content-color-disabled, var(--spectrum-actionbutton-content-color-disabled))); +} +.spectrum-ActionButton-icon { + inline-size: var(--mod-actionbutton-icon-size, var(--spectrum-actionbutton-icon-size)); + block-size: var(--mod-actionbutton-icon-size, var(--spectrum-actionbutton-icon-size)); + margin-inline-start: calc(var(--mod-actionbutton-edge-to-visual, var(--spectrum-actionbutton-edge-to-visual)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); + margin-inline-end: calc(var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); + color: inherit; +} +.spectrum-ActionButton-hold + .spectrum-ActionButton-icon, +.spectrum-ActionButton-icon:only-child { + margin-inline-start: calc(var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); +} +.spectrum-ActionButton-label { + pointer-events: none; + font-size: var(--mod-actionbutton-font-size, var(--spectrum-actionbutton-font-size)); + white-space: nowrap; + color: var(--mod-actionbutton-label-color, inherit); + text-overflow: ellipsis; + overflow: hidden; +} +.spectrum-ActionButton-hold { + position: absolute; + inset-inline-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))); + inset-block-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))); + color: inherit; + transform: var(--spectrum-logical-rotation); +} +.spectrum-ActionButton { + transition: border-color var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration)) ease-in-out; +} +.spectrum-ActionButton:after { + position: absolute; + inset: 0; + margin: calc((var(--mod-actionbutton-focus-indicator-gap, var(--spectrum-actionbutton-focus-indicator-gap)) + var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))) * -1); + border-radius: var(--mod-actionbutton-focus-indicator-border-radius, var(--spectrum-actionbutton-focus-indicator-border-radius)); + transition: box-shadow var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration)) ease-in-out; + pointer-events: none; + content: ""; +} +.spectrum-ActionButton:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-ActionButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-actionbutton-focus-indicator-thickness, var(--spectrum-actionbutton-focus-indicator-thickness)) var(--highcontrast-actionbutton-focus-indicator-color, var(--mod-actionbutton-focus-indicator-color, var(--spectrum-actionbutton-focus-indicator-color))); +} +.spectrum-ActionButton { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--quiet { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-quiet-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-quiet-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-quiet-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-quiet-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-quiet-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-quiet-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-quiet-border-color-disabled); +} +.spectrum-ActionButton.is-selected { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-selected-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-selected-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-selected-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-selected-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-selected-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-selected-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack.spectrum-ActionButton--quiet { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-focus); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite.spectrum-ActionButton--quiet { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-focus); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticblack-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticblack-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticblack-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticblack-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticblack-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticblack-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticblack-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticblack-border-color-focus); + --spectrum-actionbutton-content-color-default: var(--system-spectrum-actionbutton-staticblack-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--system-spectrum-actionbutton-staticblack-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--system-spectrum-actionbutton-staticblack-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--system-spectrum-actionbutton-staticblack-content-color-focus); + --spectrum-actionbutton-focus-indicator-color: var(--system-spectrum-actionbutton-staticblack-focus-indicator-color); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticblack-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-staticblack-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack.is-selected { + --mod-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default); + --mod-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover); + --mod-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down); + --mod-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus)); + --mod-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled); + --mod-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticwhite-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticwhite-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticwhite-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticwhite-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticwhite-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticwhite-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticwhite-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticwhite-border-color-focus); + --spectrum-actionbutton-content-color-default: var(--system-spectrum-actionbutton-staticwhite-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--system-spectrum-actionbutton-staticwhite-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--system-spectrum-actionbutton-staticwhite-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--system-spectrum-actionbutton-staticwhite-content-color-focus); + --spectrum-actionbutton-focus-indicator-color: var(--system-spectrum-actionbutton-staticwhite-focus-indicator-color); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticwhite-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-staticwhite-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite.is-selected { + --mod-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default); + --mod-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover); + --mod-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down); + --mod-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus)); + --mod-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled); + --mod-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled); +} +/*# sourceMappingURL=components/actionbutton/index.css.map */ diff --git a/components/actionbutton/index.css b/components/actionbutton/index.css new file mode 100644 index 0000000000..4cef27811d --- /dev/null +++ b/components/actionbutton/index.css @@ -0,0 +1,500 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ActionButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-ActionButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-ActionButton:focus { + outline: none; +} +.spectrum-ActionButton.is-disabled, +.spectrum-ActionButton:disabled { + cursor: default; +} +.spectrum-ActionButton-icon { + flex-shrink: 0; + max-block-size: 100%; +} +a.spectrum-ActionButton { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-ActionButton-label { + align-self: center; + justify-self: center; + text-align: center; +} +.spectrum-ActionButton-label:empty { + display: none; +} +.spectrum { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-75); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-border-color-default: var(--spectrum-gray-400); + --system-spectrum-actionbutton-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-actionbutton-border-color-down: var(--spectrum-gray-600); + --system-spectrum-actionbutton-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-actionbutton-background-color-disabled: transparent; + --system-spectrum-actionbutton-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-actionbutton-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-quiet-background-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-selected-border-color-default: transparent; + --system-spectrum-actionbutton-selected-border-color-hover: transparent; + --system-spectrum-actionbutton-selected-border-color-down: transparent; + --system-spectrum-actionbutton-selected-border-color-focus: transparent; + --system-spectrum-actionbutton-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-selected-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: transparent; + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-actionbutton-staticblack-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-actionbutton-staticblack-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-actionbutton-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-border-color-default: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-border-color-hover: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-border-color-down: var(--spectrum-transparent-white-600); + --system-spectrum-actionbutton-staticwhite-border-color-focus: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-actionbutton-staticwhite-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-actionbutton-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled: transparent; +} +.spectrum--express { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-border-color-default: transparent; + --system-spectrum-actionbutton-border-color-hover: transparent; + --system-spectrum-actionbutton-border-color-down: transparent; + --system-spectrum-actionbutton-border-color-focus: transparent; + --system-spectrum-actionbutton-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-staticblack-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticwhite-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); +} +.spectrum-ActionButton { + --spectrum-actionbutton-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-actionbutton-border-radius: var(--spectrum-corner-radius-100); + --spectrum-actionbutton-border-width: var(--spectrum-border-width-100); + --spectrum-actionbutton-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-actionbutton-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-actionbutton-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-actionbutton-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-actionbutton-focus-indicator-border-radius: calc(var(--spectrum-actionbutton-border-radius) + var(--spectrum-actionbutton-focus-indicator-gap)); +} +.spectrum-ActionButton:dir(rtl), +[dir="rtl"] .spectrum-ActionButton { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-ActionButton.is-selected { + --mod-actionbutton-background-color-default: var(--mod-actionbutton-background-color-default-selected, var(--spectrum-neutral-background-color-selected-default)); + --mod-actionbutton-background-color-hover: var(--mod-actionbutton-background-color-hover-selected, var(--spectrum-neutral-background-color-selected-hover)); + --mod-actionbutton-background-color-down: var(--mod-actionbutton-background-color-down-selected, var(--spectrum-neutral-background-color-selected-down)); + --mod-actionbutton-background-color-focus: var(--mod-actionbutton-background-color-focus-selected, var(--spectrum-neutral-background-color-selected-key-focus)); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-content-color-default-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-content-color-hover-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-content-color-down-selected, var(--spectrum-gray-50)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-content-color-focus-selected, var(--spectrum-gray-50)); +} +.spectrum-ActionButton.is-selected.spectrum-ActionButton--emphasized { + --mod-actionbutton-background-color-default: var(--mod-actionbutton-background-color-default-selected-emphasized, var(--spectrum-accent-background-color-default)); + --mod-actionbutton-background-color-hover: var(--mod-actionbutton-background-color-hover-selected-emphasized, var(--spectrum-accent-background-color-hover)); + --mod-actionbutton-background-color-down: var(--mod-actionbutton-background-color-down-selected-emphasized, var(--spectrum-accent-background-color-down)); + --mod-actionbutton-background-color-focus: var(--mod-actionbutton-background-color-focus-selected-emphasized, var(--spectrum-accent-background-color-key-focus)); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-content-color-default-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-content-color-hover-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-content-color-down-selected-emphasized, var(--spectrum-white)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-content-color-focus-selected-emphasized, var(--spectrum-white)); +} +.spectrum-ActionButton--sizeXS { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-50) * 2 + var(--spectrum-workflow-icon-size-50)); + --spectrum-actionbutton-height: var(--spectrum-component-height-50); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-50); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-50); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-small); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-50) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-50) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-50) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeS { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-75) * 2 + var(--spectrum-workflow-icon-size-75)); + --spectrum-actionbutton-height: var(--spectrum-component-height-75); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-75); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-small); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-75) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-75) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-75) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeM { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-100) * 2 + var(--spectrum-workflow-icon-size-100)); + --spectrum-actionbutton-height: var(--spectrum-component-height-100); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-100); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-medium); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-100) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-100) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-100) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeL { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-200) * 2 + var(--spectrum-workflow-icon-size-200)); + --spectrum-actionbutton-height: var(--spectrum-component-height-200); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-200); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-large); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-200) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-200) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-200) - var(--spectrum-actionbutton-border-width)); +} +.spectrum-ActionButton--sizeXL { + --spectrum-actionbutton-min-width: calc(var(--spectrum-component-edge-to-visual-only-300) * 2 + var(--spectrum-workflow-icon-size-300)); + --spectrum-actionbutton-height: var(--spectrum-component-height-300); + --spectrum-actionbutton-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-actionbutton-font-size: var(--spectrum-font-size-300); + --spectrum-actionbutton-text-to-visual: var(--spectrum-text-to-visual-300); + --spectrum-actionbutton-edge-to-hold-icon: var(--spectrum-action-button-edge-to-hold-icon-extra-large); + --spectrum-actionbutton-edge-to-visual: calc(var(--spectrum-component-edge-to-visual-300) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-text: calc(var(--spectrum-component-edge-to-text-300) - var(--spectrum-actionbutton-border-width)); + --spectrum-actionbutton-edge-to-visual-only: calc(var(--spectrum-component-edge-to-visual-only-300) - var(--spectrum-actionbutton-border-width)); +} +@media (forced-colors: active) { + .spectrum-ActionButton { + --highcontrast-actionbutton-focus-indicator-color: ButtonText; + } + .spectrum-ActionButton:after { + forced-color-adjust: none; + } + .spectrum-ActionButton.is-selected { + --highcontrast-actionbutton-background-color-default: Highlight; + --highcontrast-actionbutton-background-color-hover: Highlight; + --highcontrast-actionbutton-background-color-focus: Highlight; + --highcontrast-actionbutton-background-color-down: Highlight; + --highcontrast-actionbutton-background-color-disabled: ButtonFace; + --highcontrast-actionbutton-border-color-default: HighlightText; + --highcontrast-actionbutton-border-color-hover: HighlightText; + --highcontrast-actionbutton-border-color-focus: HighlightText; + --highcontrast-actionbutton-border-color-down: HighlightText; + --highcontrast-actionbutton-border-color-disabled: GrayText; + --highcontrast-actionbutton-content-color-default: HighlightText; + --highcontrast-actionbutton-content-color-hover: HighlightText; + --highcontrast-actionbutton-content-color-focus: HighlightText; + --highcontrast-actionbutton-content-color-down: HighlightText; + --highcontrast-actionbutton-content-color-disabled: GrayText; + } + .spectrum-ActionButton.is-selected .spectrum-ActionButton-hold, + .spectrum-ActionButton.is-selected .spectrum-ActionButton-icon, + .spectrum-ActionButton.is-selected .spectrum-ActionButton-label { + forced-color-adjust: none; + } +} +.spectrum-ActionButton { + position: relative; + min-inline-size: var(--mod-actionbutton-min-width, var(--spectrum-actionbutton-min-width)); + block-size: var(--mod-actionbutton-height, var(--spectrum-actionbutton-height)); + border-radius: var(--mod-actionbutton-border-radius, var(--spectrum-actionbutton-border-radius)); + border-width: var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width)); + gap: calc(var(--mod-actionbutton-text-to-visual, var(--spectrum-actionbutton-text-to-visual)) + var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text)) - var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only))); + padding-inline: var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text)); + background-color: var(--highcontrast-actionbutton-background-color-default, var(--mod-actionbutton-background-color-default, var(--spectrum-actionbutton-background-color-default))); + border-color: var(--highcontrast-actionbutton-border-color-default, var(--mod-actionbutton-border-color-default, var(--spectrum-actionbutton-border-color-default))); + color: var(--highcontrast-actionbutton-content-color-default, var(--mod-actionbutton-content-color-default, var(--spectrum-actionbutton-content-color-default))); +} +@media (hover: hover) { + .spectrum-ActionButton:hover { + background-color: var(--highcontrast-actionbutton-background-color-hover, var(--mod-actionbutton-background-color-hover, var(--spectrum-actionbutton-background-color-hover))); + border-color: var(--highcontrast-actionbutton-border-color-hover, var(--mod-actionbutton-border-color-hover, var(--spectrum-actionbutton-border-color-hover))); + color: var(--highcontrast-actionbutton-content-color-hover, var(--mod-actionbutton-content-color-hover, var(--spectrum-actionbutton-content-color-hover))); + } +} +.spectrum-ActionButton:focus-visible { + background-color: var(--highcontrast-actionbutton-background-color-focus, var(--mod-actionbutton-background-color-focus, var(--spectrum-actionbutton-background-color-focus))); + border-color: var(--highcontrast-actionbutton-border-color-focus, var(--mod-actionbutton-border-color-focus, var(--spectrum-actionbutton-border-color-focus))); + color: var(--highcontrast-actionbutton-content-color-focus, var(--mod-actionbutton-content-color-focus, var(--spectrum-actionbutton-content-color-focus))); +} +.spectrum-ActionButton:active { + background-color: var(--highcontrast-actionbutton-background-color-down, var(--mod-actionbutton-background-color-down, var(--spectrum-actionbutton-background-color-down))); + border-color: var(--highcontrast-actionbutton-border-color-down, var(--mod-actionbutton-border-color-down, var(--spectrum-actionbutton-border-color-down))); + color: var(--highcontrast-actionbutton-content-color-down, var(--mod-actionbutton-content-color-down, var(--spectrum-actionbutton-content-color-down))); +} +.spectrum-ActionButton.is-disabled, +.spectrum-ActionButton:disabled { + background-color: var(--highcontrast-actionbutton-background-color-disabled, var(--mod-actionbutton-background-color-disabled, var(--spectrum-actionbutton-background-color-disabled))); + border-color: var(--highcontrast-actionbutton-border-color-disabled, var(--mod-actionbutton-border-color-disabled, var(--spectrum-actionbutton-border-color-disabled))); + color: var(--highcontrast-actionbutton-content-color-disabled, var(--mod-actionbutton-content-color-disabled, var(--spectrum-actionbutton-content-color-disabled))); +} +.spectrum-ActionButton-icon { + inline-size: var(--mod-actionbutton-icon-size, var(--spectrum-actionbutton-icon-size)); + block-size: var(--mod-actionbutton-icon-size, var(--spectrum-actionbutton-icon-size)); + margin-inline-start: calc(var(--mod-actionbutton-edge-to-visual, var(--spectrum-actionbutton-edge-to-visual)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); + margin-inline-end: calc(var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); + color: inherit; +} +.spectrum-ActionButton-hold + .spectrum-ActionButton-icon, +.spectrum-ActionButton-icon:only-child { + margin-inline-start: calc(var(--mod-actionbutton-edge-to-visual-only, var(--spectrum-actionbutton-edge-to-visual-only)) - var(--mod-actionbutton-edge-to-text, var(--spectrum-actionbutton-edge-to-text))); +} +.spectrum-ActionButton-label { + pointer-events: none; + font-size: var(--mod-actionbutton-font-size, var(--spectrum-actionbutton-font-size)); + white-space: nowrap; + color: var(--mod-actionbutton-label-color, inherit); + text-overflow: ellipsis; + overflow: hidden; +} +.spectrum-ActionButton-hold { + position: absolute; + inset-inline-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))); + inset-block-end: calc(var(--mod-actionbutton-edge-to-hold-icon, var(--spectrum-actionbutton-edge-to-hold-icon)) - var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))); + color: inherit; + transform: var(--spectrum-logical-rotation); +} +.spectrum-ActionButton { + transition: border-color var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration)) ease-in-out; +} +.spectrum-ActionButton:after { + position: absolute; + inset: 0; + margin: calc((var(--mod-actionbutton-focus-indicator-gap, var(--spectrum-actionbutton-focus-indicator-gap)) + var(--mod-actionbutton-border-width, var(--spectrum-actionbutton-border-width))) * -1); + border-radius: var(--mod-actionbutton-focus-indicator-border-radius, var(--spectrum-actionbutton-focus-indicator-border-radius)); + transition: box-shadow var(--mod-actionbutton-animation-duration, var(--spectrum-actionbutton-animation-duration)) ease-in-out; + pointer-events: none; + content: ""; +} +.spectrum-ActionButton:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-ActionButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-actionbutton-focus-indicator-thickness, var(--spectrum-actionbutton-focus-indicator-thickness)) var(--highcontrast-actionbutton-focus-indicator-color, var(--mod-actionbutton-focus-indicator-color, var(--spectrum-actionbutton-focus-indicator-color))); +} +.spectrum-ActionButton { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--quiet { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-quiet-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-quiet-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-quiet-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-quiet-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-quiet-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-quiet-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-quiet-border-color-disabled); +} +.spectrum-ActionButton.is-selected { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-selected-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-selected-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-selected-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-selected-border-color-focus); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-selected-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-selected-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack.spectrum-ActionButton--quiet { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-focus); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-quiet-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite.spectrum-ActionButton--quiet { + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-focus); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticblack-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticblack-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticblack-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticblack-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticblack-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticblack-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticblack-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticblack-border-color-focus); + --spectrum-actionbutton-content-color-default: var(--system-spectrum-actionbutton-staticblack-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--system-spectrum-actionbutton-staticblack-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--system-spectrum-actionbutton-staticblack-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--system-spectrum-actionbutton-staticblack-content-color-focus); + --spectrum-actionbutton-focus-indicator-color: var(--system-spectrum-actionbutton-staticblack-focus-indicator-color); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticblack-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-staticblack-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticBlack.is-selected { + --mod-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default); + --mod-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover); + --mod-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down); + --mod-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus)); + --mod-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled); + --mod-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite { + --spectrum-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticwhite-background-color-default); + --spectrum-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticwhite-background-color-hover); + --spectrum-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticwhite-background-color-down); + --spectrum-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticwhite-background-color-focus); + --spectrum-actionbutton-border-color-default: var(--system-spectrum-actionbutton-staticwhite-border-color-default); + --spectrum-actionbutton-border-color-hover: var(--system-spectrum-actionbutton-staticwhite-border-color-hover); + --spectrum-actionbutton-border-color-down: var(--system-spectrum-actionbutton-staticwhite-border-color-down); + --spectrum-actionbutton-border-color-focus: var(--system-spectrum-actionbutton-staticwhite-border-color-focus); + --spectrum-actionbutton-content-color-default: var(--system-spectrum-actionbutton-staticwhite-content-color-default); + --spectrum-actionbutton-content-color-hover: var(--system-spectrum-actionbutton-staticwhite-content-color-hover); + --spectrum-actionbutton-content-color-down: var(--system-spectrum-actionbutton-staticwhite-content-color-down); + --spectrum-actionbutton-content-color-focus: var(--system-spectrum-actionbutton-staticwhite-content-color-focus); + --spectrum-actionbutton-focus-indicator-color: var(--system-spectrum-actionbutton-staticwhite-focus-indicator-color); + --spectrum-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticwhite-background-color-disabled); + --spectrum-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-border-color-disabled); + --spectrum-actionbutton-content-color-disabled: var(--system-spectrum-actionbutton-staticwhite-content-color-disabled); +} +.spectrum-ActionButton.spectrum-ActionButton--staticWhite.is-selected { + --mod-actionbutton-background-color-default: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default); + --mod-actionbutton-background-color-hover: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover); + --mod-actionbutton-background-color-down: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down); + --mod-actionbutton-background-color-focus: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus); + --mod-actionbutton-content-color-default: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default)); + --mod-actionbutton-content-color-hover: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover)); + --mod-actionbutton-content-color-down: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down)); + --mod-actionbutton-content-color-focus: var(--mod-actionbutton-static-content-color, var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus)); + --mod-actionbutton-background-color-disabled: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled); + --mod-actionbutton-border-color-disabled: var(--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled); +} +/*# sourceMappingURL=components/actionbutton/index.css.map */ diff --git a/components/actionbutton/metadata.json b/components/actionbutton/metadata.json new file mode 100644 index 0000000000..9f0d780d85 --- /dev/null +++ b/components/actionbutton/metadata.json @@ -0,0 +1,331 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-ActionButton", + ".spectrum-ActionButton--sizeL", + ".spectrum-ActionButton--sizeM", + ".spectrum-ActionButton--sizeS", + ".spectrum-ActionButton--sizeXL", + ".spectrum-ActionButton--sizeXS", + ".spectrum-ActionButton-hold", + ".spectrum-ActionButton-hold + .spectrum-ActionButton-icon,\n.spectrum-ActionButton-icon:only-child", + ".spectrum-ActionButton-icon", + ".spectrum-ActionButton-label", + ".spectrum-ActionButton-label:empty", + ".spectrum-ActionButton.is-disabled,\n.spectrum-ActionButton:disabled", + ".spectrum-ActionButton.is-selected", + ".spectrum-ActionButton.is-selected .spectrum-ActionButton-hold,\n\t.spectrum-ActionButton.is-selected .spectrum-ActionButton-icon,\n\t.spectrum-ActionButton.is-selected .spectrum-ActionButton-label", + ".spectrum-ActionButton.is-selected.spectrum-ActionButton--emphasized", + ".spectrum-ActionButton.spectrum-ActionButton--quiet", + ".spectrum-ActionButton.spectrum-ActionButton--staticBlack", + ".spectrum-ActionButton.spectrum-ActionButton--staticBlack.is-selected", + ".spectrum-ActionButton.spectrum-ActionButton--staticBlack.spectrum-ActionButton--quiet", + ".spectrum-ActionButton.spectrum-ActionButton--staticWhite", + ".spectrum-ActionButton.spectrum-ActionButton--staticWhite.is-selected", + ".spectrum-ActionButton.spectrum-ActionButton--staticWhite.spectrum-ActionButton--quiet", + ".spectrum-ActionButton::-moz-focus-inner", + ".spectrum-ActionButton:active", + ".spectrum-ActionButton:after", + ".spectrum-ActionButton:dir(rtl),\n[dir=\"rtl\"] .spectrum-ActionButton", + ".spectrum-ActionButton:focus", + ".spectrum-ActionButton:focus-visible", + ".spectrum-ActionButton:focus-visible:after", + ".spectrum-ActionButton:hover", + "a.spectrum-ActionButton" + ], + "mods": [ + "--mod-actionbutton-animation-duration", + "--mod-actionbutton-background-color-default", + "--mod-actionbutton-background-color-default-selected", + "--mod-actionbutton-background-color-default-selected-emphasized", + "--mod-actionbutton-background-color-disabled", + "--mod-actionbutton-background-color-down", + "--mod-actionbutton-background-color-down-selected", + "--mod-actionbutton-background-color-down-selected-emphasized", + "--mod-actionbutton-background-color-focus", + "--mod-actionbutton-background-color-focus-selected", + "--mod-actionbutton-background-color-focus-selected-emphasized", + "--mod-actionbutton-background-color-hover", + "--mod-actionbutton-background-color-hover-selected", + "--mod-actionbutton-background-color-hover-selected-emphasized", + "--mod-actionbutton-border-color-default", + "--mod-actionbutton-border-color-disabled", + "--mod-actionbutton-border-color-down", + "--mod-actionbutton-border-color-focus", + "--mod-actionbutton-border-color-hover", + "--mod-actionbutton-border-radius", + "--mod-actionbutton-border-width", + "--mod-actionbutton-content-color-default", + "--mod-actionbutton-content-color-default-selected", + "--mod-actionbutton-content-color-default-selected-emphasized", + "--mod-actionbutton-content-color-disabled", + "--mod-actionbutton-content-color-down", + "--mod-actionbutton-content-color-down-selected", + "--mod-actionbutton-content-color-down-selected-emphasized", + "--mod-actionbutton-content-color-focus", + "--mod-actionbutton-content-color-focus-selected", + "--mod-actionbutton-content-color-focus-selected-emphasized", + "--mod-actionbutton-content-color-hover", + "--mod-actionbutton-content-color-hover-selected", + "--mod-actionbutton-content-color-hover-selected-emphasized", + "--mod-actionbutton-edge-to-hold-icon", + "--mod-actionbutton-edge-to-text", + "--mod-actionbutton-edge-to-visual", + "--mod-actionbutton-edge-to-visual-only", + "--mod-actionbutton-focus-indicator-border-radius", + "--mod-actionbutton-focus-indicator-color", + "--mod-actionbutton-focus-indicator-gap", + "--mod-actionbutton-focus-indicator-thickness", + "--mod-actionbutton-font-size", + "--mod-actionbutton-height", + "--mod-actionbutton-icon-size", + "--mod-actionbutton-label-color", + "--mod-actionbutton-min-width", + "--mod-actionbutton-static-content-color", + "--mod-actionbutton-text-to-visual", + "--mod-animation-duration-100", + "--mod-button-animation-duration", + "--mod-button-font-family", + "--mod-button-line-height", + "--mod-line-height-100", + "--mod-sans-font-family-stack" + ], + "spectrum": [ + "--spectrum-accent-background-color-default", + "--spectrum-accent-background-color-down", + "--spectrum-accent-background-color-hover", + "--spectrum-accent-background-color-key-focus", + "--spectrum-action-button-edge-to-hold-icon-extra-large", + "--spectrum-action-button-edge-to-hold-icon-extra-small", + "--spectrum-action-button-edge-to-hold-icon-large", + "--spectrum-action-button-edge-to-hold-icon-medium", + "--spectrum-action-button-edge-to-hold-icon-small", + "--spectrum-actionbutton-animation-duration", + "--spectrum-actionbutton-background-color-default", + "--spectrum-actionbutton-background-color-disabled", + "--spectrum-actionbutton-background-color-down", + "--spectrum-actionbutton-background-color-focus", + "--spectrum-actionbutton-background-color-hover", + "--spectrum-actionbutton-border-color-default", + "--spectrum-actionbutton-border-color-disabled", + "--spectrum-actionbutton-border-color-down", + "--spectrum-actionbutton-border-color-focus", + "--spectrum-actionbutton-border-color-hover", + "--spectrum-actionbutton-border-radius", + "--spectrum-actionbutton-border-width", + "--spectrum-actionbutton-content-color-default", + "--spectrum-actionbutton-content-color-disabled", + "--spectrum-actionbutton-content-color-down", + "--spectrum-actionbutton-content-color-focus", + "--spectrum-actionbutton-content-color-hover", + "--spectrum-actionbutton-edge-to-hold-icon", + "--spectrum-actionbutton-edge-to-text", + "--spectrum-actionbutton-edge-to-visual", + "--spectrum-actionbutton-edge-to-visual-only", + "--spectrum-actionbutton-focus-indicator-border-radius", + "--spectrum-actionbutton-focus-indicator-color", + "--spectrum-actionbutton-focus-indicator-gap", + "--spectrum-actionbutton-focus-indicator-thickness", + "--spectrum-actionbutton-font-size", + "--spectrum-actionbutton-height", + "--spectrum-actionbutton-icon-size", + "--spectrum-actionbutton-min-width", + "--spectrum-actionbutton-text-to-visual", + "--spectrum-animation-duration-100", + "--spectrum-black", + "--spectrum-border-width-100", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-300", + "--spectrum-component-edge-to-text-50", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-edge-to-visual-100", + "--spectrum-component-edge-to-visual-200", + "--spectrum-component-edge-to-visual-300", + "--spectrum-component-edge-to-visual-50", + "--spectrum-component-edge-to-visual-75", + "--spectrum-component-edge-to-visual-only-100", + "--spectrum-component-edge-to-visual-only-200", + "--spectrum-component-edge-to-visual-only-300", + "--spectrum-component-edge-to-visual-only-50", + "--spectrum-component-edge-to-visual-only-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-50", + "--spectrum-component-height-75", + "--spectrum-corner-radius-100", + "--spectrum-disabled-background-color", + "--spectrum-disabled-border-color", + "--spectrum-disabled-content-color", + "--spectrum-disabled-static-black-background-color", + "--spectrum-disabled-static-black-border-color", + "--spectrum-disabled-static-black-content-color", + "--spectrum-disabled-static-white-background-color", + "--spectrum-disabled-static-white-border-color", + "--spectrum-disabled-static-white-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-50", + "--spectrum-font-size-75", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-75", + "--spectrum-line-height-100", + "--spectrum-logical-rotation", + "--spectrum-neutral-background-color-selected-default", + "--spectrum-neutral-background-color-selected-down", + "--spectrum-neutral-background-color-selected-hover", + "--spectrum-neutral-background-color-selected-key-focus", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-sans-font-family-stack", + "--spectrum-static-black-focus-indicator-color", + "--spectrum-static-white-focus-indicator-color", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-50", + "--spectrum-text-to-visual-75", + "--spectrum-transparent-black-200", + "--spectrum-transparent-black-300", + "--spectrum-transparent-black-400", + "--spectrum-transparent-black-500", + "--spectrum-transparent-black-600", + "--spectrum-transparent-black-800", + "--spectrum-transparent-black-900", + "--spectrum-transparent-white-200", + "--spectrum-transparent-white-300", + "--spectrum-transparent-white-400", + "--spectrum-transparent-white-500", + "--spectrum-transparent-white-600", + "--spectrum-transparent-white-800", + "--spectrum-transparent-white-900", + "--spectrum-white", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-50", + "--spectrum-workflow-icon-size-75" + ], + "system": [ + "--system-spectrum-actionbutton-background-color-default", + "--system-spectrum-actionbutton-background-color-disabled", + "--system-spectrum-actionbutton-background-color-down", + "--system-spectrum-actionbutton-background-color-focus", + "--system-spectrum-actionbutton-background-color-hover", + "--system-spectrum-actionbutton-border-color-default", + "--system-spectrum-actionbutton-border-color-disabled", + "--system-spectrum-actionbutton-border-color-down", + "--system-spectrum-actionbutton-border-color-focus", + "--system-spectrum-actionbutton-border-color-hover", + "--system-spectrum-actionbutton-content-color-disabled", + "--system-spectrum-actionbutton-quiet-background-color-default", + "--system-spectrum-actionbutton-quiet-background-color-disabled", + "--system-spectrum-actionbutton-quiet-background-color-down", + "--system-spectrum-actionbutton-quiet-background-color-focus", + "--system-spectrum-actionbutton-quiet-background-color-hover", + "--system-spectrum-actionbutton-quiet-border-color-default", + "--system-spectrum-actionbutton-quiet-border-color-disabled", + "--system-spectrum-actionbutton-quiet-border-color-down", + "--system-spectrum-actionbutton-quiet-border-color-focus", + "--system-spectrum-actionbutton-quiet-border-color-hover", + "--system-spectrum-actionbutton-selected-background-color-disabled", + "--system-spectrum-actionbutton-selected-border-color-default", + "--system-spectrum-actionbutton-selected-border-color-disabled", + "--system-spectrum-actionbutton-selected-border-color-down", + "--system-spectrum-actionbutton-selected-border-color-focus", + "--system-spectrum-actionbutton-selected-border-color-hover", + "--system-spectrum-actionbutton-staticblack-background-color-default", + "--system-spectrum-actionbutton-staticblack-background-color-disabled", + "--system-spectrum-actionbutton-staticblack-background-color-down", + "--system-spectrum-actionbutton-staticblack-background-color-focus", + "--system-spectrum-actionbutton-staticblack-background-color-hover", + "--system-spectrum-actionbutton-staticblack-border-color-default", + "--system-spectrum-actionbutton-staticblack-border-color-disabled", + "--system-spectrum-actionbutton-staticblack-border-color-down", + "--system-spectrum-actionbutton-staticblack-border-color-focus", + "--system-spectrum-actionbutton-staticblack-border-color-hover", + "--system-spectrum-actionbutton-staticblack-content-color-default", + "--system-spectrum-actionbutton-staticblack-content-color-disabled", + "--system-spectrum-actionbutton-staticblack-content-color-down", + "--system-spectrum-actionbutton-staticblack-content-color-focus", + "--system-spectrum-actionbutton-staticblack-content-color-hover", + "--system-spectrum-actionbutton-staticblack-focus-indicator-color", + "--system-spectrum-actionbutton-staticblack-quiet-border-color-default", + "--system-spectrum-actionbutton-staticblack-quiet-border-color-disabled", + "--system-spectrum-actionbutton-staticblack-quiet-border-color-down", + "--system-spectrum-actionbutton-staticblack-quiet-border-color-focus", + "--system-spectrum-actionbutton-staticblack-quiet-border-color-hover", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus", + "--system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover", + "--system-spectrum-actionbutton-staticwhite-background-color-default", + "--system-spectrum-actionbutton-staticwhite-background-color-disabled", + "--system-spectrum-actionbutton-staticwhite-background-color-down", + "--system-spectrum-actionbutton-staticwhite-background-color-focus", + "--system-spectrum-actionbutton-staticwhite-background-color-hover", + "--system-spectrum-actionbutton-staticwhite-border-color-default", + "--system-spectrum-actionbutton-staticwhite-border-color-disabled", + "--system-spectrum-actionbutton-staticwhite-border-color-down", + "--system-spectrum-actionbutton-staticwhite-border-color-focus", + "--system-spectrum-actionbutton-staticwhite-border-color-hover", + "--system-spectrum-actionbutton-staticwhite-content-color-default", + "--system-spectrum-actionbutton-staticwhite-content-color-disabled", + "--system-spectrum-actionbutton-staticwhite-content-color-down", + "--system-spectrum-actionbutton-staticwhite-content-color-focus", + "--system-spectrum-actionbutton-staticwhite-content-color-hover", + "--system-spectrum-actionbutton-staticwhite-focus-indicator-color", + "--system-spectrum-actionbutton-staticwhite-quiet-border-color-default", + "--system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled", + "--system-spectrum-actionbutton-staticwhite-quiet-border-color-down", + "--system-spectrum-actionbutton-staticwhite-quiet-border-color-focus", + "--system-spectrum-actionbutton-staticwhite-quiet-border-color-hover", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus", + "--system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover" + ], + "a11y": [ + "--highcontrast-actionbutton-background-color-default", + "--highcontrast-actionbutton-background-color-disabled", + "--highcontrast-actionbutton-background-color-down", + "--highcontrast-actionbutton-background-color-focus", + "--highcontrast-actionbutton-background-color-hover", + "--highcontrast-actionbutton-border-color-default", + "--highcontrast-actionbutton-border-color-disabled", + "--highcontrast-actionbutton-border-color-down", + "--highcontrast-actionbutton-border-color-focus", + "--highcontrast-actionbutton-border-color-hover", + "--highcontrast-actionbutton-content-color-default", + "--highcontrast-actionbutton-content-color-disabled", + "--highcontrast-actionbutton-content-color-down", + "--highcontrast-actionbutton-content-color-focus", + "--highcontrast-actionbutton-content-color-hover", + "--highcontrast-actionbutton-focus-indicator-color" + ] +} diff --git a/components/actionbutton/package.json b/components/actionbutton/package.json new file mode 100644 index 0000000000..b61c48c639 --- /dev/null +++ b/components/actionbutton/package.json @@ -0,0 +1,47 @@ +{ + "name": "@spectrum-css/actionbutton", + "version": "6.1.1", + "description": "The Spectrum CSS action button component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/actionbutton", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/actionbutton" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/commons": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/actionbutton/template.js b/components/actionbutton/template.js new file mode 100644 index 0000000000..304814d9af --- /dev/null +++ b/components/actionbutton/template.js @@ -0,0 +1,203 @@ +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; +import { capitalize, lowerCase } from "lodash-es"; + +import "../index.css"; + +/** + * @todo load order should not influence the icon size but it is; fix this +*/ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; + +/** + * @typedef API + * @property {string} [rootClass="spectrum-ActionButton"] + * @property {string} [size="m"] + * @property {string|undefined} [iconName] + * @property {string|undefined} [iconSet] + * @property {string|undefined} [label] + * @property {boolean} [isQuiet=false] + * @property {boolean} [isSelected=false] + * @property {boolean} [isEmphasized=false] + * @property {boolean} [isHovered=false] + * @property {boolean} [isFocused=false] + * @property {boolean} [isActive=false] + * @property {boolean} [isDisabled=false] + * @property {"false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog"} [hasPopup="false"] + * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup + * @property {string} [popupId] + * @property {boolean} [hideLabel=false] + * @property {"white"|"black"|undefined} [staticColor] + * @property {string[]} [customClasses=[]] + */ + +/** + * + * @param {API} args + * @param {import('@storybook/types').StoryContext} context + * @returns {import('lit').TemplateResult} + */ +export const Template = ({ + rootClass = "spectrum-ActionButton", + size = "m", + iconName, + iconSet, + label, + isQuiet = false, + isSelected = false, + isEmphasized = false, + isHovered = false, + isFocused = false, + isActive = false, + isDisabled = false, + hasPopup = "false", + popupId, + hideLabel = false, + staticColor, + customClasses = [], + customStyles = {}, + customIconClasses = [], + onclick, + id, + testId, + role = "button", +} = {}, context = {}) => { + const { updateArgs } = context; + return html` + + `; +}; + +export const ActionButtons = (args, context) => { + return html` + ${Template(args, context)} + ${Template({ + ...args, + iconName: undefined, + }, context)} + ${Template({ + ...args, + hideLabel: true, + }, context)} + ${Template({ + ...args, + hasPopup: "menu", + label: "Has pop-up", + iconName: undefined, + }, context)} + `; +}; + +const Truncation = (args, context) => { + return html` + ${Template(args, context)} + ${Template({ + ...args, + iconName: undefined, + }, context)} + `; +}; + +export const ActionButtonGroup = Variants({ + Template: ActionButtons, + stateDirection: "column", + testData: [ + { + testHeading: "Standard" + }, + { + testHeading: "Emphasized", + isEmphasized: true, + }, + { + testHeading: "Quiet", + isQuiet: true, + }, + { + Template: Truncation, + testHeading: "Truncation", + label: "Truncate this long content", + customStyles: { + maxInlineSize: "100px" + }, + withStates: false, + }, + ], + stateData: [{ + testHeading: "Disabled", + isDisabled: true, + }, { + testHeading: "Selected", + isSelected: true, + }, { + testHeading: "Focused", + isFocused: true, + }, { + testHeading: "Hovered", + isHovered: true, + }, { + testHeading: "Active", + isActive: true, + }, { + testHeading: "Disabled + selected", + isDisabled: true, + isSelected: true, + }], +}); diff --git a/components/actionbutton/themes/express.css b/components/actionbutton/themes/express.css new file mode 100644 index 0000000000..bf8f2bdd32 --- /dev/null +++ b/components/actionbutton/themes/express.css @@ -0,0 +1,105 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-border-color-default: transparent; + --system-spectrum-actionbutton-border-color-hover: transparent; + --system-spectrum-actionbutton-border-color-down: transparent; + --system-spectrum-actionbutton-border-color-focus: transparent; + --system-spectrum-actionbutton-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-400); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-quiet-background-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-selected-border-color-default: transparent; + --system-spectrum-actionbutton-selected-border-color-hover: transparent; + --system-spectrum-actionbutton-selected-border-color-down: transparent; + --system-spectrum-actionbutton-selected-border-color-focus: transparent; + --system-spectrum-actionbutton-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-selected-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-actionbutton-staticblack-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-actionbutton-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-actionbutton-staticwhite-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-actionbutton-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled: transparent; +} +/*# sourceMappingURL=components/actionbutton/themes/express.css.map */ diff --git a/components/actionbutton/themes/spectrum.css b/components/actionbutton/themes/spectrum.css new file mode 100644 index 0000000000..2d88cd538e --- /dev/null +++ b/components/actionbutton/themes/spectrum.css @@ -0,0 +1,105 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-actionbutton-background-color-default: var(--spectrum-gray-75); + --system-spectrum-actionbutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-border-color-default: var(--spectrum-gray-400); + --system-spectrum-actionbutton-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-actionbutton-border-color-down: var(--spectrum-gray-600); + --system-spectrum-actionbutton-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-actionbutton-background-color-disabled: transparent; + --system-spectrum-actionbutton-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-actionbutton-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-actionbutton-quiet-background-color-default: transparent; + --system-spectrum-actionbutton-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-actionbutton-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-actionbutton-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-quiet-background-color-disabled: transparent; + --system-spectrum-actionbutton-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-selected-border-color-default: transparent; + --system-spectrum-actionbutton-selected-border-color-hover: transparent; + --system-spectrum-actionbutton-selected-border-color-down: transparent; + --system-spectrum-actionbutton-selected-border-color-focus: transparent; + --system-spectrum-actionbutton-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-actionbutton-selected-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-actionbutton-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-background-color-default: transparent; + --system-spectrum-actionbutton-staticblack-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-actionbutton-staticblack-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-actionbutton-staticblack-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-actionbutton-staticblack-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-actionbutton-staticblack-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-actionbutton-staticblack-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticblack-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-actionbutton-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-actionbutton-staticblack-selected-mod-actionbutton-border-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-default: transparent; + --system-spectrum-actionbutton-staticwhite-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-actionbutton-staticwhite-border-color-default: var(--spectrum-transparent-white-400); + --system-spectrum-actionbutton-staticwhite-border-color-hover: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-border-color-down: var(--spectrum-transparent-white-600); + --system-spectrum-actionbutton-staticwhite-border-color-focus: var(--spectrum-transparent-white-500); + --system-spectrum-actionbutton-staticwhite-content-color-default: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-hover: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-down: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-content-color-focus: var(--spectrum-white); + --system-spectrum-actionbutton-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-actionbutton-staticwhite-background-color-disabled: transparent; + --system-spectrum-actionbutton-staticwhite-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-actionbutton-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-default: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-hover: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-down: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-content-color-focus: var(--spectrum-black); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-actionbutton-staticwhite-selected-mod-actionbutton-border-color-disabled: transparent; +} +/*# sourceMappingURL=components/actionbutton/themes/spectrum.css.map */ diff --git a/components/actiongroup/index-base.css b/components/actiongroup/index-base.css new file mode 100644 index 0000000000..d59dd94ef0 --- /dev/null +++ b/components/actiongroup/index-base.css @@ -0,0 +1,127 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ActionGroup { + --spectrum-actiongroup-button-spacing-reset: 0; + --spectrum-actiongroup-border-radius-reset: 0; + --spectrum-actiongroup-border-radius: var(--spectrum-corner-radius-100); +} +.spectrum-ActionGroup--sizeS, +.spectrum-ActionGroup--sizeXS { + --spectrum-actiongroup-horizontal-spacing-regular: var(--spectrum-spacing-75); + --spectrum-actiongroup-vertical-spacing-regular: var(--spectrum-spacing-75); +} +.spectrum-ActionGroup--sizeL, +.spectrum-ActionGroup--sizeM, +.spectrum-ActionGroup--sizeXL { + --spectrum-actiongroup-horizontal-spacing-regular: var(--spectrum-spacing-100); + --spectrum-actiongroup-vertical-spacing-regular: var(--spectrum-spacing-100); +} +.spectrum-ActionGroup { + display: flex; + flex-wrap: wrap; + gap: var(--mod-actiongroup-horizontal-spacing-regular, var(--spectrum-actiongroup-horizontal-spacing-regular)); +} +.spectrum-ActionGroup .spectrum-ActionGroup-item { + flex-shrink: 0; +} +.spectrum-ActionGroup .spectrum-ActionGroup-item:focus-visible { + z-index: 3; +} +.spectrum-ActionGroup.spectrum-ActionGroup:not(.spectrum-ActionGroup--vertical):not(.spectrum-ActionGroup--compact) .spectrum-ActionGroup-item { + flex-shrink: 0; +} +.spectrum-ActionGroup--vertical { + gap: var(--mod-actiongroup-vertical-spacing-regular, var(--spectrum-actiongroup-vertical-spacing-regular)); + display: inline-flex; + flex-direction: column; +} +.spectrum-ActionGroup--compact { + gap: var(--mod-actiongroup-gap-size-compact, var(--spectrum-actiongroup-gap-size-compact)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) { + flex-wrap: nowrap; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item { + position: relative; + border-radius: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); + z-index: 0; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child { + --mod-actionbutton-focus-indicator-border-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-start-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item { + --mod-actionbutton-focus-indicator-border-radius: 0px; + margin-inline-start: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); + margin-inline-end: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child { + --mod-actionbutton-focus-indicator-border-radius: 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px; + border-start-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-start: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); + margin-inline-end: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item.is-selected { + z-index: 1; +} +@media (hover: hover) { + .spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:hover { + z-index: 2; + } +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:focus-visible { + z-index: 3; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item .spectrum-ActionButton-label { + inline-size: auto; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet).spectrum-ActionGroup--vertical { + gap: var(--mod-actiongroup-gap-size-compact, var(--spectrum-actiongroup-gap-size-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item { + border-radius: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child { + --mod-actionbutton-focus-indicator-border-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px 0px; + border-start-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-start-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-start: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); + margin-block-end: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item { + margin-inline-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-inline-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-end: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child { + --mod-actionbutton-focus-indicator-border-radius: 0px 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-block-start: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); + margin-block-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); +} +.spectrum-ActionGroup--justified .spectrum-ActionGroup-item { + flex: 1; +} +.spectrum-ActionGroup { + --spectrum-actiongroup-gap-size-compact: var(--system-spectrum-actiongroup-gap-size-compact); + --spectrum-actiongroup-horizontal-spacing-compact: var(--system-spectrum-actiongroup-horizontal-spacing-compact); + --spectrum-actiongroup-vertical-spacing-compact: var(--system-spectrum-actiongroup-vertical-spacing-compact); +} +/*# sourceMappingURL=components/actiongroup/index.css.map */ diff --git a/components/actiongroup/index-theme.css b/components/actiongroup/index-theme.css new file mode 100644 index 0000000000..a5335277f4 --- /dev/null +++ b/components/actiongroup/index-theme.css @@ -0,0 +1,24 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-actiongroup-gap-size-compact: 0; + --system-spectrum-actiongroup-horizontal-spacing-compact: -1px; + --system-spectrum-actiongroup-vertical-spacing-compact: -1px; +} +.spectrum--express { + --system-spectrum-actiongroup-gap-size-compact: var(--spectrum-spacing-50); + --system-spectrum-actiongroup-horizontal-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); + --system-spectrum-actiongroup-vertical-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); +} +/*# sourceMappingURL=components/actiongroup/themes/express.css.map */ diff --git a/components/actiongroup/index-vars.css b/components/actiongroup/index-vars.css new file mode 100644 index 0000000000..8319d369e6 --- /dev/null +++ b/components/actiongroup/index-vars.css @@ -0,0 +1,137 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-actiongroup-gap-size-compact: 0; + --system-spectrum-actiongroup-horizontal-spacing-compact: -1px; + --system-spectrum-actiongroup-vertical-spacing-compact: -1px; +} +.spectrum--express { + --system-spectrum-actiongroup-gap-size-compact: var(--spectrum-spacing-50); + --system-spectrum-actiongroup-horizontal-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); + --system-spectrum-actiongroup-vertical-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); +} +.spectrum-ActionGroup { + --spectrum-actiongroup-button-spacing-reset: 0; + --spectrum-actiongroup-border-radius-reset: 0; + --spectrum-actiongroup-border-radius: var(--spectrum-corner-radius-100); +} +.spectrum-ActionGroup--sizeS, +.spectrum-ActionGroup--sizeXS { + --spectrum-actiongroup-horizontal-spacing-regular: var(--spectrum-spacing-75); + --spectrum-actiongroup-vertical-spacing-regular: var(--spectrum-spacing-75); +} +.spectrum-ActionGroup--sizeL, +.spectrum-ActionGroup--sizeM, +.spectrum-ActionGroup--sizeXL { + --spectrum-actiongroup-horizontal-spacing-regular: var(--spectrum-spacing-100); + --spectrum-actiongroup-vertical-spacing-regular: var(--spectrum-spacing-100); +} +.spectrum-ActionGroup { + display: flex; + flex-wrap: wrap; + gap: var(--mod-actiongroup-horizontal-spacing-regular, var(--spectrum-actiongroup-horizontal-spacing-regular)); +} +.spectrum-ActionGroup .spectrum-ActionGroup-item { + flex-shrink: 0; +} +.spectrum-ActionGroup .spectrum-ActionGroup-item:focus-visible { + z-index: 3; +} +.spectrum-ActionGroup.spectrum-ActionGroup:not(.spectrum-ActionGroup--vertical):not(.spectrum-ActionGroup--compact) .spectrum-ActionGroup-item { + flex-shrink: 0; +} +.spectrum-ActionGroup--vertical { + gap: var(--mod-actiongroup-vertical-spacing-regular, var(--spectrum-actiongroup-vertical-spacing-regular)); + display: inline-flex; + flex-direction: column; +} +.spectrum-ActionGroup--compact { + gap: var(--mod-actiongroup-gap-size-compact, var(--spectrum-actiongroup-gap-size-compact)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) { + flex-wrap: nowrap; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item { + position: relative; + border-radius: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); + z-index: 0; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child { + --mod-actionbutton-focus-indicator-border-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-start-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item { + --mod-actionbutton-focus-indicator-border-radius: 0px; + margin-inline-start: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); + margin-inline-end: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child { + --mod-actionbutton-focus-indicator-border-radius: 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px; + border-start-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-start: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); + margin-inline-end: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item.is-selected { + z-index: 1; +} +@media (hover: hover) { + .spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:hover { + z-index: 2; + } +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:focus-visible { + z-index: 3; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item .spectrum-ActionButton-label { + inline-size: auto; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet).spectrum-ActionGroup--vertical { + gap: var(--mod-actiongroup-gap-size-compact, var(--spectrum-actiongroup-gap-size-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item { + border-radius: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child { + --mod-actionbutton-focus-indicator-border-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px 0px; + border-start-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-start-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-start: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); + margin-block-end: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item { + margin-inline-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-inline-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-end: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child { + --mod-actionbutton-focus-indicator-border-radius: 0px 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-block-start: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); + margin-block-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); +} +.spectrum-ActionGroup--justified .spectrum-ActionGroup-item { + flex: 1; +} +.spectrum-ActionGroup { + --spectrum-actiongroup-gap-size-compact: var(--system-spectrum-actiongroup-gap-size-compact); + --spectrum-actiongroup-horizontal-spacing-compact: var(--system-spectrum-actiongroup-horizontal-spacing-compact); + --spectrum-actiongroup-vertical-spacing-compact: var(--system-spectrum-actiongroup-vertical-spacing-compact); +} +/*# sourceMappingURL=components/actiongroup/index.css.map */ diff --git a/components/actiongroup/index.css b/components/actiongroup/index.css new file mode 100644 index 0000000000..8319d369e6 --- /dev/null +++ b/components/actiongroup/index.css @@ -0,0 +1,137 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-actiongroup-gap-size-compact: 0; + --system-spectrum-actiongroup-horizontal-spacing-compact: -1px; + --system-spectrum-actiongroup-vertical-spacing-compact: -1px; +} +.spectrum--express { + --system-spectrum-actiongroup-gap-size-compact: var(--spectrum-spacing-50); + --system-spectrum-actiongroup-horizontal-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); + --system-spectrum-actiongroup-vertical-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); +} +.spectrum-ActionGroup { + --spectrum-actiongroup-button-spacing-reset: 0; + --spectrum-actiongroup-border-radius-reset: 0; + --spectrum-actiongroup-border-radius: var(--spectrum-corner-radius-100); +} +.spectrum-ActionGroup--sizeS, +.spectrum-ActionGroup--sizeXS { + --spectrum-actiongroup-horizontal-spacing-regular: var(--spectrum-spacing-75); + --spectrum-actiongroup-vertical-spacing-regular: var(--spectrum-spacing-75); +} +.spectrum-ActionGroup--sizeL, +.spectrum-ActionGroup--sizeM, +.spectrum-ActionGroup--sizeXL { + --spectrum-actiongroup-horizontal-spacing-regular: var(--spectrum-spacing-100); + --spectrum-actiongroup-vertical-spacing-regular: var(--spectrum-spacing-100); +} +.spectrum-ActionGroup { + display: flex; + flex-wrap: wrap; + gap: var(--mod-actiongroup-horizontal-spacing-regular, var(--spectrum-actiongroup-horizontal-spacing-regular)); +} +.spectrum-ActionGroup .spectrum-ActionGroup-item { + flex-shrink: 0; +} +.spectrum-ActionGroup .spectrum-ActionGroup-item:focus-visible { + z-index: 3; +} +.spectrum-ActionGroup.spectrum-ActionGroup:not(.spectrum-ActionGroup--vertical):not(.spectrum-ActionGroup--compact) .spectrum-ActionGroup-item { + flex-shrink: 0; +} +.spectrum-ActionGroup--vertical { + gap: var(--mod-actiongroup-vertical-spacing-regular, var(--spectrum-actiongroup-vertical-spacing-regular)); + display: inline-flex; + flex-direction: column; +} +.spectrum-ActionGroup--compact { + gap: var(--mod-actiongroup-gap-size-compact, var(--spectrum-actiongroup-gap-size-compact)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) { + flex-wrap: nowrap; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item { + position: relative; + border-radius: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); + z-index: 0; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child { + --mod-actionbutton-focus-indicator-border-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-start-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item { + --mod-actionbutton-focus-indicator-border-radius: 0px; + margin-inline-start: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); + margin-inline-end: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child { + --mod-actionbutton-focus-indicator-border-radius: 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px; + border-start-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-start: var(--mod-actiongroup-horizontal-spacing-compact, var(--spectrum-actiongroup-horizontal-spacing-compact)); + margin-inline-end: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item.is-selected { + z-index: 1; +} +@media (hover: hover) { + .spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:hover { + z-index: 2; + } +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:focus-visible { + z-index: 3; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item .spectrum-ActionButton-label { + inline-size: auto; +} +.spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet).spectrum-ActionGroup--vertical { + gap: var(--mod-actiongroup-gap-size-compact, var(--spectrum-actiongroup-gap-size-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item { + border-radius: var(--mod-actiongroup-border-radius-reset, var(--spectrum-actiongroup-border-radius-reset)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child { + --mod-actionbutton-focus-indicator-border-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) 0px 0px; + border-start-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-start-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-inline-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-start: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); + margin-block-end: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item { + margin-inline-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-inline-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-start: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); + margin-block-end: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); +} +.spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child { + --mod-actionbutton-focus-indicator-border-radius: 0px 0px var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)) var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-start-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + border-end-end-radius: var(--mod-actiongroup-border-radius, var(--spectrum-actiongroup-border-radius)); + margin-block-start: var(--mod-actiongroup-vertical-spacing-compact, var(--spectrum-actiongroup-vertical-spacing-compact)); + margin-block-end: var(--mod-actiongroup-button-spacing-reset, var(--spectrum-actiongroup-button-spacing-reset)); +} +.spectrum-ActionGroup--justified .spectrum-ActionGroup-item { + flex: 1; +} +.spectrum-ActionGroup { + --spectrum-actiongroup-gap-size-compact: var(--system-spectrum-actiongroup-gap-size-compact); + --spectrum-actiongroup-horizontal-spacing-compact: var(--system-spectrum-actiongroup-horizontal-spacing-compact); + --spectrum-actiongroup-vertical-spacing-compact: var(--system-spectrum-actiongroup-vertical-spacing-compact); +} +/*# sourceMappingURL=components/actiongroup/index.css.map */ diff --git a/components/actiongroup/metadata.json b/components/actiongroup/metadata.json new file mode 100644 index 0000000000..1dc2610941 --- /dev/null +++ b/components/actiongroup/metadata.json @@ -0,0 +1,59 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-ActionGroup", + ".spectrum-ActionGroup .spectrum-ActionGroup-item", + ".spectrum-ActionGroup .spectrum-ActionGroup-item:focus-visible", + ".spectrum-ActionGroup--compact", + ".spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item", + ".spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item", + ".spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child", + ".spectrum-ActionGroup--compact.spectrum-ActionGroup--vertical:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet)", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item + .spectrum-ActionGroup-item", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item .spectrum-ActionButton-label", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item.is-selected", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:first-child", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:focus-visible", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:hover", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet) .spectrum-ActionGroup-item:last-child", + ".spectrum-ActionGroup--compact:not(.spectrum-ActionGroup--quiet).spectrum-ActionGroup--vertical", + ".spectrum-ActionGroup--justified .spectrum-ActionGroup-item", + ".spectrum-ActionGroup--sizeL,\n.spectrum-ActionGroup--sizeM,\n.spectrum-ActionGroup--sizeXL", + ".spectrum-ActionGroup--sizeS,\n.spectrum-ActionGroup--sizeXS", + ".spectrum-ActionGroup--vertical", + ".spectrum-ActionGroup.spectrum-ActionGroup:not(.spectrum-ActionGroup--vertical):not(.spectrum-ActionGroup--compact) .spectrum-ActionGroup-item" + ], + "mods": [ + "--mod-actiongroup-border-radius", + "--mod-actiongroup-border-radius-reset", + "--mod-actiongroup-button-spacing-reset", + "--mod-actiongroup-gap-size-compact", + "--mod-actiongroup-horizontal-spacing-compact", + "--mod-actiongroup-horizontal-spacing-regular", + "--mod-actiongroup-vertical-spacing-compact", + "--mod-actiongroup-vertical-spacing-regular" + ], + "spectrum": [ + "--spectrum-actiongroup-border-radius", + "--spectrum-actiongroup-border-radius-reset", + "--spectrum-actiongroup-button-spacing-reset", + "--spectrum-actiongroup-gap-size-compact", + "--spectrum-actiongroup-horizontal-spacing-compact", + "--spectrum-actiongroup-horizontal-spacing-regular", + "--spectrum-actiongroup-vertical-spacing-compact", + "--spectrum-actiongroup-vertical-spacing-regular", + "--spectrum-corner-radius-100", + "--spectrum-spacing-100", + "--spectrum-spacing-50", + "--spectrum-spacing-75" + ], + "system": [ + "--system-spectrum-actiongroup-gap-size-compact", + "--system-spectrum-actiongroup-horizontal-spacing-compact", + "--system-spectrum-actiongroup-vertical-spacing-compact" + ], + "a11y": [] +} diff --git a/components/actiongroup/package.json b/components/actiongroup/package.json new file mode 100644 index 0000000000..56934579a7 --- /dev/null +++ b/components/actiongroup/package.json @@ -0,0 +1,42 @@ +{ + "name": "@spectrum-css/actiongroup", + "version": "5.1.0", + "description": "The Spectrum CSS actiongroup component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/actiongroup", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/actiongroup" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/actionbutton": { + "optional": true + } + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/actiongroup/template.js b/components/actiongroup/template.js new file mode 100644 index 0000000000..cba3244840 --- /dev/null +++ b/components/actiongroup/template.js @@ -0,0 +1,75 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Variants, renderContent } from "@spectrum-css/preview/decorators/utilities.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ActionGroup", + size = "m", + areQuiet = false, + areEmphasized = false, + vertical = false, + compact = false, + justified = false, + staticColor, + content = [], + customClasses = [], + customStyles = {}, +} = {}, context = {}) => { + return html` +
({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + > + ${renderContent(content, { + callback: ActionButton, + args: { + staticColor, + isQuiet: areQuiet, + isEmphasized: areEmphasized, + customClasses: [`${rootClass}-item`], + }, + context + })} +
+ `; +}; + +export const ActionGroups = Variants({ + Template, + testData: [ + {}, + { + testHeading: "Compact", + compact: true, + }, + { + testHeading: "Justified", + justified: true, + }, + { + testHeading: "Quiet", + areQuiet: true, + }, + { + testHeading: "Emphasized", + areEmphasized: true, + }, + { + testHeading: "Vertical", + vertical: true, + }, + ], +}); diff --git a/components/actiongroup/themes/express.css b/components/actiongroup/themes/express.css new file mode 100644 index 0000000000..5aa60eb4c3 --- /dev/null +++ b/components/actiongroup/themes/express.css @@ -0,0 +1,19 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-actiongroup-gap-size-compact: var(--spectrum-spacing-50); + --system-spectrum-actiongroup-horizontal-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); + --system-spectrum-actiongroup-vertical-spacing-compact: calc(-1px * var(--spectrum-spacing-50)); +} +/*# sourceMappingURL=components/actiongroup/themes/express.css.map */ diff --git a/components/actiongroup/themes/spectrum.css b/components/actiongroup/themes/spectrum.css new file mode 100644 index 0000000000..45fca0539d --- /dev/null +++ b/components/actiongroup/themes/spectrum.css @@ -0,0 +1,19 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-actiongroup-gap-size-compact: 0; + --system-spectrum-actiongroup-horizontal-spacing-compact: -1px; + --system-spectrum-actiongroup-vertical-spacing-compact: -1px; +} +/*# sourceMappingURL=components/actiongroup/themes/spectrum.css.map */ diff --git a/components/actionmenu/package.json b/components/actionmenu/package.json new file mode 100644 index 0000000000..3209ddedd9 --- /dev/null +++ b/components/actionmenu/package.json @@ -0,0 +1,47 @@ +{ + "name": "@spectrum-css/actionmenu", + "version": "6.1.1", + "description": "The Spectrum CSS actionmenu component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/actionmenu", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/actionmenu" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/icon": ">=7", + "@spectrum-css/menu": ">=7", + "@spectrum-css/popover": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/menu": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/components/actionmenu/template.js b/components/actionmenu/template.js new file mode 100644 index 0000000000..a01d8153c2 --- /dev/null +++ b/components/actionmenu/template.js @@ -0,0 +1,68 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Template as Menu } from "@spectrum-css/menu/stories/template.js"; +import { Template as Popover } from "@spectrum-css/popover/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; + +export const Template = ({ + id, + testId, + triggerId, + customClasses = [], + items = [], + isOpen = false, + label, + iconName = "More", + size = "m", + ...popoverArgs +} = {}, context = {}) => { + return Popover({ + isOpen, + id, + testId: testId ?? id, + triggerId, + content: [ + Menu({ items, isOpen, size }, context) + ], + trigger: (passthroughs) => ActionButton({ + size, + label, + hasPopup: "menu", + iconName, + customClasses, + ...passthroughs, + }, context), + ...popoverArgs, + }); +}; + +export const ActionMenuGroup = Variants({ + Template, + testData: [{ + id: "popover-1", + triggerId: "trigger-1", + customContainerStyles: { + "block-size": "250px", + }, + }, { + testHeading: "Closed menu", + isOpen: false, + id: "popover-2", + triggerId: "trigger-2", + items: [ + { + label: "Edit", + iconName: "Edit", + }, + { + label: "Delete", + iconName: "Delete", + }, + ], + }, { + testHeading: "Custom icon", + isOpen: false, + iconName: "Add", + id: "popover-3", + triggerId: "trigger-3", + }], +}); diff --git a/components/alertbanner/index-base.css b/components/alertbanner/index-base.css new file mode 100644 index 0000000000..7d25d867b8 --- /dev/null +++ b/components/alertbanner/index-base.css @@ -0,0 +1,94 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AlertBanner { + --spectrum-alert-banner-min-height: var(--spectrum-alert-banner-minimum-height); + --spectrum-alert-banner-max-inline-size: var(--spectrum-alert-banner-width); + --spectrum-alert-banner-size: auto; + --spectrum-alert-banner-font-size: var(--spectrum-font-size-100); + --spectrum-alert-banner-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-alert-banner-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-alert-banner-start-edge: var(--spectrum-spacing-300); + --spectrum-alert-banner-text-to-button-horizontal: var(--spectrum-spacing-300); + --spectrum-alert-banner-text-to-divider: var(--spectrum-spacing-300); + --spectrum-alert-banner-top-icon: var(--spectrum-alert-banner-top-to-workflow-icon); + --spectrum-alert-banner-top-text: var(--spectrum-alert-banner-top-to-text); + --spectrum-alert-banner-bottom-text: var(--spectrum-alert-banner-bottom-to-text); + --spectrum-alert-banner-informative-background: var(--spectrum-informative-background-color-default); + --spectrum-alert-banner-negative-background: var(--spectrum-negative-background-color-default); + --spectrum-alert-banner-font-color: var(--spectrum-white); + --mod-divider-vertical-margin: var(--mod-alert-banner-edge-to-divider, var(--spectrum-alert-banner-edge-to-divider)); + --mod-divider-vertical-height: auto; + --mod-divider-vertical-align: stretch; + --mod-button-margin-block: var(--mod-alert-banner-edge-to-button, var(--spectrum-alert-banner-edge-to-button)); + --mod-button-margin-right: var(--mod-alert-banner-text-to-divider, var(--spectrum-alert-banner-text-to-divider)); + --mod-button-margin-left: auto; + --mod-closebutton-margin-inline: var(--mod-alert-banner-close-button-spacing, var(--spectrum-alert-banner-close-button-spacing)); + --mod-closebutton-margin-top: var(--mod-alert-banner-close-button-spacing, var(--spectrum-alert-banner-close-button-spacing)); + --mod-closebutton-align-self: flex-start; + display: none; + justify-content: space-between; + inline-size: var(--mod-alert-banner-size, var(--spectrum-alert-banner-size)); + max-inline-size: var(--mod-alert-banner-max-inline-size, var(--spectrum-alert-banner-max-inline-size)); + min-block-size: var(--mod-alert-banner-min-height, var(--spectrum-alert-banner-min-height)); + font-size: var(--mod-alert-banner-font-size, var(--spectrum-alert-banner-font-size)); + color: var(--mod-alert-banner-font-color, var(--spectrum-alert-banner-font-color)); + background-color: var(--mod-alert-banner-netural-background, var(--spectrum-alert-banner-netural-background)); + border: var(--highcontrast-alert-banner-border-width, 0) solid var(--highcontrast-alert-banner-border-color, transparent); +} +.spectrum-AlertBanner.is-open { + display: flex; +} +.spectrum-AlertBanner--info { + background-color: var(--mod-alert-banner-informative-background, var(--spectrum-alert-banner-informative-background)); +} +.spectrum-AlertBanner--negative { + background-color: var(--mod-alert-banner-negative-background, var(--spectrum-alert-banner-negative-background)); +} +.spectrum-AlertBanner-body { + inline-size: 100%; + display: flex; + gap: max(calc(var(--mod-alert-banner-text-to-button-vertical, var(--spectrum-alert-banner-text-to-button-vertical)) - var(--mod-alert-banner-edge-to-button, var(--spectrum-alert-banner-edge-to-button))), 0px); + flex-wrap: wrap; + align-items: center; + margin-inline-start: var(--mod-alert-banner-start-edge, var(--spectrum-alert-banner-start-edge)); +} +.spectrum-AlertBanner-content { + display: flex; +} +.spectrum-AlertBanner-end { + display: flex; + align-items: center; +} +.spectrum-AlertBanner-icon { + inline-size: var(--mod-alert-banner-icon-size, var(--spectrum-alert-banner-icon-size)); + block-size: var(--mod-alert-banner-icon-size, var(--spectrum-alert-banner-icon-size)); + margin-block-start: var(--mod-alert-banner-top-icon, var(--spectrum-alert-banner-top-icon)); + margin-inline-end: var(--mod-alert-banner-icon-to-text, var(--spectrum-alert-banner-icon-to-text)); + flex-shrink: 0; +} +.spectrum-AlertBanner-text { + margin-block-start: var(--mod-alert-banner-top-text, var(--spectrum-alert-banner-top-text)); + margin-block-end: var(--mod-alert-banner-bottom-text, var(--spectrum-alert-banner-bottom-text)); + margin-inline-end: var(--mod-alert-banner-text-to-button-horizontal, var(--spectrum-alert-banner-text-to-button-horizontal)); +} +@media (forced-colors: active) { + .spectrum-AlertBanner { + --highcontrast-alert-banner-border-color: CanvasText; + --highcontrast-alert-banner-border-width: var(--spectrum-border-width-100); + } +} +.spectrum-AlertBanner { + --spectrum-alert-banner-netural-background: var(--system-spectrum-alertbanner-spectrum-alert-banner-netural-background); +} +/*# sourceMappingURL=components/alertbanner/index.css.map */ diff --git a/components/alertbanner/index-theme.css b/components/alertbanner/index-theme.css new file mode 100644 index 0000000000..bd4da696c8 --- /dev/null +++ b/components/alertbanner/index-theme.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-subdued-background-color-default); +} +.spectrum--express { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-background-color-default); +} +/*# sourceMappingURL=components/alertbanner/themes/express.css.map */ diff --git a/components/alertbanner/index-vars.css b/components/alertbanner/index-vars.css new file mode 100644 index 0000000000..faf325f5dd --- /dev/null +++ b/components/alertbanner/index-vars.css @@ -0,0 +1,100 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-subdued-background-color-default); +} +.spectrum--express { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-background-color-default); +} +.spectrum-AlertBanner { + --spectrum-alert-banner-min-height: var(--spectrum-alert-banner-minimum-height); + --spectrum-alert-banner-max-inline-size: var(--spectrum-alert-banner-width); + --spectrum-alert-banner-size: auto; + --spectrum-alert-banner-font-size: var(--spectrum-font-size-100); + --spectrum-alert-banner-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-alert-banner-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-alert-banner-start-edge: var(--spectrum-spacing-300); + --spectrum-alert-banner-text-to-button-horizontal: var(--spectrum-spacing-300); + --spectrum-alert-banner-text-to-divider: var(--spectrum-spacing-300); + --spectrum-alert-banner-top-icon: var(--spectrum-alert-banner-top-to-workflow-icon); + --spectrum-alert-banner-top-text: var(--spectrum-alert-banner-top-to-text); + --spectrum-alert-banner-bottom-text: var(--spectrum-alert-banner-bottom-to-text); + --spectrum-alert-banner-informative-background: var(--spectrum-informative-background-color-default); + --spectrum-alert-banner-negative-background: var(--spectrum-negative-background-color-default); + --spectrum-alert-banner-font-color: var(--spectrum-white); + --mod-divider-vertical-margin: var(--mod-alert-banner-edge-to-divider, var(--spectrum-alert-banner-edge-to-divider)); + --mod-divider-vertical-height: auto; + --mod-divider-vertical-align: stretch; + --mod-button-margin-block: var(--mod-alert-banner-edge-to-button, var(--spectrum-alert-banner-edge-to-button)); + --mod-button-margin-right: var(--mod-alert-banner-text-to-divider, var(--spectrum-alert-banner-text-to-divider)); + --mod-button-margin-left: auto; + --mod-closebutton-margin-inline: var(--mod-alert-banner-close-button-spacing, var(--spectrum-alert-banner-close-button-spacing)); + --mod-closebutton-margin-top: var(--mod-alert-banner-close-button-spacing, var(--spectrum-alert-banner-close-button-spacing)); + --mod-closebutton-align-self: flex-start; + display: none; + justify-content: space-between; + inline-size: var(--mod-alert-banner-size, var(--spectrum-alert-banner-size)); + max-inline-size: var(--mod-alert-banner-max-inline-size, var(--spectrum-alert-banner-max-inline-size)); + min-block-size: var(--mod-alert-banner-min-height, var(--spectrum-alert-banner-min-height)); + font-size: var(--mod-alert-banner-font-size, var(--spectrum-alert-banner-font-size)); + color: var(--mod-alert-banner-font-color, var(--spectrum-alert-banner-font-color)); + background-color: var(--mod-alert-banner-netural-background, var(--spectrum-alert-banner-netural-background)); + border: var(--highcontrast-alert-banner-border-width, 0) solid var(--highcontrast-alert-banner-border-color, transparent); +} +.spectrum-AlertBanner.is-open { + display: flex; +} +.spectrum-AlertBanner--info { + background-color: var(--mod-alert-banner-informative-background, var(--spectrum-alert-banner-informative-background)); +} +.spectrum-AlertBanner--negative { + background-color: var(--mod-alert-banner-negative-background, var(--spectrum-alert-banner-negative-background)); +} +.spectrum-AlertBanner-body { + inline-size: 100%; + display: flex; + gap: max(calc(var(--mod-alert-banner-text-to-button-vertical, var(--spectrum-alert-banner-text-to-button-vertical)) - var(--mod-alert-banner-edge-to-button, var(--spectrum-alert-banner-edge-to-button))), 0px); + flex-wrap: wrap; + align-items: center; + margin-inline-start: var(--mod-alert-banner-start-edge, var(--spectrum-alert-banner-start-edge)); +} +.spectrum-AlertBanner-content { + display: flex; +} +.spectrum-AlertBanner-end { + display: flex; + align-items: center; +} +.spectrum-AlertBanner-icon { + inline-size: var(--mod-alert-banner-icon-size, var(--spectrum-alert-banner-icon-size)); + block-size: var(--mod-alert-banner-icon-size, var(--spectrum-alert-banner-icon-size)); + margin-block-start: var(--mod-alert-banner-top-icon, var(--spectrum-alert-banner-top-icon)); + margin-inline-end: var(--mod-alert-banner-icon-to-text, var(--spectrum-alert-banner-icon-to-text)); + flex-shrink: 0; +} +.spectrum-AlertBanner-text { + margin-block-start: var(--mod-alert-banner-top-text, var(--spectrum-alert-banner-top-text)); + margin-block-end: var(--mod-alert-banner-bottom-text, var(--spectrum-alert-banner-bottom-text)); + margin-inline-end: var(--mod-alert-banner-text-to-button-horizontal, var(--spectrum-alert-banner-text-to-button-horizontal)); +} +@media (forced-colors: active) { + .spectrum-AlertBanner { + --highcontrast-alert-banner-border-color: CanvasText; + --highcontrast-alert-banner-border-width: var(--spectrum-border-width-100); + } +} +.spectrum-AlertBanner { + --spectrum-alert-banner-netural-background: var(--system-spectrum-alertbanner-spectrum-alert-banner-netural-background); +} +/*# sourceMappingURL=components/alertbanner/index.css.map */ diff --git a/components/alertbanner/index.css b/components/alertbanner/index.css new file mode 100644 index 0000000000..faf325f5dd --- /dev/null +++ b/components/alertbanner/index.css @@ -0,0 +1,100 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-subdued-background-color-default); +} +.spectrum--express { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-background-color-default); +} +.spectrum-AlertBanner { + --spectrum-alert-banner-min-height: var(--spectrum-alert-banner-minimum-height); + --spectrum-alert-banner-max-inline-size: var(--spectrum-alert-banner-width); + --spectrum-alert-banner-size: auto; + --spectrum-alert-banner-font-size: var(--spectrum-font-size-100); + --spectrum-alert-banner-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-alert-banner-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-alert-banner-start-edge: var(--spectrum-spacing-300); + --spectrum-alert-banner-text-to-button-horizontal: var(--spectrum-spacing-300); + --spectrum-alert-banner-text-to-divider: var(--spectrum-spacing-300); + --spectrum-alert-banner-top-icon: var(--spectrum-alert-banner-top-to-workflow-icon); + --spectrum-alert-banner-top-text: var(--spectrum-alert-banner-top-to-text); + --spectrum-alert-banner-bottom-text: var(--spectrum-alert-banner-bottom-to-text); + --spectrum-alert-banner-informative-background: var(--spectrum-informative-background-color-default); + --spectrum-alert-banner-negative-background: var(--spectrum-negative-background-color-default); + --spectrum-alert-banner-font-color: var(--spectrum-white); + --mod-divider-vertical-margin: var(--mod-alert-banner-edge-to-divider, var(--spectrum-alert-banner-edge-to-divider)); + --mod-divider-vertical-height: auto; + --mod-divider-vertical-align: stretch; + --mod-button-margin-block: var(--mod-alert-banner-edge-to-button, var(--spectrum-alert-banner-edge-to-button)); + --mod-button-margin-right: var(--mod-alert-banner-text-to-divider, var(--spectrum-alert-banner-text-to-divider)); + --mod-button-margin-left: auto; + --mod-closebutton-margin-inline: var(--mod-alert-banner-close-button-spacing, var(--spectrum-alert-banner-close-button-spacing)); + --mod-closebutton-margin-top: var(--mod-alert-banner-close-button-spacing, var(--spectrum-alert-banner-close-button-spacing)); + --mod-closebutton-align-self: flex-start; + display: none; + justify-content: space-between; + inline-size: var(--mod-alert-banner-size, var(--spectrum-alert-banner-size)); + max-inline-size: var(--mod-alert-banner-max-inline-size, var(--spectrum-alert-banner-max-inline-size)); + min-block-size: var(--mod-alert-banner-min-height, var(--spectrum-alert-banner-min-height)); + font-size: var(--mod-alert-banner-font-size, var(--spectrum-alert-banner-font-size)); + color: var(--mod-alert-banner-font-color, var(--spectrum-alert-banner-font-color)); + background-color: var(--mod-alert-banner-netural-background, var(--spectrum-alert-banner-netural-background)); + border: var(--highcontrast-alert-banner-border-width, 0) solid var(--highcontrast-alert-banner-border-color, transparent); +} +.spectrum-AlertBanner.is-open { + display: flex; +} +.spectrum-AlertBanner--info { + background-color: var(--mod-alert-banner-informative-background, var(--spectrum-alert-banner-informative-background)); +} +.spectrum-AlertBanner--negative { + background-color: var(--mod-alert-banner-negative-background, var(--spectrum-alert-banner-negative-background)); +} +.spectrum-AlertBanner-body { + inline-size: 100%; + display: flex; + gap: max(calc(var(--mod-alert-banner-text-to-button-vertical, var(--spectrum-alert-banner-text-to-button-vertical)) - var(--mod-alert-banner-edge-to-button, var(--spectrum-alert-banner-edge-to-button))), 0px); + flex-wrap: wrap; + align-items: center; + margin-inline-start: var(--mod-alert-banner-start-edge, var(--spectrum-alert-banner-start-edge)); +} +.spectrum-AlertBanner-content { + display: flex; +} +.spectrum-AlertBanner-end { + display: flex; + align-items: center; +} +.spectrum-AlertBanner-icon { + inline-size: var(--mod-alert-banner-icon-size, var(--spectrum-alert-banner-icon-size)); + block-size: var(--mod-alert-banner-icon-size, var(--spectrum-alert-banner-icon-size)); + margin-block-start: var(--mod-alert-banner-top-icon, var(--spectrum-alert-banner-top-icon)); + margin-inline-end: var(--mod-alert-banner-icon-to-text, var(--spectrum-alert-banner-icon-to-text)); + flex-shrink: 0; +} +.spectrum-AlertBanner-text { + margin-block-start: var(--mod-alert-banner-top-text, var(--spectrum-alert-banner-top-text)); + margin-block-end: var(--mod-alert-banner-bottom-text, var(--spectrum-alert-banner-bottom-text)); + margin-inline-end: var(--mod-alert-banner-text-to-button-horizontal, var(--spectrum-alert-banner-text-to-button-horizontal)); +} +@media (forced-colors: active) { + .spectrum-AlertBanner { + --highcontrast-alert-banner-border-color: CanvasText; + --highcontrast-alert-banner-border-width: var(--spectrum-border-width-100); + } +} +.spectrum-AlertBanner { + --spectrum-alert-banner-netural-background: var(--system-spectrum-alertbanner-spectrum-alert-banner-netural-background); +} +/*# sourceMappingURL=components/alertbanner/index.css.map */ diff --git a/components/alertbanner/metadata.json b/components/alertbanner/metadata.json new file mode 100644 index 0000000000..4c6f2b4972 --- /dev/null +++ b/components/alertbanner/metadata.json @@ -0,0 +1,81 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-AlertBanner", + ".spectrum-AlertBanner--info", + ".spectrum-AlertBanner--negative", + ".spectrum-AlertBanner-body", + ".spectrum-AlertBanner-content", + ".spectrum-AlertBanner-end", + ".spectrum-AlertBanner-icon", + ".spectrum-AlertBanner-text", + ".spectrum-AlertBanner.is-open" + ], + "mods": [ + "--mod-alert-banner-bottom-text", + "--mod-alert-banner-close-button-spacing", + "--mod-alert-banner-edge-to-button", + "--mod-alert-banner-edge-to-divider", + "--mod-alert-banner-font-color", + "--mod-alert-banner-font-size", + "--mod-alert-banner-icon-size", + "--mod-alert-banner-icon-to-text", + "--mod-alert-banner-informative-background", + "--mod-alert-banner-max-inline-size", + "--mod-alert-banner-min-height", + "--mod-alert-banner-negative-background", + "--mod-alert-banner-netural-background", + "--mod-alert-banner-size", + "--mod-alert-banner-start-edge", + "--mod-alert-banner-text-to-button-horizontal", + "--mod-alert-banner-text-to-button-vertical", + "--mod-alert-banner-text-to-divider", + "--mod-alert-banner-top-icon", + "--mod-alert-banner-top-text" + ], + "spectrum": [ + "--spectrum-alert-banner-bottom-text", + "--spectrum-alert-banner-bottom-to-text", + "--spectrum-alert-banner-close-button-spacing", + "--spectrum-alert-banner-edge-to-button", + "--spectrum-alert-banner-edge-to-divider", + "--spectrum-alert-banner-font-color", + "--spectrum-alert-banner-font-size", + "--spectrum-alert-banner-icon-size", + "--spectrum-alert-banner-icon-to-text", + "--spectrum-alert-banner-informative-background", + "--spectrum-alert-banner-max-inline-size", + "--spectrum-alert-banner-min-height", + "--spectrum-alert-banner-minimum-height", + "--spectrum-alert-banner-negative-background", + "--spectrum-alert-banner-netural-background", + "--spectrum-alert-banner-size", + "--spectrum-alert-banner-start-edge", + "--spectrum-alert-banner-text-to-button-horizontal", + "--spectrum-alert-banner-text-to-button-vertical", + "--spectrum-alert-banner-text-to-divider", + "--spectrum-alert-banner-top-icon", + "--spectrum-alert-banner-top-text", + "--spectrum-alert-banner-top-to-text", + "--spectrum-alert-banner-top-to-workflow-icon", + "--spectrum-alert-banner-width", + "--spectrum-border-width-100", + "--spectrum-font-size-100", + "--spectrum-informative-background-color-default", + "--spectrum-negative-background-color-default", + "--spectrum-neutral-background-color-default", + "--spectrum-neutral-subdued-background-color-default", + "--spectrum-spacing-300", + "--spectrum-text-to-visual-300", + "--spectrum-white", + "--spectrum-workflow-icon-size-100" + ], + "system": [ + "--system-spectrum-alertbanner-spectrum-alert-banner-netural-background" + ], + "a11y": [ + "--highcontrast-alert-banner-border-color", + "--highcontrast-alert-banner-border-width" + ] +} diff --git a/components/alertbanner/package.json b/components/alertbanner/package.json new file mode 100644 index 0000000000..c11e143a14 --- /dev/null +++ b/components/alertbanner/package.json @@ -0,0 +1,52 @@ +{ + "name": "@spectrum-css/alertbanner", + "version": "2.2.0", + "description": "The Spectrum CSS alertbanner component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/alertbanner", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/alertbanner" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/button": ">=13", + "@spectrum-css/closebutton": ">=5", + "@spectrum-css/divider": ">=3", + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/button": "workspace:^", + "@spectrum-css/closebutton": "workspace:^", + "@spectrum-css/divider": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/alertbanner/template.js b/components/alertbanner/template.js new file mode 100644 index 0000000000..0dd6f8dcbb --- /dev/null +++ b/components/alertbanner/template.js @@ -0,0 +1,98 @@ +import { Template as Button } from "@spectrum-css/button/stories/template.js"; +import { Template as CloseButton } from "@spectrum-css/closebutton/stories/template.js"; +import { Template as Divider } from "@spectrum-css/divider/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-AlertBanner", + isOpen = true, + text, + variant, + hasActionButton, + customClasses = [], +} = {}, context = {}) => { + return html` +
({ ...a, [c]: true }), {}), + })} + > +
+
+ ${when( + ["negative", "info"].some(type => variant === type), + () => Icon({ + iconName: variant === "negative" ? "Alert" : "Info", + customClasses: [`${rootClass}-icon`], + }, context) + )} + ${when(text, () => html` +

${text}

+ `)} +
+ ${when(hasActionButton, () => + Button({ + size: "m", + staticColor: "white", + treatment: "outline", + label: "Action", + }, context) + )} +
+
+ ${Divider({ + vertical: true, + size: "s", + tag: "div", + }, context)} + ${CloseButton({ + size: "m", + staticColor: "white", + onclick, + }, context)} +
+
+ `; +}; + +export const AlertBannerGroup = Variants({ + Template, + testData: [ + { + testHeading: "Neutral", + }, + { + testHeading: "Informational", + text: "Your trial will expire in 3 days. Once it expires your files will be saved and ready for you to open again once you have purcahsed the software.", + variant: "info", + hasActionButton: false, + }, + { + testHeading: "Warning", + text: "Connection interupted. Check your network to continue.", + variant: "negative", + hasActionButton: true, + }, + { + testHeading: "Closed", + isOpen: false, + }, + ], +}); diff --git a/components/alertbanner/themes/express.css b/components/alertbanner/themes/express.css new file mode 100644 index 0000000000..8b8f301fe5 --- /dev/null +++ b/components/alertbanner/themes/express.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-background-color-default); +} +/*# sourceMappingURL=components/alertbanner/themes/express.css.map */ diff --git a/components/alertbanner/themes/spectrum.css b/components/alertbanner/themes/spectrum.css new file mode 100644 index 0000000000..d1542e1267 --- /dev/null +++ b/components/alertbanner/themes/spectrum.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-alertbanner-spectrum-alert-banner-netural-background: var(--spectrum-neutral-subdued-background-color-default); +} +/*# sourceMappingURL=components/alertbanner/themes/spectrum.css.map */ diff --git a/components/alertdialog/index-base.css b/components/alertdialog/index-base.css new file mode 100644 index 0000000000..734374e71d --- /dev/null +++ b/components/alertdialog/index-base.css @@ -0,0 +1,94 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AlertDialog { + --spectrum-alert-dialog-min-width: var(--spectrum-alert-dialog-minimum-width); + --spectrum-alert-dialog-max-width: var(--spectrum-alert-dialog-maximum-width); + --spectrum-alert-dialog-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-alert-dialog-warning-icon-color: var(--spectrum-notice-visual-color); + --spectrum-alert-dialog-error-icon-color: var(--spectrum-negative-visual-color); + --spectrum-alert-dialog-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-alert-dialog-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-alert-dialog-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-alert-dialog-title-font-size: var(--spectrum-alert-dialog-title-size); + --spectrum-alert-dialog-title-line-height: var(--spectrum-heading-line-height); + --spectrum-alert-dialog-title-color: var(--spectrum-heading-color); + --spectrum-alert-dialog-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-alert-dialog-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-alert-dialog-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-alert-dialog-body-font-size: var(--spectrum-alert-dialog-description-size); + --spectrum-alert-dialog-body-line-height: var(--spectrum-line-height-100); + --spectrum-alert-dialog-body-color: var(--spectrum-body-color); + --spectrum-alert-dialog-title-to-divider: var(--spectrum-spacing-200); + --spectrum-alert-dialog-divider-to-description: var(--spectrum-spacing-300); + --spectrum-alert-dialog-title-to-icon: var(--spectrum-spacing-300); + --mod-buttongroup-justify-content: flex-end; + display: flex; + box-sizing: border-box; + inline-size: -moz-fit-content; + inline-size: fit-content; + min-inline-size: var(--mod-alert-dialog-min-width, var(--spectrum-alert-dialog-min-width)); + max-inline-size: var(--mod-alert-dialog-max-width, var(--spectrum-alert-dialog-max-width)); + max-block-size: inherit; + outline: none; + padding: var(--mod-alert-dialog-padding, var(--spectrum-alert-dialog-padding)); +} +.spectrum-AlertDialog .spectrum-Icon { + inline-size: var(--mod-alert-dialog-icon-size, var(--spectrum-alert-dialog-icon-size)); + block-size: var(--mod-alert-dialog-icon-size, var(--spectrum-alert-dialog-icon-size)); + margin-inline-start: var(--mod-alert-dialog-title-to-icon, var(--spectrum-alert-dialog-title-to-icon)); + flex-shrink: 0; +} +.spectrum-AlertDialog--warning { + --mod-icon-color: var(--mod-alert-dialog-warning-icon-color, var(--spectrum-alert-dialog-warning-icon-color)); +} +.spectrum-AlertDialog--error { + --mod-icon-color: var(--mod-alert-dialog-error-icon-color, var(--spectrum-alert-dialog-error-icon-color)); +} +.spectrum-AlertDialog-grid { + display: grid; +} +.spectrum-AlertDialog-header { + display: flex; + justify-content: space-between; + align-items: baseline; +} +.spectrum-AlertDialog-heading { + font-family: var(--mod-alert-dialog-title-font-family, var(--spectrum-alert-dialog-title-font-family)); + font-weight: var(--mod-alert-dialog-title-font-weight, var(--spectrum-alert-dialog-title-font-weight)); + font-style: var(--mod-alert-dialog-title-font-style, var(--spectrum-alert-dialog-title-font-style)); + font-size: var(--mod-alert-dialog-title-font-size, var(--spectrum-alert-dialog-title-font-size)); + line-height: var(--mod-alert-dialog-title-line-height, var(--spectrum-alert-dialog-title-line-height)); + color: var(--mod-alert-dialog-title-color, var(--spectrum-alert-dialog-title-color)); + margin: 0; + margin-block-end: var(--mod-alert-dialog-title-to-divider, var(--spectrum-alert-dialog-title-to-divider)); +} +.spectrum-AlertDialog-content { + font-family: var(--mod-alert-dialog-body-font-family, var(--spectrum-alert-dialog-body-font-family)); + font-weight: var(--mod-alert-dialog-body-font-weight, var(--spectrum-alert-dialog-body-font-weight)); + font-style: var(--mod-alert-dialog-body-font-style, var(--spectrum-alert-dialog-body-font-style)); + font-size: var(--mod-alert-dialog-body-font-size, var(--spectrum-alert-dialog-body-font-size)); + line-height: var(--mod-alert-dialog-body-line-height, var(--spectrum-alert-dialog-body-line-height)); + color: var(--mod-alert-dialog-body-color, var(--spectrum-alert-dialog-body-color)); + margin: 0; + margin-block-start: var(--mod-alert-dialog-divider-to-description, var(--spectrum-alert-dialog-divider-to-description)); + margin-block-end: var(--mod-alert-dialog-description-to-buttons, var(--spectrum-alert-dialog-description-to-buttons)); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +@media (forced-colors: active) { + .spectrum-AlertDialog { + border: solid; + } +} +/*# sourceMappingURL=components/alertdialog/index.css.map */ diff --git a/components/alertdialog/index-vars.css b/components/alertdialog/index-vars.css new file mode 100644 index 0000000000..734374e71d --- /dev/null +++ b/components/alertdialog/index-vars.css @@ -0,0 +1,94 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AlertDialog { + --spectrum-alert-dialog-min-width: var(--spectrum-alert-dialog-minimum-width); + --spectrum-alert-dialog-max-width: var(--spectrum-alert-dialog-maximum-width); + --spectrum-alert-dialog-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-alert-dialog-warning-icon-color: var(--spectrum-notice-visual-color); + --spectrum-alert-dialog-error-icon-color: var(--spectrum-negative-visual-color); + --spectrum-alert-dialog-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-alert-dialog-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-alert-dialog-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-alert-dialog-title-font-size: var(--spectrum-alert-dialog-title-size); + --spectrum-alert-dialog-title-line-height: var(--spectrum-heading-line-height); + --spectrum-alert-dialog-title-color: var(--spectrum-heading-color); + --spectrum-alert-dialog-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-alert-dialog-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-alert-dialog-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-alert-dialog-body-font-size: var(--spectrum-alert-dialog-description-size); + --spectrum-alert-dialog-body-line-height: var(--spectrum-line-height-100); + --spectrum-alert-dialog-body-color: var(--spectrum-body-color); + --spectrum-alert-dialog-title-to-divider: var(--spectrum-spacing-200); + --spectrum-alert-dialog-divider-to-description: var(--spectrum-spacing-300); + --spectrum-alert-dialog-title-to-icon: var(--spectrum-spacing-300); + --mod-buttongroup-justify-content: flex-end; + display: flex; + box-sizing: border-box; + inline-size: -moz-fit-content; + inline-size: fit-content; + min-inline-size: var(--mod-alert-dialog-min-width, var(--spectrum-alert-dialog-min-width)); + max-inline-size: var(--mod-alert-dialog-max-width, var(--spectrum-alert-dialog-max-width)); + max-block-size: inherit; + outline: none; + padding: var(--mod-alert-dialog-padding, var(--spectrum-alert-dialog-padding)); +} +.spectrum-AlertDialog .spectrum-Icon { + inline-size: var(--mod-alert-dialog-icon-size, var(--spectrum-alert-dialog-icon-size)); + block-size: var(--mod-alert-dialog-icon-size, var(--spectrum-alert-dialog-icon-size)); + margin-inline-start: var(--mod-alert-dialog-title-to-icon, var(--spectrum-alert-dialog-title-to-icon)); + flex-shrink: 0; +} +.spectrum-AlertDialog--warning { + --mod-icon-color: var(--mod-alert-dialog-warning-icon-color, var(--spectrum-alert-dialog-warning-icon-color)); +} +.spectrum-AlertDialog--error { + --mod-icon-color: var(--mod-alert-dialog-error-icon-color, var(--spectrum-alert-dialog-error-icon-color)); +} +.spectrum-AlertDialog-grid { + display: grid; +} +.spectrum-AlertDialog-header { + display: flex; + justify-content: space-between; + align-items: baseline; +} +.spectrum-AlertDialog-heading { + font-family: var(--mod-alert-dialog-title-font-family, var(--spectrum-alert-dialog-title-font-family)); + font-weight: var(--mod-alert-dialog-title-font-weight, var(--spectrum-alert-dialog-title-font-weight)); + font-style: var(--mod-alert-dialog-title-font-style, var(--spectrum-alert-dialog-title-font-style)); + font-size: var(--mod-alert-dialog-title-font-size, var(--spectrum-alert-dialog-title-font-size)); + line-height: var(--mod-alert-dialog-title-line-height, var(--spectrum-alert-dialog-title-line-height)); + color: var(--mod-alert-dialog-title-color, var(--spectrum-alert-dialog-title-color)); + margin: 0; + margin-block-end: var(--mod-alert-dialog-title-to-divider, var(--spectrum-alert-dialog-title-to-divider)); +} +.spectrum-AlertDialog-content { + font-family: var(--mod-alert-dialog-body-font-family, var(--spectrum-alert-dialog-body-font-family)); + font-weight: var(--mod-alert-dialog-body-font-weight, var(--spectrum-alert-dialog-body-font-weight)); + font-style: var(--mod-alert-dialog-body-font-style, var(--spectrum-alert-dialog-body-font-style)); + font-size: var(--mod-alert-dialog-body-font-size, var(--spectrum-alert-dialog-body-font-size)); + line-height: var(--mod-alert-dialog-body-line-height, var(--spectrum-alert-dialog-body-line-height)); + color: var(--mod-alert-dialog-body-color, var(--spectrum-alert-dialog-body-color)); + margin: 0; + margin-block-start: var(--mod-alert-dialog-divider-to-description, var(--spectrum-alert-dialog-divider-to-description)); + margin-block-end: var(--mod-alert-dialog-description-to-buttons, var(--spectrum-alert-dialog-description-to-buttons)); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +@media (forced-colors: active) { + .spectrum-AlertDialog { + border: solid; + } +} +/*# sourceMappingURL=components/alertdialog/index.css.map */ diff --git a/components/alertdialog/index.css b/components/alertdialog/index.css new file mode 100644 index 0000000000..734374e71d --- /dev/null +++ b/components/alertdialog/index.css @@ -0,0 +1,94 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AlertDialog { + --spectrum-alert-dialog-min-width: var(--spectrum-alert-dialog-minimum-width); + --spectrum-alert-dialog-max-width: var(--spectrum-alert-dialog-maximum-width); + --spectrum-alert-dialog-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-alert-dialog-warning-icon-color: var(--spectrum-notice-visual-color); + --spectrum-alert-dialog-error-icon-color: var(--spectrum-negative-visual-color); + --spectrum-alert-dialog-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-alert-dialog-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-alert-dialog-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-alert-dialog-title-font-size: var(--spectrum-alert-dialog-title-size); + --spectrum-alert-dialog-title-line-height: var(--spectrum-heading-line-height); + --spectrum-alert-dialog-title-color: var(--spectrum-heading-color); + --spectrum-alert-dialog-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-alert-dialog-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-alert-dialog-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-alert-dialog-body-font-size: var(--spectrum-alert-dialog-description-size); + --spectrum-alert-dialog-body-line-height: var(--spectrum-line-height-100); + --spectrum-alert-dialog-body-color: var(--spectrum-body-color); + --spectrum-alert-dialog-title-to-divider: var(--spectrum-spacing-200); + --spectrum-alert-dialog-divider-to-description: var(--spectrum-spacing-300); + --spectrum-alert-dialog-title-to-icon: var(--spectrum-spacing-300); + --mod-buttongroup-justify-content: flex-end; + display: flex; + box-sizing: border-box; + inline-size: -moz-fit-content; + inline-size: fit-content; + min-inline-size: var(--mod-alert-dialog-min-width, var(--spectrum-alert-dialog-min-width)); + max-inline-size: var(--mod-alert-dialog-max-width, var(--spectrum-alert-dialog-max-width)); + max-block-size: inherit; + outline: none; + padding: var(--mod-alert-dialog-padding, var(--spectrum-alert-dialog-padding)); +} +.spectrum-AlertDialog .spectrum-Icon { + inline-size: var(--mod-alert-dialog-icon-size, var(--spectrum-alert-dialog-icon-size)); + block-size: var(--mod-alert-dialog-icon-size, var(--spectrum-alert-dialog-icon-size)); + margin-inline-start: var(--mod-alert-dialog-title-to-icon, var(--spectrum-alert-dialog-title-to-icon)); + flex-shrink: 0; +} +.spectrum-AlertDialog--warning { + --mod-icon-color: var(--mod-alert-dialog-warning-icon-color, var(--spectrum-alert-dialog-warning-icon-color)); +} +.spectrum-AlertDialog--error { + --mod-icon-color: var(--mod-alert-dialog-error-icon-color, var(--spectrum-alert-dialog-error-icon-color)); +} +.spectrum-AlertDialog-grid { + display: grid; +} +.spectrum-AlertDialog-header { + display: flex; + justify-content: space-between; + align-items: baseline; +} +.spectrum-AlertDialog-heading { + font-family: var(--mod-alert-dialog-title-font-family, var(--spectrum-alert-dialog-title-font-family)); + font-weight: var(--mod-alert-dialog-title-font-weight, var(--spectrum-alert-dialog-title-font-weight)); + font-style: var(--mod-alert-dialog-title-font-style, var(--spectrum-alert-dialog-title-font-style)); + font-size: var(--mod-alert-dialog-title-font-size, var(--spectrum-alert-dialog-title-font-size)); + line-height: var(--mod-alert-dialog-title-line-height, var(--spectrum-alert-dialog-title-line-height)); + color: var(--mod-alert-dialog-title-color, var(--spectrum-alert-dialog-title-color)); + margin: 0; + margin-block-end: var(--mod-alert-dialog-title-to-divider, var(--spectrum-alert-dialog-title-to-divider)); +} +.spectrum-AlertDialog-content { + font-family: var(--mod-alert-dialog-body-font-family, var(--spectrum-alert-dialog-body-font-family)); + font-weight: var(--mod-alert-dialog-body-font-weight, var(--spectrum-alert-dialog-body-font-weight)); + font-style: var(--mod-alert-dialog-body-font-style, var(--spectrum-alert-dialog-body-font-style)); + font-size: var(--mod-alert-dialog-body-font-size, var(--spectrum-alert-dialog-body-font-size)); + line-height: var(--mod-alert-dialog-body-line-height, var(--spectrum-alert-dialog-body-line-height)); + color: var(--mod-alert-dialog-body-color, var(--spectrum-alert-dialog-body-color)); + margin: 0; + margin-block-start: var(--mod-alert-dialog-divider-to-description, var(--spectrum-alert-dialog-divider-to-description)); + margin-block-end: var(--mod-alert-dialog-description-to-buttons, var(--spectrum-alert-dialog-description-to-buttons)); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +@media (forced-colors: active) { + .spectrum-AlertDialog { + border: solid; + } +} +/*# sourceMappingURL=components/alertdialog/index.css.map */ diff --git a/components/alertdialog/metadata.json b/components/alertdialog/metadata.json new file mode 100644 index 0000000000..dde3bb2390 --- /dev/null +++ b/components/alertdialog/metadata.json @@ -0,0 +1,80 @@ +{ + "selectors": [ + ".spectrum-AlertDialog", + ".spectrum-AlertDialog .spectrum-Icon", + ".spectrum-AlertDialog--error", + ".spectrum-AlertDialog--warning", + ".spectrum-AlertDialog-content", + ".spectrum-AlertDialog-grid", + ".spectrum-AlertDialog-header", + ".spectrum-AlertDialog-heading" + ], + "mods": [ + "--mod-alert-dialog-body-color", + "--mod-alert-dialog-body-font-family", + "--mod-alert-dialog-body-font-size", + "--mod-alert-dialog-body-font-style", + "--mod-alert-dialog-body-font-weight", + "--mod-alert-dialog-body-line-height", + "--mod-alert-dialog-description-to-buttons", + "--mod-alert-dialog-divider-to-description", + "--mod-alert-dialog-error-icon-color", + "--mod-alert-dialog-icon-size", + "--mod-alert-dialog-max-width", + "--mod-alert-dialog-min-width", + "--mod-alert-dialog-padding", + "--mod-alert-dialog-title-color", + "--mod-alert-dialog-title-font-family", + "--mod-alert-dialog-title-font-size", + "--mod-alert-dialog-title-font-style", + "--mod-alert-dialog-title-font-weight", + "--mod-alert-dialog-title-line-height", + "--mod-alert-dialog-title-to-divider", + "--mod-alert-dialog-title-to-icon", + "--mod-alert-dialog-warning-icon-color" + ], + "spectrum": [ + "--spectrum-alert-dialog-body-color", + "--spectrum-alert-dialog-body-font-family", + "--spectrum-alert-dialog-body-font-size", + "--spectrum-alert-dialog-body-font-style", + "--spectrum-alert-dialog-body-font-weight", + "--spectrum-alert-dialog-body-line-height", + "--spectrum-alert-dialog-description-size", + "--spectrum-alert-dialog-description-to-buttons", + "--spectrum-alert-dialog-divider-to-description", + "--spectrum-alert-dialog-error-icon-color", + "--spectrum-alert-dialog-icon-size", + "--spectrum-alert-dialog-max-width", + "--spectrum-alert-dialog-maximum-width", + "--spectrum-alert-dialog-min-width", + "--spectrum-alert-dialog-minimum-width", + "--spectrum-alert-dialog-padding", + "--spectrum-alert-dialog-title-color", + "--spectrum-alert-dialog-title-font-family", + "--spectrum-alert-dialog-title-font-size", + "--spectrum-alert-dialog-title-font-style", + "--spectrum-alert-dialog-title-font-weight", + "--spectrum-alert-dialog-title-line-height", + "--spectrum-alert-dialog-title-size", + "--spectrum-alert-dialog-title-to-divider", + "--spectrum-alert-dialog-title-to-icon", + "--spectrum-alert-dialog-warning-icon-color", + "--spectrum-body-color", + "--spectrum-body-sans-serif-font-style", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-heading-color", + "--spectrum-heading-line-height", + "--spectrum-heading-sans-serif-font-style", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-line-height-100", + "--spectrum-negative-visual-color", + "--spectrum-notice-visual-color", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-200", + "--spectrum-spacing-300", + "--spectrum-workflow-icon-size-100" + ], + "system": [], + "a11y": [] +} diff --git a/components/alertdialog/package.json b/components/alertdialog/package.json new file mode 100644 index 0000000000..f0bf68b91b --- /dev/null +++ b/components/alertdialog/package.json @@ -0,0 +1,57 @@ +{ + "name": "@spectrum-css/alertdialog", + "version": "2.1.1", + "description": "The Spectrum CSS alertdialog component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/alertdialog" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/buttongroup": ">=7", + "@spectrum-css/divider": ">=3", + "@spectrum-css/icon": ">=7", + "@spectrum-css/modal": ">=5", + "@spectrum-css/tokens": ">=14", + "@spectrum-css/underlay": ">=4" + }, + "peerDependenciesMeta": { + "@spectrum-css/buttongroup": { + "optional": true + }, + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/buttongroup": "workspace:^", + "@spectrum-css/divider": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/modal": "workspace:^", + "@spectrum-css/tokens": "workspace:^", + "@spectrum-css/underlay": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/alertdialog/template.js b/components/alertdialog/template.js new file mode 100644 index 0000000000..3a5fdff12b --- /dev/null +++ b/components/alertdialog/template.js @@ -0,0 +1,142 @@ +import { Template as ButtonGroup } from "@spectrum-css/buttongroup/stories/template.js"; +import { Template as Divider } from "@spectrum-css/divider/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as Modal } from "@spectrum-css/modal/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +const Dialog = ({ + rootClass = "spectrum-AlertDialog", + heading, + content, + customClasses = [], + buttons, + variant, + icon = false, + id, + customStyles = {}, +} = {}, context = {}) => { + return html` +
({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + role="dialog" + tabindex="-1" + aria-modal="true" + aria-labelledby="dialog_label" + style=${styleMap(customStyles)} + > +
+
+

${heading}

+ ${when(icon, () => Icon({ + size: "m", + iconName: "Alert", + customClasses: [`${rootClass}-icon`], + }, context))} +
+ ${Divider({ + horizontal: true, + customClasses: [`${rootClass}-divider`], + }, context)} +
${content}
+ ${ButtonGroup({ items: buttons }, context)} +
+
+ `; +}; + +export const Template = ({ + isOpen = true, + customModalStyles = {}, + skipWrapper = false, + ...args +} = {}, context = {}) => { + return Modal({ + isOpen, + content: [ + Dialog(args, context) + ], + customStyles: customModalStyles, + skipWrapper, + }, context); +}; + +export const AlertDialogGroup = Variants({ + Template, + testData: [{ + skipWrapper: true, + }, { + skipWrapper: true, + variant: "warning", + heading: "Unverified format", + icon: true, + buttons: [{ + variant: "secondary", + treatment: "outline", + label: "Cancel" + }, { + treatment: "outline", + label: "Continue", + variant: "primary" + }], + content: "This format has not been verified and may not be viewable for some users. Do you want to continue publishing?", + }, { + skipWrapper: true, + variant: "error", + heading: "Unable to share", + icon: true, + buttons: [{ + variant: "secondary", + treatment: "outline", + label: "Cancel" + }, { + treatment: "outline", + label: "Continue", + variant: "primary" + }], + content: "An error occured while sharing your project. Please verify the email address and try again.", + }, { + skipWrapper: true, + variant: "destructive", + heading: "Delete 3 documents?", + buttons: [{ + variant: "secondary", + treatment: "outline", + label: "Cancel" + }, { + treatment: "fill", + label: "Delete", + variant: "negative" + }], + content: "Are you sure you want to delete the 3 selected documents?", + }, { + skipWrapper: true, + variant: "information", + heading: "Informative Dialog with a wrapping title text because the text is longer than the width of the alert dialog", + buttons: [{ + variant: "secondary", + treatment: "outline", + label: "No, thanks" + },{ + variant: "secondary", + treatment: "outline", + label: "Remind me later" + }, { + variant: "primary", + treatment: "outline", + label: "Rate now", + }], + content: "If you enjoy our app, would you mind taking a moment to rate it?", + }], +}); diff --git a/components/asset/index-base.css b/components/asset/index-base.css new file mode 100644 index 0000000000..e28adac379 --- /dev/null +++ b/components/asset/index-base.css @@ -0,0 +1,49 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Asset { + display: flex; + align-items: center; + justify-content: center; + inline-size: 100%; + block-size: 100%; +} +.spectrum-Asset-image { + max-inline-size: 100%; + max-block-size: 100%; + object-fit: contain; + transition: opacity var(--spectrum-animation-duration-100); +} +.spectrum-Asset-file, +.spectrum-Asset-folder { + inline-size: max(var(--mod-asset-icon-min-width, 48px), min(100%, var(--mod-asset-icon-max-width, 80px))); + block-size: 100%; + margin: var(--mod-asset-icon-margin, 20px); +} +.spectrum-Asset-folderBackground { + fill: var(--highcontrast-asset-folder-background-color, var(--mod-asset-folder-background-color, var(--spectrum-gray-300))); +} +.spectrum-Asset-fileBackground { + fill: var(--highcontrast-asset-file-background-color, var(--mod-asset-file-background-color, var(--spectrum-gray-50))); +} +.spectrum-Asset-fileOutline, +.spectrum-Asset-folderOutline { + fill: var(--mod-asset-icon-outline-color, var(--spectrum-gray-500)); +} +@media (forced-colors: active) { + .spectrum-Asset { + --highcontrast-asset-folder-background-color: currentColor; + --highcontrast-asset-file-background-color: currentColor; + } +} +/*# sourceMappingURL=components/asset/index.css.map */ diff --git a/components/asset/index-vars.css b/components/asset/index-vars.css new file mode 100644 index 0000000000..e28adac379 --- /dev/null +++ b/components/asset/index-vars.css @@ -0,0 +1,49 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Asset { + display: flex; + align-items: center; + justify-content: center; + inline-size: 100%; + block-size: 100%; +} +.spectrum-Asset-image { + max-inline-size: 100%; + max-block-size: 100%; + object-fit: contain; + transition: opacity var(--spectrum-animation-duration-100); +} +.spectrum-Asset-file, +.spectrum-Asset-folder { + inline-size: max(var(--mod-asset-icon-min-width, 48px), min(100%, var(--mod-asset-icon-max-width, 80px))); + block-size: 100%; + margin: var(--mod-asset-icon-margin, 20px); +} +.spectrum-Asset-folderBackground { + fill: var(--highcontrast-asset-folder-background-color, var(--mod-asset-folder-background-color, var(--spectrum-gray-300))); +} +.spectrum-Asset-fileBackground { + fill: var(--highcontrast-asset-file-background-color, var(--mod-asset-file-background-color, var(--spectrum-gray-50))); +} +.spectrum-Asset-fileOutline, +.spectrum-Asset-folderOutline { + fill: var(--mod-asset-icon-outline-color, var(--spectrum-gray-500)); +} +@media (forced-colors: active) { + .spectrum-Asset { + --highcontrast-asset-folder-background-color: currentColor; + --highcontrast-asset-file-background-color: currentColor; + } +} +/*# sourceMappingURL=components/asset/index.css.map */ diff --git a/components/asset/index.css b/components/asset/index.css new file mode 100644 index 0000000000..e28adac379 --- /dev/null +++ b/components/asset/index.css @@ -0,0 +1,49 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Asset { + display: flex; + align-items: center; + justify-content: center; + inline-size: 100%; + block-size: 100%; +} +.spectrum-Asset-image { + max-inline-size: 100%; + max-block-size: 100%; + object-fit: contain; + transition: opacity var(--spectrum-animation-duration-100); +} +.spectrum-Asset-file, +.spectrum-Asset-folder { + inline-size: max(var(--mod-asset-icon-min-width, 48px), min(100%, var(--mod-asset-icon-max-width, 80px))); + block-size: 100%; + margin: var(--mod-asset-icon-margin, 20px); +} +.spectrum-Asset-folderBackground { + fill: var(--highcontrast-asset-folder-background-color, var(--mod-asset-folder-background-color, var(--spectrum-gray-300))); +} +.spectrum-Asset-fileBackground { + fill: var(--highcontrast-asset-file-background-color, var(--mod-asset-file-background-color, var(--spectrum-gray-50))); +} +.spectrum-Asset-fileOutline, +.spectrum-Asset-folderOutline { + fill: var(--mod-asset-icon-outline-color, var(--spectrum-gray-500)); +} +@media (forced-colors: active) { + .spectrum-Asset { + --highcontrast-asset-folder-background-color: currentColor; + --highcontrast-asset-file-background-color: currentColor; + } +} +/*# sourceMappingURL=components/asset/index.css.map */ diff --git a/components/asset/metadata.json b/components/asset/metadata.json new file mode 100644 index 0000000000..0abdb053fd --- /dev/null +++ b/components/asset/metadata.json @@ -0,0 +1,29 @@ +{ + "selectors": [ + ".spectrum-Asset", + ".spectrum-Asset-file,\n.spectrum-Asset-folder", + ".spectrum-Asset-fileBackground", + ".spectrum-Asset-fileOutline,\n.spectrum-Asset-folderOutline", + ".spectrum-Asset-folderBackground", + ".spectrum-Asset-image" + ], + "mods": [ + "--mod-asset-file-background-color", + "--mod-asset-folder-background-color", + "--mod-asset-icon-margin", + "--mod-asset-icon-max-width", + "--mod-asset-icon-min-width", + "--mod-asset-icon-outline-color" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-gray-300", + "--spectrum-gray-50", + "--spectrum-gray-500" + ], + "system": [], + "a11y": [ + "--highcontrast-asset-file-background-color", + "--highcontrast-asset-folder-background-color" + ] +} diff --git a/components/asset/package.json b/components/asset/package.json new file mode 100644 index 0000000000..391eda36f2 --- /dev/null +++ b/components/asset/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/asset", + "version": "5.1.1", + "description": "The Spectrum CSS asset component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/asset", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/asset" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/asset/template.js b/components/asset/template.js new file mode 100644 index 0000000000..86d3e25658 --- /dev/null +++ b/components/asset/template.js @@ -0,0 +1,80 @@ +import { Variants } from "@spectrum-css/preview/decorators"; +import { html, svg } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Asset", + image, + preset, + id, + customClasses = [], + customStyles = {}, + isCardAssetOverride = false, +}) => { + let visual; + if (preset === "file") { + visual = svg` + + + + `; + } + else if (preset === "folder") { + visual = svg` + + + + `; + } + else if (image) { + visual = html``; + } + + return html`
({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + > + ${visual} +
`; +}; + +export const AssetGroup = Variants({ + Template, + testData: [ + { + testHeading: "Image preset", + }, + { + testHeading: "File preset", + image: undefined, + preset: "file", + customStyles: { + "min-inline-size": "150px", + }, + }, + { + testHeading: "Folder preset", + image: undefined, + preset: "folder", + customStyles: { + "min-inline-size": "150px", + } + }, + ], +}); diff --git a/components/assetcard/index-base.css b/components/assetcard/index-base.css new file mode 100644 index 0000000000..648d5985e2 --- /dev/null +++ b/components/assetcard/index-base.css @@ -0,0 +1,268 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AssetCard { + --spectrum-assetcard-asset-size: 224px; + --spectrum-assetcard-background-color: var(--spectrum-gray-200); + --spectrum-assetcard-asset-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-assetcard-asset-container-border-size: 1px; + --spectrum-assetcard-header-margin-block-start: var(--spectrum-spacing-300); + --spectrum-assetcard-border-radius: var(--spectrum-corner-radius-100); + --spectrum-assetcard-border-color: transparent; + --spectrum-assetcard-border-color-hover: var(--spectrum-gray-500); + --spectrum-assetcard-border-color-down: var(--spectrum-gray-600); + --spectrum-assetcard-focus-ring-gap: 5px; + --spectrum-assetcard-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-assetcard-selectionindicator-background-color-default: rgba(var(--spectrum-gray-100-rgb), 0.9); + --spectrum-assetcard-selectionindicator-size: var(--spectrum-card-selection-background-size); + --spectrum-assetcard-selectionindicator-border-radius: var(--spectrum-corner-radius-100); + --spectrum-assetcard-selectionindicator-offset-y: 4px; + --spectrum-assetcard-selectionindicator-blur: 6px; + --spectrum-assetcard-selectionindicator-color: var(--spectrum-white); + --spectrum-assetcard-selectionindicator-font-weight: var(--spectrum-bold-font-weight); + --spectrum-assetcard-selectionindicator-font-size: var(--spectrum-font-size-400); + --spectrum-assetcard-title-text-color: var(--spectrum-gray-900); + --spectrum-assetcard-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-assetcard-title-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-title-line-height: var(--spectrum-line-height-100); + --spectrum-assetcard-title-letter-spacing: 0; + --spectrum-assetcard-header-content-text-color: var(--spectrum-gray-900); + --spectrum-assetcard-header-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-header-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-assetcard-header-content-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-header-content-line-height: var(--spectrum-line-height-200); + --spectrum-assetcard-header-content-letter-spacing: 0; + --spectrum-assetcard-content-text-color: var(--spectrum-gray-700); + --spectrum-assetcard-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-assetcard-content-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-content-line-height: var(--spectrum-line-height-200); + --spectrum-assetcard-content-letter-spacing: 0; + --spectrum-assetcard-content-margin-block-start: var(--spectrum-spacing-75); +} +.spectrum-AssetCard:lang(ja), +.spectrum-AssetCard:lang(ko), +.spectrum-AssetCard:lang(zh) { + --spectrum-assetcard-title-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-title-font-style: var(--spectrum-heading-cjk-font-style); + --spectrum-assetcard-title-font-weight: var(--spectrum-heading-cjk-font-weight); + --spectrum-assetcard-title-font-size: var(--spectrum-heading-cjk-size-xs); + --spectrum-assetcard-title-line-height: var(--spectrum-heading-cjk-line-height); + --spectrum-assetcard-title-letter-spacing: var(--spectrum-cjk-letter-spacing); + --spectrum-assetcard-header-content-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-header-content-font-weight: var(--spectrum-body-cjk-font-weight); + --spectrum-assetcard-header-content-line-height: var(--spectrum-body-cjk-line-height); + --spectrum-assetcard-header-content-font-style: var(--spectrum-body-cjk-font-style); + --spectrum-assetcard-header-content-letter-spacing: var(--spectrum-cjk-letter-spacing); + --spectrum-assetcard-content-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-content-font-weight: var(--spectrum-body-cjk-font-weight); + --spectrum-assetcard-content-line-height: var(--spectrum-body-cjk-line-height); + --spectrum-assetcard-content-font-style: var(--spectrum-body-cjk-font-style); + --spectrum-assetcard-content-letter-spacing: var(--spectrum-cjk-letter-spacing); +} +.spectrum-AssetCard { + position: relative; + display: flex; + flex-direction: column; + inline-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + cursor: pointer; + outline: none; +} +.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected .spectrum-Checkbox-box:before, +.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard:focus-visible .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-assetcard-border-color-hover, var(--mod-assetcard-border-color-hover, var(--spectrum-assetcard-border-color-hover))); +} +.spectrum-AssetCard:active .spectrum-AssetCard-assetContainer:after { + border-color: var(--mod-assetcard-border-color-down, var(--spectrum-assetcard-border-color-down)); +} +.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:before { + opacity: 1; +} +.spectrum-AssetCard-assetContainer { + position: relative; + display: flex; + align-items: center; + justify-content: center; + inline-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + block-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + border-radius: var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)); + background-color: var(--mod-assetcard-background-color, var(--spectrum-assetcard-background-color)); + transition: border var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-assetContainer:before { + content: ""; + position: absolute; + inset: calc(var(--mod-assetcard-focus-ring-gap, var(--spectrum-assetcard-focus-ring-gap)) * -1); + border: var(--mod-assetcard-focus-indicator-thickness, var(--spectrum-assetcard-focus-indicator-thickness)) solid var(--mod-assectcard-focus-indicator-color, var(--spectrum-assestcard-focus-indicator-color)); + border-radius: var(--mod-assetcard-focus-ring-border-radius, var(--spectrum-assetcard-focus-ring-border-radius)); + opacity: 0; + pointer-events: none; + transition: opacity var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-assetContainer:after { + content: ""; + position: absolute; + inset: 0; + z-index: 3; + border: var(--mod-assetcard-asset-container-border-size, var(--spectrum-assetcard-asset-container-border-size)) solid var(--mod-assetcard-border-color, var(--spectrum-assetcard-border-color)); +} +.spectrum-AssetCard-asset, +.spectrum-AssetCard-assetContainer:after { + border-radius: calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px); +} +.spectrum-AssetCard-asset { + object-fit: contain; + inline-size: 100%; + block-size: 100%; + transition: + inline-size var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out, + block-size var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-header { + display: flex; + flex-direction: row; + align-items: center; + margin-block-start: var(--mod-assetcard-header-margin-block-start, var(--spectrum-assetcard-header-margin-block-start)); +} +.spectrum-AssetCard-title { + flex-grow: 1; + color: var(--mod-assetcard-title-text-color, var(--spectrum-assetcard-title-text-color)); + font-family: var(--mod-assetcard-title-font-family, var(--spectrum-assetcard-title-font-family)); + font-weight: var(--mod-assetcard-title-font-weight, var(--spectrum-assetcard-title-font-weight)); + font-size: var(--mod-assetcard-title-font-size, var(--spectrum-assetcard-title-font-size)); + line-height: var(--mod-assetcard-title-line-height, var(--spectrum-assetcard-title-line-height)); + font-style: var(--mod-assetcard-title-font-style, var(--spectrum-assetcard-title-font-style)); + letter-spacing: var(--mod-assetcard-title-letter-spacing, var(--spectrum-assetcard-title-letter-spacing)); +} +.spectrum-AssetCard-headerContent { + color: var(--mod-assetcard-header-content-text-color, var(--spectrum-assetcard-header-content-text-color)); + font-family: var(--mod-assetcard-header-content-font-family, var(--spectrum-assetcard-header-content-font-family)); + font-size: var(--mod-assetcard-header-content-font-size, var(--spectrum-assetcard-header-content-font-size)); + font-weight: var(--mod-assetcard-header-content-font-weight, var(--spectrum-assetcard-header-content-font-weight)); + line-height: var(--mod-assetcard-header-content-line-height, var(--spectrum-assetcard-header-content-line-height)); + font-style: var(--mod-assetcard-header-content-font-stlye, var(--spectrum-assetcard-header-content-font-style)); + letter-spacing: var(--mod-assetcard-header-content-letter-spacing, var(--spectrum-assetcard-header-content-letter-spacing)); +} +.spectrum-AssetCard-content { + flex-grow: 1; + margin-block-start: var(--mod-assetcard-content-margin-block-start, var(--spectrum-assetcard-content-margin-block-start)); + color: var(--mod-assetcard-content-text-color, var(--spectrum-assetcard-content-text-color)); + font-family: var(--mod-assetcard-content-font-family, var(--spectrum-assetcard-content-font-family)); + font-size: var(--mod-assetcard-content-font-size, var(--spectrum-assetcard-content-font-size)); + font-weight: var(--mod-assetcard-content-font-weight, var(--spectrum-assetcard-content-font-weight)); + line-height: var(--mod-assetcard-content-line-height, var(--spectrum-assetcard-content-line-height)); + font-style: var(--mod-assetcard-content-font-style, var(--spectrum-assetcard-content-font-style)); + letter-spacing: var(--mod-assetcard-content-letter-spacing, var(--spectrum-assetcard-content-letter-spacing)); +} +.spectrum-AssetCard-selectionOverlay { + position: absolute; + z-index: 1; + inset: 0; + background-color: initial; + pointer-events: none; + transition: background-color var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; + border-radius: calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px); +} +.spectrum-AssetCard-selectionIndicator { + position: absolute; + z-index: 2; + inset-inline-start: var(--mod-assetcard-selectionindicator-margin, var(--spectrum-assetcard-selectionindicator-margin)); + inset-block-start: var(--mod-assetcard-selectionindicator-margin, var(--spectrum-assetcard-selectionindicator-margin)); + display: none; + align-items: center; + justify-content: center; + inline-size: var(--mod-assetcard-selectionindicator-size, var(--spectrum-assetcard-selectionindicator-size)); + block-size: var(--mod-assetcard-selectionindicator-size, var(--spectrum-assetcard-selectionindicator-size)); + border-radius: var(--mod-assetcard-selectionindicator-border-radius, var(--spectrum-assetcard-selectionindicator-border-radius)); + box-shadow: 0 var(--spectrum-assetcard-selectionindicator-offset-y) var(--spectrum-assetcard-selectionindicator-blur) rgba(0, 0, 0, 0.15); + color: var(--highcontrast-assetcard-selectionindicator-color, var(--mod-assetcard-selectionindicator-color, var(--spectrum-assetcard-selectionindicator-color))); + font-weight: var(--mod-assetcard-selectionindicator-font-weight, var(--spectrum-assetcard-selectionindicator-font-weight)); + font-size: var(--mod-assetcard-selectionindicator-font-size, var(--spectrum-assetcard-selectionindicator-font-size)); + transition: opacity var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; + background-color: initial; +} +.spectrum-AssetCard-selectionOrder { + line-height: 0; +} +.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assetcard-border-color-selected, var(--mod-assetcard-border-color-selected, var(--spectrum-assetcard-border-color-selected))); +} +.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-selectionOverlay, +.spectrum-AssetCard.is-selected .spectrum-AssetCard-selectionOverlay { + background-color: var(--mod-assetcard-overlay-background-color, var(--spectrum-assetcard-overlay-background-color)); +} +.spectrum-AssetCard.is-drop-target:active .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected:active .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assectcard-border-color-selected-down, var(--mod-assectcard-border-color-selected-down, var(--spectrum-assetcard-border-color-selected-down))); +} +.spectrum-AssetCard--highlightSelection.is-selected .spectrum-AssetCard-asset { + inline-size: 90%; + block-size: 90%; + border-radius: 0; +} +.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator { + background-color: var(--mod-assetcard-selectionindicator-background-color-default, var(--spectrum-assetcard-selectionindicator-background-color-default)); +} +.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-selectionOrder { + display: none; +} +.spectrum-AssetCard--checkboxSelection.is-selected .spectrum-AssetCard-selectionIndicator, +.spectrum-AssetCard--checkboxSelection:focus-visible .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; +} +@media (hover: hover) { + .spectrum-AssetCard:hover .spectrum-AssetCard-assetContainer:after, + .spectrum-AssetCard:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-assetcard-border-color-hover, var(--mod-assetcard-border-color-hover, var(--spectrum-assetcard-border-color-hover))); + } + .spectrum-AssetCard.is-drop-target:hover .spectrum-AssetCard-assetContainer:after, + .spectrum-AssetCard.is-selected:hover .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assetcard-border-color-selected-hover, var(--mod-assetcard-border-color-selected-hover, var(--spectrum-assetcard-border-color-selected-hover))); + } + .spectrum-AssetCard--checkboxSelection:hover .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; + } +} +.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator { + background-color: var(--highcontrast-assetcard-selectionindicator-background-color-ordered, var(--mod-assetcard-selectionindicator-background-color-ordered, var(--spectrum-assetcard-selectionindicator-background-color-ordered))); +} +.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-checkbox { + display: none; +} +.spectrum-AssetCard--orderedSelection.is-selected .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; +} +@media (forced-colors: active) { + .spectrum-AssetCard { + --highcontrast-assetcard-border-color-hover: Highlight; + --highcontrast-assetcard-border-color-selected: Highlight; + --highcontrast-assetcard-border-color-selected-hover: Highlight; + --highcontrast-assectcard-border-color-selected-down: Highlight; + --highcontrast-assetcard-selectionindicator-background-color-ordered: Highlight; + --highcontrast-assetcard-selectionindicator-color: SelectedItemText; + } + .spectrum-AssetCard .spectrum-AssetCard-selectionOrder { + forced-color-adjust: none; + } +} +.spectrum-AssetCard { + --spectrum-assetcard-overlay-background-color: var(--system-spectrum-assetcard-overlay-background-color); +} +/*# sourceMappingURL=components/assetcard/index.css.map */ diff --git a/components/assetcard/index-theme.css b/components/assetcard/index-theme.css new file mode 100644 index 0000000000..476a0f29fa --- /dev/null +++ b/components/assetcard/index-theme.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-assetcard-overlay-background-color: rgba(27, 127, 245, 0.1); +} +.spectrum--express { + --system-spectrum-assetcard-overlay-background-color: rgba(109, 115, 246, 0.2); +} +/*# sourceMappingURL=components/assetcard/themes/express.css.map */ diff --git a/components/assetcard/index-vars.css b/components/assetcard/index-vars.css new file mode 100644 index 0000000000..70703eb0cc --- /dev/null +++ b/components/assetcard/index-vars.css @@ -0,0 +1,274 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-assetcard-overlay-background-color: rgba(27, 127, 245, 0.1); +} +.spectrum--express { + --system-spectrum-assetcard-overlay-background-color: rgba(109, 115, 246, 0.2); +} +.spectrum-AssetCard { + --spectrum-assetcard-asset-size: 224px; + --spectrum-assetcard-background-color: var(--spectrum-gray-200); + --spectrum-assetcard-asset-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-assetcard-asset-container-border-size: 1px; + --spectrum-assetcard-header-margin-block-start: var(--spectrum-spacing-300); + --spectrum-assetcard-border-radius: var(--spectrum-corner-radius-100); + --spectrum-assetcard-border-color: transparent; + --spectrum-assetcard-border-color-hover: var(--spectrum-gray-500); + --spectrum-assetcard-border-color-down: var(--spectrum-gray-600); + --spectrum-assetcard-focus-ring-gap: 5px; + --spectrum-assetcard-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-assetcard-selectionindicator-background-color-default: rgba(var(--spectrum-gray-100-rgb), 0.9); + --spectrum-assetcard-selectionindicator-size: var(--spectrum-card-selection-background-size); + --spectrum-assetcard-selectionindicator-border-radius: var(--spectrum-corner-radius-100); + --spectrum-assetcard-selectionindicator-offset-y: 4px; + --spectrum-assetcard-selectionindicator-blur: 6px; + --spectrum-assetcard-selectionindicator-color: var(--spectrum-white); + --spectrum-assetcard-selectionindicator-font-weight: var(--spectrum-bold-font-weight); + --spectrum-assetcard-selectionindicator-font-size: var(--spectrum-font-size-400); + --spectrum-assetcard-title-text-color: var(--spectrum-gray-900); + --spectrum-assetcard-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-assetcard-title-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-title-line-height: var(--spectrum-line-height-100); + --spectrum-assetcard-title-letter-spacing: 0; + --spectrum-assetcard-header-content-text-color: var(--spectrum-gray-900); + --spectrum-assetcard-header-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-header-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-assetcard-header-content-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-header-content-line-height: var(--spectrum-line-height-200); + --spectrum-assetcard-header-content-letter-spacing: 0; + --spectrum-assetcard-content-text-color: var(--spectrum-gray-700); + --spectrum-assetcard-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-assetcard-content-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-content-line-height: var(--spectrum-line-height-200); + --spectrum-assetcard-content-letter-spacing: 0; + --spectrum-assetcard-content-margin-block-start: var(--spectrum-spacing-75); +} +.spectrum-AssetCard:lang(ja), +.spectrum-AssetCard:lang(ko), +.spectrum-AssetCard:lang(zh) { + --spectrum-assetcard-title-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-title-font-style: var(--spectrum-heading-cjk-font-style); + --spectrum-assetcard-title-font-weight: var(--spectrum-heading-cjk-font-weight); + --spectrum-assetcard-title-font-size: var(--spectrum-heading-cjk-size-xs); + --spectrum-assetcard-title-line-height: var(--spectrum-heading-cjk-line-height); + --spectrum-assetcard-title-letter-spacing: var(--spectrum-cjk-letter-spacing); + --spectrum-assetcard-header-content-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-header-content-font-weight: var(--spectrum-body-cjk-font-weight); + --spectrum-assetcard-header-content-line-height: var(--spectrum-body-cjk-line-height); + --spectrum-assetcard-header-content-font-style: var(--spectrum-body-cjk-font-style); + --spectrum-assetcard-header-content-letter-spacing: var(--spectrum-cjk-letter-spacing); + --spectrum-assetcard-content-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-content-font-weight: var(--spectrum-body-cjk-font-weight); + --spectrum-assetcard-content-line-height: var(--spectrum-body-cjk-line-height); + --spectrum-assetcard-content-font-style: var(--spectrum-body-cjk-font-style); + --spectrum-assetcard-content-letter-spacing: var(--spectrum-cjk-letter-spacing); +} +.spectrum-AssetCard { + position: relative; + display: flex; + flex-direction: column; + inline-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + cursor: pointer; + outline: none; +} +.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected .spectrum-Checkbox-box:before, +.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard:focus-visible .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-assetcard-border-color-hover, var(--mod-assetcard-border-color-hover, var(--spectrum-assetcard-border-color-hover))); +} +.spectrum-AssetCard:active .spectrum-AssetCard-assetContainer:after { + border-color: var(--mod-assetcard-border-color-down, var(--spectrum-assetcard-border-color-down)); +} +.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:before { + opacity: 1; +} +.spectrum-AssetCard-assetContainer { + position: relative; + display: flex; + align-items: center; + justify-content: center; + inline-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + block-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + border-radius: var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)); + background-color: var(--mod-assetcard-background-color, var(--spectrum-assetcard-background-color)); + transition: border var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-assetContainer:before { + content: ""; + position: absolute; + inset: calc(var(--mod-assetcard-focus-ring-gap, var(--spectrum-assetcard-focus-ring-gap)) * -1); + border: var(--mod-assetcard-focus-indicator-thickness, var(--spectrum-assetcard-focus-indicator-thickness)) solid var(--mod-assectcard-focus-indicator-color, var(--spectrum-assestcard-focus-indicator-color)); + border-radius: var(--mod-assetcard-focus-ring-border-radius, var(--spectrum-assetcard-focus-ring-border-radius)); + opacity: 0; + pointer-events: none; + transition: opacity var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-assetContainer:after { + content: ""; + position: absolute; + inset: 0; + z-index: 3; + border: var(--mod-assetcard-asset-container-border-size, var(--spectrum-assetcard-asset-container-border-size)) solid var(--mod-assetcard-border-color, var(--spectrum-assetcard-border-color)); +} +.spectrum-AssetCard-asset, +.spectrum-AssetCard-assetContainer:after { + border-radius: calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px); +} +.spectrum-AssetCard-asset { + object-fit: contain; + inline-size: 100%; + block-size: 100%; + transition: + inline-size var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out, + block-size var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-header { + display: flex; + flex-direction: row; + align-items: center; + margin-block-start: var(--mod-assetcard-header-margin-block-start, var(--spectrum-assetcard-header-margin-block-start)); +} +.spectrum-AssetCard-title { + flex-grow: 1; + color: var(--mod-assetcard-title-text-color, var(--spectrum-assetcard-title-text-color)); + font-family: var(--mod-assetcard-title-font-family, var(--spectrum-assetcard-title-font-family)); + font-weight: var(--mod-assetcard-title-font-weight, var(--spectrum-assetcard-title-font-weight)); + font-size: var(--mod-assetcard-title-font-size, var(--spectrum-assetcard-title-font-size)); + line-height: var(--mod-assetcard-title-line-height, var(--spectrum-assetcard-title-line-height)); + font-style: var(--mod-assetcard-title-font-style, var(--spectrum-assetcard-title-font-style)); + letter-spacing: var(--mod-assetcard-title-letter-spacing, var(--spectrum-assetcard-title-letter-spacing)); +} +.spectrum-AssetCard-headerContent { + color: var(--mod-assetcard-header-content-text-color, var(--spectrum-assetcard-header-content-text-color)); + font-family: var(--mod-assetcard-header-content-font-family, var(--spectrum-assetcard-header-content-font-family)); + font-size: var(--mod-assetcard-header-content-font-size, var(--spectrum-assetcard-header-content-font-size)); + font-weight: var(--mod-assetcard-header-content-font-weight, var(--spectrum-assetcard-header-content-font-weight)); + line-height: var(--mod-assetcard-header-content-line-height, var(--spectrum-assetcard-header-content-line-height)); + font-style: var(--mod-assetcard-header-content-font-stlye, var(--spectrum-assetcard-header-content-font-style)); + letter-spacing: var(--mod-assetcard-header-content-letter-spacing, var(--spectrum-assetcard-header-content-letter-spacing)); +} +.spectrum-AssetCard-content { + flex-grow: 1; + margin-block-start: var(--mod-assetcard-content-margin-block-start, var(--spectrum-assetcard-content-margin-block-start)); + color: var(--mod-assetcard-content-text-color, var(--spectrum-assetcard-content-text-color)); + font-family: var(--mod-assetcard-content-font-family, var(--spectrum-assetcard-content-font-family)); + font-size: var(--mod-assetcard-content-font-size, var(--spectrum-assetcard-content-font-size)); + font-weight: var(--mod-assetcard-content-font-weight, var(--spectrum-assetcard-content-font-weight)); + line-height: var(--mod-assetcard-content-line-height, var(--spectrum-assetcard-content-line-height)); + font-style: var(--mod-assetcard-content-font-style, var(--spectrum-assetcard-content-font-style)); + letter-spacing: var(--mod-assetcard-content-letter-spacing, var(--spectrum-assetcard-content-letter-spacing)); +} +.spectrum-AssetCard-selectionOverlay { + position: absolute; + z-index: 1; + inset: 0; + background-color: initial; + pointer-events: none; + transition: background-color var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; + border-radius: calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px); +} +.spectrum-AssetCard-selectionIndicator { + position: absolute; + z-index: 2; + inset-inline-start: var(--mod-assetcard-selectionindicator-margin, var(--spectrum-assetcard-selectionindicator-margin)); + inset-block-start: var(--mod-assetcard-selectionindicator-margin, var(--spectrum-assetcard-selectionindicator-margin)); + display: none; + align-items: center; + justify-content: center; + inline-size: var(--mod-assetcard-selectionindicator-size, var(--spectrum-assetcard-selectionindicator-size)); + block-size: var(--mod-assetcard-selectionindicator-size, var(--spectrum-assetcard-selectionindicator-size)); + border-radius: var(--mod-assetcard-selectionindicator-border-radius, var(--spectrum-assetcard-selectionindicator-border-radius)); + box-shadow: 0 var(--spectrum-assetcard-selectionindicator-offset-y) var(--spectrum-assetcard-selectionindicator-blur) rgba(0, 0, 0, 0.15); + color: var(--highcontrast-assetcard-selectionindicator-color, var(--mod-assetcard-selectionindicator-color, var(--spectrum-assetcard-selectionindicator-color))); + font-weight: var(--mod-assetcard-selectionindicator-font-weight, var(--spectrum-assetcard-selectionindicator-font-weight)); + font-size: var(--mod-assetcard-selectionindicator-font-size, var(--spectrum-assetcard-selectionindicator-font-size)); + transition: opacity var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; + background-color: initial; +} +.spectrum-AssetCard-selectionOrder { + line-height: 0; +} +.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assetcard-border-color-selected, var(--mod-assetcard-border-color-selected, var(--spectrum-assetcard-border-color-selected))); +} +.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-selectionOverlay, +.spectrum-AssetCard.is-selected .spectrum-AssetCard-selectionOverlay { + background-color: var(--mod-assetcard-overlay-background-color, var(--spectrum-assetcard-overlay-background-color)); +} +.spectrum-AssetCard.is-drop-target:active .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected:active .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assectcard-border-color-selected-down, var(--mod-assectcard-border-color-selected-down, var(--spectrum-assetcard-border-color-selected-down))); +} +.spectrum-AssetCard--highlightSelection.is-selected .spectrum-AssetCard-asset { + inline-size: 90%; + block-size: 90%; + border-radius: 0; +} +.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator { + background-color: var(--mod-assetcard-selectionindicator-background-color-default, var(--spectrum-assetcard-selectionindicator-background-color-default)); +} +.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-selectionOrder { + display: none; +} +.spectrum-AssetCard--checkboxSelection.is-selected .spectrum-AssetCard-selectionIndicator, +.spectrum-AssetCard--checkboxSelection:focus-visible .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; +} +@media (hover: hover) { + .spectrum-AssetCard:hover .spectrum-AssetCard-assetContainer:after, + .spectrum-AssetCard:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-assetcard-border-color-hover, var(--mod-assetcard-border-color-hover, var(--spectrum-assetcard-border-color-hover))); + } + .spectrum-AssetCard.is-drop-target:hover .spectrum-AssetCard-assetContainer:after, + .spectrum-AssetCard.is-selected:hover .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assetcard-border-color-selected-hover, var(--mod-assetcard-border-color-selected-hover, var(--spectrum-assetcard-border-color-selected-hover))); + } + .spectrum-AssetCard--checkboxSelection:hover .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; + } +} +.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator { + background-color: var(--highcontrast-assetcard-selectionindicator-background-color-ordered, var(--mod-assetcard-selectionindicator-background-color-ordered, var(--spectrum-assetcard-selectionindicator-background-color-ordered))); +} +.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-checkbox { + display: none; +} +.spectrum-AssetCard--orderedSelection.is-selected .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; +} +@media (forced-colors: active) { + .spectrum-AssetCard { + --highcontrast-assetcard-border-color-hover: Highlight; + --highcontrast-assetcard-border-color-selected: Highlight; + --highcontrast-assetcard-border-color-selected-hover: Highlight; + --highcontrast-assectcard-border-color-selected-down: Highlight; + --highcontrast-assetcard-selectionindicator-background-color-ordered: Highlight; + --highcontrast-assetcard-selectionindicator-color: SelectedItemText; + } + .spectrum-AssetCard .spectrum-AssetCard-selectionOrder { + forced-color-adjust: none; + } +} +.spectrum-AssetCard { + --spectrum-assetcard-overlay-background-color: var(--system-spectrum-assetcard-overlay-background-color); +} +/*# sourceMappingURL=components/assetcard/index.css.map */ diff --git a/components/assetcard/index.css b/components/assetcard/index.css new file mode 100644 index 0000000000..70703eb0cc --- /dev/null +++ b/components/assetcard/index.css @@ -0,0 +1,274 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-assetcard-overlay-background-color: rgba(27, 127, 245, 0.1); +} +.spectrum--express { + --system-spectrum-assetcard-overlay-background-color: rgba(109, 115, 246, 0.2); +} +.spectrum-AssetCard { + --spectrum-assetcard-asset-size: 224px; + --spectrum-assetcard-background-color: var(--spectrum-gray-200); + --spectrum-assetcard-asset-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-assetcard-asset-container-border-size: 1px; + --spectrum-assetcard-header-margin-block-start: var(--spectrum-spacing-300); + --spectrum-assetcard-border-radius: var(--spectrum-corner-radius-100); + --spectrum-assetcard-border-color: transparent; + --spectrum-assetcard-border-color-hover: var(--spectrum-gray-500); + --spectrum-assetcard-border-color-down: var(--spectrum-gray-600); + --spectrum-assetcard-focus-ring-gap: 5px; + --spectrum-assetcard-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-assetcard-selectionindicator-background-color-default: rgba(var(--spectrum-gray-100-rgb), 0.9); + --spectrum-assetcard-selectionindicator-size: var(--spectrum-card-selection-background-size); + --spectrum-assetcard-selectionindicator-border-radius: var(--spectrum-corner-radius-100); + --spectrum-assetcard-selectionindicator-offset-y: 4px; + --spectrum-assetcard-selectionindicator-blur: 6px; + --spectrum-assetcard-selectionindicator-color: var(--spectrum-white); + --spectrum-assetcard-selectionindicator-font-weight: var(--spectrum-bold-font-weight); + --spectrum-assetcard-selectionindicator-font-size: var(--spectrum-font-size-400); + --spectrum-assetcard-title-text-color: var(--spectrum-gray-900); + --spectrum-assetcard-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-assetcard-title-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-title-line-height: var(--spectrum-line-height-100); + --spectrum-assetcard-title-letter-spacing: 0; + --spectrum-assetcard-header-content-text-color: var(--spectrum-gray-900); + --spectrum-assetcard-header-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-header-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-assetcard-header-content-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-header-content-line-height: var(--spectrum-line-height-200); + --spectrum-assetcard-header-content-letter-spacing: 0; + --spectrum-assetcard-content-text-color: var(--spectrum-gray-700); + --spectrum-assetcard-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-assetcard-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-assetcard-content-font-style: var(--spectrum-default-font-style); + --spectrum-assetcard-content-line-height: var(--spectrum-line-height-200); + --spectrum-assetcard-content-letter-spacing: 0; + --spectrum-assetcard-content-margin-block-start: var(--spectrum-spacing-75); +} +.spectrum-AssetCard:lang(ja), +.spectrum-AssetCard:lang(ko), +.spectrum-AssetCard:lang(zh) { + --spectrum-assetcard-title-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-title-font-style: var(--spectrum-heading-cjk-font-style); + --spectrum-assetcard-title-font-weight: var(--spectrum-heading-cjk-font-weight); + --spectrum-assetcard-title-font-size: var(--spectrum-heading-cjk-size-xs); + --spectrum-assetcard-title-line-height: var(--spectrum-heading-cjk-line-height); + --spectrum-assetcard-title-letter-spacing: var(--spectrum-cjk-letter-spacing); + --spectrum-assetcard-header-content-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-header-content-font-weight: var(--spectrum-body-cjk-font-weight); + --spectrum-assetcard-header-content-line-height: var(--spectrum-body-cjk-line-height); + --spectrum-assetcard-header-content-font-style: var(--spectrum-body-cjk-font-style); + --spectrum-assetcard-header-content-letter-spacing: var(--spectrum-cjk-letter-spacing); + --spectrum-assetcard-content-font-family: var(--spectrum-cjk-font-family-stack); + --spectrum-assetcard-content-font-weight: var(--spectrum-body-cjk-font-weight); + --spectrum-assetcard-content-line-height: var(--spectrum-body-cjk-line-height); + --spectrum-assetcard-content-font-style: var(--spectrum-body-cjk-font-style); + --spectrum-assetcard-content-letter-spacing: var(--spectrum-cjk-letter-spacing); +} +.spectrum-AssetCard { + position: relative; + display: flex; + flex-direction: column; + inline-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + cursor: pointer; + outline: none; +} +.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected .spectrum-Checkbox-box:before, +.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard:focus-visible .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-assetcard-border-color-hover, var(--mod-assetcard-border-color-hover, var(--spectrum-assetcard-border-color-hover))); +} +.spectrum-AssetCard:active .spectrum-AssetCard-assetContainer:after { + border-color: var(--mod-assetcard-border-color-down, var(--spectrum-assetcard-border-color-down)); +} +.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:before { + opacity: 1; +} +.spectrum-AssetCard-assetContainer { + position: relative; + display: flex; + align-items: center; + justify-content: center; + inline-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + block-size: var(--mod-assetcard-asset-size, var(--spectrum-assetcard-asset-size)); + border-radius: var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)); + background-color: var(--mod-assetcard-background-color, var(--spectrum-assetcard-background-color)); + transition: border var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-assetContainer:before { + content: ""; + position: absolute; + inset: calc(var(--mod-assetcard-focus-ring-gap, var(--spectrum-assetcard-focus-ring-gap)) * -1); + border: var(--mod-assetcard-focus-indicator-thickness, var(--spectrum-assetcard-focus-indicator-thickness)) solid var(--mod-assectcard-focus-indicator-color, var(--spectrum-assestcard-focus-indicator-color)); + border-radius: var(--mod-assetcard-focus-ring-border-radius, var(--spectrum-assetcard-focus-ring-border-radius)); + opacity: 0; + pointer-events: none; + transition: opacity var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-assetContainer:after { + content: ""; + position: absolute; + inset: 0; + z-index: 3; + border: var(--mod-assetcard-asset-container-border-size, var(--spectrum-assetcard-asset-container-border-size)) solid var(--mod-assetcard-border-color, var(--spectrum-assetcard-border-color)); +} +.spectrum-AssetCard-asset, +.spectrum-AssetCard-assetContainer:after { + border-radius: calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px); +} +.spectrum-AssetCard-asset { + object-fit: contain; + inline-size: 100%; + block-size: 100%; + transition: + inline-size var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out, + block-size var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; +} +.spectrum-AssetCard-header { + display: flex; + flex-direction: row; + align-items: center; + margin-block-start: var(--mod-assetcard-header-margin-block-start, var(--spectrum-assetcard-header-margin-block-start)); +} +.spectrum-AssetCard-title { + flex-grow: 1; + color: var(--mod-assetcard-title-text-color, var(--spectrum-assetcard-title-text-color)); + font-family: var(--mod-assetcard-title-font-family, var(--spectrum-assetcard-title-font-family)); + font-weight: var(--mod-assetcard-title-font-weight, var(--spectrum-assetcard-title-font-weight)); + font-size: var(--mod-assetcard-title-font-size, var(--spectrum-assetcard-title-font-size)); + line-height: var(--mod-assetcard-title-line-height, var(--spectrum-assetcard-title-line-height)); + font-style: var(--mod-assetcard-title-font-style, var(--spectrum-assetcard-title-font-style)); + letter-spacing: var(--mod-assetcard-title-letter-spacing, var(--spectrum-assetcard-title-letter-spacing)); +} +.spectrum-AssetCard-headerContent { + color: var(--mod-assetcard-header-content-text-color, var(--spectrum-assetcard-header-content-text-color)); + font-family: var(--mod-assetcard-header-content-font-family, var(--spectrum-assetcard-header-content-font-family)); + font-size: var(--mod-assetcard-header-content-font-size, var(--spectrum-assetcard-header-content-font-size)); + font-weight: var(--mod-assetcard-header-content-font-weight, var(--spectrum-assetcard-header-content-font-weight)); + line-height: var(--mod-assetcard-header-content-line-height, var(--spectrum-assetcard-header-content-line-height)); + font-style: var(--mod-assetcard-header-content-font-stlye, var(--spectrum-assetcard-header-content-font-style)); + letter-spacing: var(--mod-assetcard-header-content-letter-spacing, var(--spectrum-assetcard-header-content-letter-spacing)); +} +.spectrum-AssetCard-content { + flex-grow: 1; + margin-block-start: var(--mod-assetcard-content-margin-block-start, var(--spectrum-assetcard-content-margin-block-start)); + color: var(--mod-assetcard-content-text-color, var(--spectrum-assetcard-content-text-color)); + font-family: var(--mod-assetcard-content-font-family, var(--spectrum-assetcard-content-font-family)); + font-size: var(--mod-assetcard-content-font-size, var(--spectrum-assetcard-content-font-size)); + font-weight: var(--mod-assetcard-content-font-weight, var(--spectrum-assetcard-content-font-weight)); + line-height: var(--mod-assetcard-content-line-height, var(--spectrum-assetcard-content-line-height)); + font-style: var(--mod-assetcard-content-font-style, var(--spectrum-assetcard-content-font-style)); + letter-spacing: var(--mod-assetcard-content-letter-spacing, var(--spectrum-assetcard-content-letter-spacing)); +} +.spectrum-AssetCard-selectionOverlay { + position: absolute; + z-index: 1; + inset: 0; + background-color: initial; + pointer-events: none; + transition: background-color var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; + border-radius: calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px); +} +.spectrum-AssetCard-selectionIndicator { + position: absolute; + z-index: 2; + inset-inline-start: var(--mod-assetcard-selectionindicator-margin, var(--spectrum-assetcard-selectionindicator-margin)); + inset-block-start: var(--mod-assetcard-selectionindicator-margin, var(--spectrum-assetcard-selectionindicator-margin)); + display: none; + align-items: center; + justify-content: center; + inline-size: var(--mod-assetcard-selectionindicator-size, var(--spectrum-assetcard-selectionindicator-size)); + block-size: var(--mod-assetcard-selectionindicator-size, var(--spectrum-assetcard-selectionindicator-size)); + border-radius: var(--mod-assetcard-selectionindicator-border-radius, var(--spectrum-assetcard-selectionindicator-border-radius)); + box-shadow: 0 var(--spectrum-assetcard-selectionindicator-offset-y) var(--spectrum-assetcard-selectionindicator-blur) rgba(0, 0, 0, 0.15); + color: var(--highcontrast-assetcard-selectionindicator-color, var(--mod-assetcard-selectionindicator-color, var(--spectrum-assetcard-selectionindicator-color))); + font-weight: var(--mod-assetcard-selectionindicator-font-weight, var(--spectrum-assetcard-selectionindicator-font-weight)); + font-size: var(--mod-assetcard-selectionindicator-font-size, var(--spectrum-assetcard-selectionindicator-font-size)); + transition: opacity var(--mod-assetcard-asset-animation-duration, var(--spectrum-assetcard-asset-animation-duration)) ease-in-out; + background-color: initial; +} +.spectrum-AssetCard-selectionOrder { + line-height: 0; +} +.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assetcard-border-color-selected, var(--mod-assetcard-border-color-selected, var(--spectrum-assetcard-border-color-selected))); +} +.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-selectionOverlay, +.spectrum-AssetCard.is-selected .spectrum-AssetCard-selectionOverlay { + background-color: var(--mod-assetcard-overlay-background-color, var(--spectrum-assetcard-overlay-background-color)); +} +.spectrum-AssetCard.is-drop-target:active .spectrum-AssetCard-assetContainer:after, +.spectrum-AssetCard.is-selected:active .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assectcard-border-color-selected-down, var(--mod-assectcard-border-color-selected-down, var(--spectrum-assetcard-border-color-selected-down))); +} +.spectrum-AssetCard--highlightSelection.is-selected .spectrum-AssetCard-asset { + inline-size: 90%; + block-size: 90%; + border-radius: 0; +} +.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator { + background-color: var(--mod-assetcard-selectionindicator-background-color-default, var(--spectrum-assetcard-selectionindicator-background-color-default)); +} +.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-selectionOrder { + display: none; +} +.spectrum-AssetCard--checkboxSelection.is-selected .spectrum-AssetCard-selectionIndicator, +.spectrum-AssetCard--checkboxSelection:focus-visible .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; +} +@media (hover: hover) { + .spectrum-AssetCard:hover .spectrum-AssetCard-assetContainer:after, + .spectrum-AssetCard:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-assetcard-border-color-hover, var(--mod-assetcard-border-color-hover, var(--spectrum-assetcard-border-color-hover))); + } + .spectrum-AssetCard.is-drop-target:hover .spectrum-AssetCard-assetContainer:after, + .spectrum-AssetCard.is-selected:hover .spectrum-AssetCard-assetContainer:after { + border-color: var(--highcontrast-assetcard-border-color-selected-hover, var(--mod-assetcard-border-color-selected-hover, var(--spectrum-assetcard-border-color-selected-hover))); + } + .spectrum-AssetCard--checkboxSelection:hover .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; + } +} +.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator { + background-color: var(--highcontrast-assetcard-selectionindicator-background-color-ordered, var(--mod-assetcard-selectionindicator-background-color-ordered, var(--spectrum-assetcard-selectionindicator-background-color-ordered))); +} +.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-checkbox { + display: none; +} +.spectrum-AssetCard--orderedSelection.is-selected .spectrum-AssetCard-selectionIndicator { + display: flex; + pointer-events: all; +} +@media (forced-colors: active) { + .spectrum-AssetCard { + --highcontrast-assetcard-border-color-hover: Highlight; + --highcontrast-assetcard-border-color-selected: Highlight; + --highcontrast-assetcard-border-color-selected-hover: Highlight; + --highcontrast-assectcard-border-color-selected-down: Highlight; + --highcontrast-assetcard-selectionindicator-background-color-ordered: Highlight; + --highcontrast-assetcard-selectionindicator-color: SelectedItemText; + } + .spectrum-AssetCard .spectrum-AssetCard-selectionOrder { + forced-color-adjust: none; + } +} +.spectrum-AssetCard { + --spectrum-assetcard-overlay-background-color: var(--system-spectrum-assetcard-overlay-background-color); +} +/*# sourceMappingURL=components/assetcard/index.css.map */ diff --git a/components/assetcard/metadata.json b/components/assetcard/metadata.json new file mode 100644 index 0000000000..866234716e --- /dev/null +++ b/components/assetcard/metadata.json @@ -0,0 +1,176 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-AssetCard", + ".spectrum-AssetCard .spectrum-AssetCard-selectionOrder", + ".spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator", + ".spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-selectionOrder", + ".spectrum-AssetCard--checkboxSelection.is-selected .spectrum-AssetCard-selectionIndicator,\n.spectrum-AssetCard--checkboxSelection:focus-visible .spectrum-AssetCard-selectionIndicator", + ".spectrum-AssetCard--checkboxSelection:hover .spectrum-AssetCard-selectionIndicator", + ".spectrum-AssetCard--highlightSelection.is-selected .spectrum-AssetCard-asset", + ".spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator", + ".spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-checkbox", + ".spectrum-AssetCard--orderedSelection.is-selected .spectrum-AssetCard-selectionIndicator", + ".spectrum-AssetCard-asset", + ".spectrum-AssetCard-asset,\n.spectrum-AssetCard-assetContainer:after", + ".spectrum-AssetCard-assetContainer", + ".spectrum-AssetCard-assetContainer:after", + ".spectrum-AssetCard-assetContainer:before", + ".spectrum-AssetCard-content", + ".spectrum-AssetCard-header", + ".spectrum-AssetCard-headerContent", + ".spectrum-AssetCard-selectionIndicator", + ".spectrum-AssetCard-selectionOrder", + ".spectrum-AssetCard-selectionOverlay", + ".spectrum-AssetCard-title", + ".spectrum-AssetCard.is-drop-target .spectrum-AssetCard-assetContainer:after,\n.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after", + ".spectrum-AssetCard.is-drop-target .spectrum-AssetCard-selectionOverlay,\n.spectrum-AssetCard.is-selected .spectrum-AssetCard-selectionOverlay", + ".spectrum-AssetCard.is-drop-target:active .spectrum-AssetCard-assetContainer:after,\n.spectrum-AssetCard.is-selected:active .spectrum-AssetCard-assetContainer:after", + ".spectrum-AssetCard.is-drop-target:hover .spectrum-AssetCard-assetContainer:after,\n\t.spectrum-AssetCard.is-selected:hover .spectrum-AssetCard-assetContainer:after", + ".spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after,\n.spectrum-AssetCard.is-selected .spectrum-Checkbox-box:before,\n.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:after,\n.spectrum-AssetCard:focus-visible .spectrum-Checkbox-box:before", + ".spectrum-AssetCard:active .spectrum-AssetCard-assetContainer:after", + ".spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:before", + ".spectrum-AssetCard:hover .spectrum-AssetCard-assetContainer:after,\n\t.spectrum-AssetCard:hover .spectrum-Checkbox-box:before", + ".spectrum-AssetCard:lang(ja),\n.spectrum-AssetCard:lang(ko),\n.spectrum-AssetCard:lang(zh)" + ], + "mods": [ + "--mod-assectcard-border-color-selected-down", + "--mod-assectcard-focus-indicator-color", + "--mod-assetcard-asset-animation-duration", + "--mod-assetcard-asset-container-border-size", + "--mod-assetcard-asset-size", + "--mod-assetcard-background-color", + "--mod-assetcard-border-color", + "--mod-assetcard-border-color-down", + "--mod-assetcard-border-color-hover", + "--mod-assetcard-border-color-selected", + "--mod-assetcard-border-color-selected-hover", + "--mod-assetcard-border-radius", + "--mod-assetcard-content-font-family", + "--mod-assetcard-content-font-size", + "--mod-assetcard-content-font-style", + "--mod-assetcard-content-font-weight", + "--mod-assetcard-content-letter-spacing", + "--mod-assetcard-content-line-height", + "--mod-assetcard-content-margin-block-start", + "--mod-assetcard-content-text-color", + "--mod-assetcard-focus-indicator-thickness", + "--mod-assetcard-focus-ring-border-radius", + "--mod-assetcard-focus-ring-gap", + "--mod-assetcard-header-content-font-family", + "--mod-assetcard-header-content-font-size", + "--mod-assetcard-header-content-font-stlye", + "--mod-assetcard-header-content-font-weight", + "--mod-assetcard-header-content-letter-spacing", + "--mod-assetcard-header-content-line-height", + "--mod-assetcard-header-content-text-color", + "--mod-assetcard-header-margin-block-start", + "--mod-assetcard-overlay-background-color", + "--mod-assetcard-selectionindicator-background-color-default", + "--mod-assetcard-selectionindicator-background-color-ordered", + "--mod-assetcard-selectionindicator-border-radius", + "--mod-assetcard-selectionindicator-color", + "--mod-assetcard-selectionindicator-font-size", + "--mod-assetcard-selectionindicator-font-weight", + "--mod-assetcard-selectionindicator-margin", + "--mod-assetcard-selectionindicator-size", + "--mod-assetcard-title-font-family", + "--mod-assetcard-title-font-size", + "--mod-assetcard-title-font-style", + "--mod-assetcard-title-font-weight", + "--mod-assetcard-title-letter-spacing", + "--mod-assetcard-title-line-height", + "--mod-assetcard-title-text-color" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-assestcard-focus-indicator-color", + "--spectrum-assetcard-asset-animation-duration", + "--spectrum-assetcard-asset-container-border-size", + "--spectrum-assetcard-asset-size", + "--spectrum-assetcard-background-color", + "--spectrum-assetcard-border-color", + "--spectrum-assetcard-border-color-down", + "--spectrum-assetcard-border-color-hover", + "--spectrum-assetcard-border-color-selected", + "--spectrum-assetcard-border-color-selected-down", + "--spectrum-assetcard-border-color-selected-hover", + "--spectrum-assetcard-border-radius", + "--spectrum-assetcard-content-font-family", + "--spectrum-assetcard-content-font-size", + "--spectrum-assetcard-content-font-style", + "--spectrum-assetcard-content-font-weight", + "--spectrum-assetcard-content-letter-spacing", + "--spectrum-assetcard-content-line-height", + "--spectrum-assetcard-content-margin-block-start", + "--spectrum-assetcard-content-text-color", + "--spectrum-assetcard-focus-indicator-thickness", + "--spectrum-assetcard-focus-ring-border-radius", + "--spectrum-assetcard-focus-ring-gap", + "--spectrum-assetcard-header-content-font-family", + "--spectrum-assetcard-header-content-font-size", + "--spectrum-assetcard-header-content-font-style", + "--spectrum-assetcard-header-content-font-weight", + "--spectrum-assetcard-header-content-letter-spacing", + "--spectrum-assetcard-header-content-line-height", + "--spectrum-assetcard-header-content-text-color", + "--spectrum-assetcard-header-margin-block-start", + "--spectrum-assetcard-overlay-background-color", + "--spectrum-assetcard-selectionindicator-background-color-default", + "--spectrum-assetcard-selectionindicator-background-color-ordered", + "--spectrum-assetcard-selectionindicator-blur", + "--spectrum-assetcard-selectionindicator-border-radius", + "--spectrum-assetcard-selectionindicator-color", + "--spectrum-assetcard-selectionindicator-font-size", + "--spectrum-assetcard-selectionindicator-font-weight", + "--spectrum-assetcard-selectionindicator-margin", + "--spectrum-assetcard-selectionindicator-offset-y", + "--spectrum-assetcard-selectionindicator-size", + "--spectrum-assetcard-title-font-family", + "--spectrum-assetcard-title-font-size", + "--spectrum-assetcard-title-font-style", + "--spectrum-assetcard-title-font-weight", + "--spectrum-assetcard-title-letter-spacing", + "--spectrum-assetcard-title-line-height", + "--spectrum-assetcard-title-text-color", + "--spectrum-body-cjk-font-style", + "--spectrum-body-cjk-font-weight", + "--spectrum-body-cjk-line-height", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-bold-font-weight", + "--spectrum-card-selection-background-size", + "--spectrum-cjk-font-family-stack", + "--spectrum-cjk-letter-spacing", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-400", + "--spectrum-gray-100-rgb", + "--spectrum-gray-200", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-900", + "--spectrum-heading-cjk-font-style", + "--spectrum-heading-cjk-font-weight", + "--spectrum-heading-cjk-line-height", + "--spectrum-heading-cjk-size-xs", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-line-height-100", + "--spectrum-line-height-200", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-300", + "--spectrum-spacing-75", + "--spectrum-white" + ], + "system": ["--system-spectrum-assetcard-overlay-background-color"], + "a11y": [ + "--highcontrast-assectcard-border-color-selected-down", + "--highcontrast-assetcard-border-color-hover", + "--highcontrast-assetcard-border-color-selected", + "--highcontrast-assetcard-border-color-selected-hover", + "--highcontrast-assetcard-selectionindicator-background-color-ordered", + "--highcontrast-assetcard-selectionindicator-color" + ] +} diff --git a/components/assetcard/package.json b/components/assetcard/package.json new file mode 100644 index 0000000000..0afc73d9ea --- /dev/null +++ b/components/assetcard/package.json @@ -0,0 +1,46 @@ +{ + "name": "@spectrum-css/assetcard", + "version": "4.1.1", + "description": "The Spectrum CSS asset card component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/assetcard", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/assetcard" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/checkbox": ">=9", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/checkbox": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/checkbox": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/assetcard/template.js b/components/assetcard/template.js new file mode 100644 index 0000000000..fb8d9eb867 --- /dev/null +++ b/components/assetcard/template.js @@ -0,0 +1,152 @@ +import { Template as Checkbox } from "@spectrum-css/checkbox/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; +import { camelCase } from "lodash-es"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-AssetCard", + image, + exampleImage, + title, + headerContent, + content = [], + selection = "checkbox", + isSelected = false, + isFocused = false, + isDropTarget = false, + customClasses = [], + customStyles = {}, + id, + testId, +} = {}, context = {}) => { + const { updateArgs } = context; + + if (!image && !exampleImage) { + console.warn("AssetCard: image is required"); + return html``; + } + + if (exampleImage) exampleImage = `example-card-${exampleImage}.png`; + + return html` +
({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + data-test-id=${ifDefined(testId)} + style=${styleMap(customStyles)} + @click=${() => { + updateArgs({ isSelected: !isSelected }); + }} + @focusin=${() => { + updateArgs({ isFocused: true }); + }} + @focusout=${() => { + updateArgs({ isFocused: false }); + }} + tabindex="0" + role="figure" + > +
+ assetcard example image +
+
+ ${when( + title, + () => html`
+ ${when( + title, + () => html`
${title}
` + )} + ${when( + headerContent, + () => + html`
+ ${headerContent} +
` + )} +
` + )} + ${when( + content, + () => html`
${content}
` + )} +
+ ${when( + selection === "checkbox", + () => + Checkbox({ + size: "m", + isEmphasized: true, + isChecked: isSelected, + ariaLabelledby: camelCase(title), + customClasses: [`${rootClass}-checkbox`], + }, context), + () => html`
1
` + )} +
+
+ `; +}; + +export const AssetCardGroup = Variants({ + Template, + testData: [{ + testHeading: "Portrait", + title: "Portrait asset", + content: ["Image"], + }, + { + testHeading: "Landscape", + title: "Landscape asset", + exampleImage: "landscape", + }, + { + testHeading: "Square asset", + title: "Square asset", + exampleImage: "square", + }, + { + testHeading: "Video asset", + title: "MVI_0123.mp4", + headerContent: "39:02", + exampleImage: "square", + }, + { + testHeading: "With ordinal", + title: "Ordered selection", + selection: "ordered", + exampleImage: "landscape", + }, + { + testHeading: "Highlighted selection", + title: "Highlight selection", + selection: "highlight", + }, + { + testHeading: "Drop target", + title: "Drop target", + selection: "highlight", + isDropTarget: true, + }], + stateData: [{ + testHeading: "Selected", + isSelected: true, + }, { + testHeading: "Focused", + isFocused: true, + }] +}); diff --git a/components/assetcard/themes/express.css b/components/assetcard/themes/express.css new file mode 100644 index 0000000000..d5c760da7c --- /dev/null +++ b/components/assetcard/themes/express.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-assetcard-overlay-background-color: rgba(109, 115, 246, 0.2); +} +/*# sourceMappingURL=components/assetcard/themes/express.css.map */ diff --git a/components/assetcard/themes/spectrum.css b/components/assetcard/themes/spectrum.css new file mode 100644 index 0000000000..727412baff --- /dev/null +++ b/components/assetcard/themes/spectrum.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-assetcard-overlay-background-color: rgba(27, 127, 245, 0.1); +} +/*# sourceMappingURL=components/assetcard/themes/spectrum.css.map */ diff --git a/components/assetlist/index-base.css b/components/assetlist/index-base.css new file mode 100644 index 0000000000..2214b67c19 --- /dev/null +++ b/components/assetlist/index-base.css @@ -0,0 +1,161 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AssetList { + --spectrum-assetlist-width: 272px; + --spectrum-assetlist-child-indicator-animation: var(--spectrum-animation-duration-100); + --spectrum-assetlist-item-height: var(--spectrum-spacing-600); + --spectrum-assetlist-item-padding-inline-start: var(--spectrum-spacing-300); + --spectrum-assetlist-item-padding-inline-end: var(--spectrum-spacing-300); + --spectrum-assetlist-item-margin-block-end: var(--spectrum-spacing-75); + --spectrum-assetlist-item-border-radius: var(--spectrum-spacing-75); + --spectrum-assetlist-item-animation: var(--spectrum-animation-duration-100); + --spectrum-assetlist-item-font-size: var(--spectrum-font-size-100); + --spectrum-assetlist-item-font-weight: var(--spectrum-regular-font-weight); + --spectrum-assetlist-item-background-color-down: var(--spectrum-gray-300); + --spectrum-assetlist-item-background-color-hover: var(--spectrum-gray-200); + --spectrum-assetlist-thumbnail-width: var(--spectrum-spacing-400); + --spectrum-assetlist-thumbnail-height: var(--spectrum-spacing-400); + --spectrum-assetlist-thumbnail-margin-inline-start: var(--spectrum-spacing-100); + --spectrum-assetlist-item-label-padding-inline-start: var(--spectrum-spacing-100); + --spectrum-assetlist-label-color: var(--spectrum-neutral-content-color-default); +} +.spectrum-AssetList:dir(rtl), +[dir="rtl"] .spectrum-AssetList { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-AssetList { + margin-block-start: 0; + margin-block-end: 0; + padding: 0; +} +.spectrum-AssetList-item { + position: relative; + color: var(--highcontrast-assetlist-label-color, var(--mod-assetlist-label-color, var(--spectrum-assetlist-label-color))); + display: flex; + box-sizing: border-box; + align-items: center; + inline-size: var(--mod-assetlist-width, var(--spectrum-assetlist-width)); + padding-block: 0; + padding-inline: var(--mod-assetlist-item-padding-inline-start, var(--spectrum-assetlist-item-padding-inline-start)) var(--mod-assetlist-item-padding-inline-end, var(--spectrum-assetlist-item-padding-inline-end)); + margin-block: 0 var(--mod-assetlist-item-margin-bottom, var(--spectrum-assetlist-item-margin-block-end)); + margin-inline: 0; + transition: background-color var(--mod-assetlist-item-animation, var(--spectrum-assetlist-item-animation)) ease-in-out; + font-size: var(--mod-assetlist-item-font-size, var(--spectrum-assetlist-item-font-size)); + font-weight: var(--mod-assetlist-item-font-weight, var(--spectrum-assetlist-item-font-weight)); + font-style: normal; + cursor: pointer; + outline: none; +} +.spectrum-AssetList-item, +.spectrum-AssetList-item:before { + block-size: var(--mod-assetlist-item-height, var(--spectrum-assetlist-item-height)); + border-radius: var(--mod-assetlist-item-border-radius, var(--spectrum-assetlist-item-border-radius)); +} +.spectrum-AssetList-item:before { + content: ""; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + background-color: initial; +} +.spectrum-AssetList-item.is-selectable .spectrum-Checkbox, +.spectrum-AssetList-item.is-selected .spectrum-Checkbox, +.spectrum-AssetList-item:focus .spectrum-Checkbox { + display: inline-flex; +} +.spectrum-AssetList-item.is-branch .spectrum-AssetList-itemChildIndicator { + display: block; +} +.spectrum-AssetList-item .spectrum-AssetList-itemThumbnail { + border-style: none; + inline-size: var(--mod-assetlist-thumbnail-width, var(--spectrum-assetlist-thumbnail-width)); + block-size: var(--mod-assetlist-thumnail-height, var(--spectrum-assetlist-thumbnail-height)); + margin-inline-start: var(--mod-assetlist-thumbnail-margin-left, var(--spectrum-assetlist-thumbnail-margin-inline-start)); + vertical-align: middle; +} +.js-focus-within .spectrum-AssetList-item.is-focused[focus-within], +.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible, +.spectrum-AssetList-item.is-focused:focus-within, +.spectrum-AssetList-item.is-focused[focus-within].js-focus-within, +.spectrum-AssetList-item:focus-within:focus-visible, +.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within { + background-color: var(--highcontrast-assetlist-item-background-color-hover, var(--mod-assetlist-item-background-color-hover, var(--spectrum-assetlist-item-background-color-hover))); +} +.js-focus-within .spectrum-AssetList-item.is-focused[focus-within]:before, +.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible:before, +.spectrum-AssetList-item.is-focused:focus-within:before, +.spectrum-AssetList-item.is-focused[focus-within].js-focus-within:before, +.spectrum-AssetList-item:focus-within:focus-visible:before, +.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within:before { + box-shadow: 0 0 0 2px var(--highcontrast-assetlist-border-color-key-focus, var(--mod-assetlist-border-color-key-focus, var(--spectrum-assetlist-border-color-key-focus))) inset; +} +.spectrum-AssetList-item.is-navigated, +.spectrum-AssetList-item.is-navigated:focus { + background-color: var(--mod-assetlist-item-background-color-down, var(--spectrum-assetlist-item-background-color-down)); +} +.spectrum-AssetList-item.is-selected { + background-color: var(--highcontrast-assetlist-item-background-color-selected, var(--mod-assetlist-item-background-color-selected, var(--spectrum-assetlist-item-background-color-selected))); +} +.spectrum-AssetList-item.is-selected:focus { + background-color: var(--highcontrast-assetlist-item-background-color-selected-hover, var(--mod-assetlist-item-background-color-selected-hover, var(--spectrum-assetlist-item-background-color-selected-hover))); +} +@media (hover: hover) { + .spectrum-AssetList-item:hover .spectrum-Checkbox { + display: inline-flex; + } + .spectrum-AssetList-item:hover { + background-color: var(--highcontrast-assetlist-item-background-color-hover, var(--mod-assetlist-item-background-color-hover, var(--spectrum-assetlist-item-background-color-hover))); + } + .spectrum-AssetList-item.is-navigated:hover { + background-color: var(--mod-assetlist-item-background-color-down, var(--spectrum-assetlist-item-background-color-down)); + } + .spectrum-AssetList-item.is-selected:hover { + background-color: var(--highcontrast-assetlist-item-background-color-selected-hover, var(--mod-assetlist-item-background-color-selected-hover, var(--spectrum-assetlist-item-background-color-selected-hover))); + } +} +.spectrum-AssetList-itemSelector { + display: none; +} +.spectrum-AssetList-itemChildIndicator { + display: none; + transition: transform ease var(--mod-assetlist-child-indicator-animation, var(--spectrum-assetlist-child-indicator-animation)); + transform: var(--spectrum-logical-rotation); +} +.spectrum-AssetList-itemLabel { + flex: 1; + padding-inline-start: var(--mod-assetlist-item-label-padding-inline-start, var(--spectrum-assetlist-item-label-padding-inline-start)); + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +@media (forced-colors: active) { + .spectrum-AssetList-item { + forced-color-adjust: none; + --highcontrast-assetlist-border-color-key-focus: Highlight; + --highcontrast-assetlist-item-background-color-hover: Highlight; + --highcontrast-assetlist-item-background-color-selected-hover: Highlight; + --highcontrast-assetlist-label-color: ButtonText; + --highcontrast-assetlist-item-background-color-selected: SelectedItem; + } + .spectrum-AssetList-item.is-navigated, + .spectrum-AssetList-item.is-selected { + --highcontrast-assetlist-label-color: SelectedItemText; + } + @media (hover: hover) { + .spectrum-AssetList-item:hover { + --highcontrast-assetlist-label-color: SelectedItemText; + } + } +} +/*# sourceMappingURL=components/assetlist/index.css.map */ diff --git a/components/assetlist/index-vars.css b/components/assetlist/index-vars.css new file mode 100644 index 0000000000..2214b67c19 --- /dev/null +++ b/components/assetlist/index-vars.css @@ -0,0 +1,161 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AssetList { + --spectrum-assetlist-width: 272px; + --spectrum-assetlist-child-indicator-animation: var(--spectrum-animation-duration-100); + --spectrum-assetlist-item-height: var(--spectrum-spacing-600); + --spectrum-assetlist-item-padding-inline-start: var(--spectrum-spacing-300); + --spectrum-assetlist-item-padding-inline-end: var(--spectrum-spacing-300); + --spectrum-assetlist-item-margin-block-end: var(--spectrum-spacing-75); + --spectrum-assetlist-item-border-radius: var(--spectrum-spacing-75); + --spectrum-assetlist-item-animation: var(--spectrum-animation-duration-100); + --spectrum-assetlist-item-font-size: var(--spectrum-font-size-100); + --spectrum-assetlist-item-font-weight: var(--spectrum-regular-font-weight); + --spectrum-assetlist-item-background-color-down: var(--spectrum-gray-300); + --spectrum-assetlist-item-background-color-hover: var(--spectrum-gray-200); + --spectrum-assetlist-thumbnail-width: var(--spectrum-spacing-400); + --spectrum-assetlist-thumbnail-height: var(--spectrum-spacing-400); + --spectrum-assetlist-thumbnail-margin-inline-start: var(--spectrum-spacing-100); + --spectrum-assetlist-item-label-padding-inline-start: var(--spectrum-spacing-100); + --spectrum-assetlist-label-color: var(--spectrum-neutral-content-color-default); +} +.spectrum-AssetList:dir(rtl), +[dir="rtl"] .spectrum-AssetList { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-AssetList { + margin-block-start: 0; + margin-block-end: 0; + padding: 0; +} +.spectrum-AssetList-item { + position: relative; + color: var(--highcontrast-assetlist-label-color, var(--mod-assetlist-label-color, var(--spectrum-assetlist-label-color))); + display: flex; + box-sizing: border-box; + align-items: center; + inline-size: var(--mod-assetlist-width, var(--spectrum-assetlist-width)); + padding-block: 0; + padding-inline: var(--mod-assetlist-item-padding-inline-start, var(--spectrum-assetlist-item-padding-inline-start)) var(--mod-assetlist-item-padding-inline-end, var(--spectrum-assetlist-item-padding-inline-end)); + margin-block: 0 var(--mod-assetlist-item-margin-bottom, var(--spectrum-assetlist-item-margin-block-end)); + margin-inline: 0; + transition: background-color var(--mod-assetlist-item-animation, var(--spectrum-assetlist-item-animation)) ease-in-out; + font-size: var(--mod-assetlist-item-font-size, var(--spectrum-assetlist-item-font-size)); + font-weight: var(--mod-assetlist-item-font-weight, var(--spectrum-assetlist-item-font-weight)); + font-style: normal; + cursor: pointer; + outline: none; +} +.spectrum-AssetList-item, +.spectrum-AssetList-item:before { + block-size: var(--mod-assetlist-item-height, var(--spectrum-assetlist-item-height)); + border-radius: var(--mod-assetlist-item-border-radius, var(--spectrum-assetlist-item-border-radius)); +} +.spectrum-AssetList-item:before { + content: ""; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + background-color: initial; +} +.spectrum-AssetList-item.is-selectable .spectrum-Checkbox, +.spectrum-AssetList-item.is-selected .spectrum-Checkbox, +.spectrum-AssetList-item:focus .spectrum-Checkbox { + display: inline-flex; +} +.spectrum-AssetList-item.is-branch .spectrum-AssetList-itemChildIndicator { + display: block; +} +.spectrum-AssetList-item .spectrum-AssetList-itemThumbnail { + border-style: none; + inline-size: var(--mod-assetlist-thumbnail-width, var(--spectrum-assetlist-thumbnail-width)); + block-size: var(--mod-assetlist-thumnail-height, var(--spectrum-assetlist-thumbnail-height)); + margin-inline-start: var(--mod-assetlist-thumbnail-margin-left, var(--spectrum-assetlist-thumbnail-margin-inline-start)); + vertical-align: middle; +} +.js-focus-within .spectrum-AssetList-item.is-focused[focus-within], +.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible, +.spectrum-AssetList-item.is-focused:focus-within, +.spectrum-AssetList-item.is-focused[focus-within].js-focus-within, +.spectrum-AssetList-item:focus-within:focus-visible, +.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within { + background-color: var(--highcontrast-assetlist-item-background-color-hover, var(--mod-assetlist-item-background-color-hover, var(--spectrum-assetlist-item-background-color-hover))); +} +.js-focus-within .spectrum-AssetList-item.is-focused[focus-within]:before, +.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible:before, +.spectrum-AssetList-item.is-focused:focus-within:before, +.spectrum-AssetList-item.is-focused[focus-within].js-focus-within:before, +.spectrum-AssetList-item:focus-within:focus-visible:before, +.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within:before { + box-shadow: 0 0 0 2px var(--highcontrast-assetlist-border-color-key-focus, var(--mod-assetlist-border-color-key-focus, var(--spectrum-assetlist-border-color-key-focus))) inset; +} +.spectrum-AssetList-item.is-navigated, +.spectrum-AssetList-item.is-navigated:focus { + background-color: var(--mod-assetlist-item-background-color-down, var(--spectrum-assetlist-item-background-color-down)); +} +.spectrum-AssetList-item.is-selected { + background-color: var(--highcontrast-assetlist-item-background-color-selected, var(--mod-assetlist-item-background-color-selected, var(--spectrum-assetlist-item-background-color-selected))); +} +.spectrum-AssetList-item.is-selected:focus { + background-color: var(--highcontrast-assetlist-item-background-color-selected-hover, var(--mod-assetlist-item-background-color-selected-hover, var(--spectrum-assetlist-item-background-color-selected-hover))); +} +@media (hover: hover) { + .spectrum-AssetList-item:hover .spectrum-Checkbox { + display: inline-flex; + } + .spectrum-AssetList-item:hover { + background-color: var(--highcontrast-assetlist-item-background-color-hover, var(--mod-assetlist-item-background-color-hover, var(--spectrum-assetlist-item-background-color-hover))); + } + .spectrum-AssetList-item.is-navigated:hover { + background-color: var(--mod-assetlist-item-background-color-down, var(--spectrum-assetlist-item-background-color-down)); + } + .spectrum-AssetList-item.is-selected:hover { + background-color: var(--highcontrast-assetlist-item-background-color-selected-hover, var(--mod-assetlist-item-background-color-selected-hover, var(--spectrum-assetlist-item-background-color-selected-hover))); + } +} +.spectrum-AssetList-itemSelector { + display: none; +} +.spectrum-AssetList-itemChildIndicator { + display: none; + transition: transform ease var(--mod-assetlist-child-indicator-animation, var(--spectrum-assetlist-child-indicator-animation)); + transform: var(--spectrum-logical-rotation); +} +.spectrum-AssetList-itemLabel { + flex: 1; + padding-inline-start: var(--mod-assetlist-item-label-padding-inline-start, var(--spectrum-assetlist-item-label-padding-inline-start)); + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +@media (forced-colors: active) { + .spectrum-AssetList-item { + forced-color-adjust: none; + --highcontrast-assetlist-border-color-key-focus: Highlight; + --highcontrast-assetlist-item-background-color-hover: Highlight; + --highcontrast-assetlist-item-background-color-selected-hover: Highlight; + --highcontrast-assetlist-label-color: ButtonText; + --highcontrast-assetlist-item-background-color-selected: SelectedItem; + } + .spectrum-AssetList-item.is-navigated, + .spectrum-AssetList-item.is-selected { + --highcontrast-assetlist-label-color: SelectedItemText; + } + @media (hover: hover) { + .spectrum-AssetList-item:hover { + --highcontrast-assetlist-label-color: SelectedItemText; + } + } +} +/*# sourceMappingURL=components/assetlist/index.css.map */ diff --git a/components/assetlist/index.css b/components/assetlist/index.css new file mode 100644 index 0000000000..2214b67c19 --- /dev/null +++ b/components/assetlist/index.css @@ -0,0 +1,161 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-AssetList { + --spectrum-assetlist-width: 272px; + --spectrum-assetlist-child-indicator-animation: var(--spectrum-animation-duration-100); + --spectrum-assetlist-item-height: var(--spectrum-spacing-600); + --spectrum-assetlist-item-padding-inline-start: var(--spectrum-spacing-300); + --spectrum-assetlist-item-padding-inline-end: var(--spectrum-spacing-300); + --spectrum-assetlist-item-margin-block-end: var(--spectrum-spacing-75); + --spectrum-assetlist-item-border-radius: var(--spectrum-spacing-75); + --spectrum-assetlist-item-animation: var(--spectrum-animation-duration-100); + --spectrum-assetlist-item-font-size: var(--spectrum-font-size-100); + --spectrum-assetlist-item-font-weight: var(--spectrum-regular-font-weight); + --spectrum-assetlist-item-background-color-down: var(--spectrum-gray-300); + --spectrum-assetlist-item-background-color-hover: var(--spectrum-gray-200); + --spectrum-assetlist-thumbnail-width: var(--spectrum-spacing-400); + --spectrum-assetlist-thumbnail-height: var(--spectrum-spacing-400); + --spectrum-assetlist-thumbnail-margin-inline-start: var(--spectrum-spacing-100); + --spectrum-assetlist-item-label-padding-inline-start: var(--spectrum-spacing-100); + --spectrum-assetlist-label-color: var(--spectrum-neutral-content-color-default); +} +.spectrum-AssetList:dir(rtl), +[dir="rtl"] .spectrum-AssetList { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-AssetList { + margin-block-start: 0; + margin-block-end: 0; + padding: 0; +} +.spectrum-AssetList-item { + position: relative; + color: var(--highcontrast-assetlist-label-color, var(--mod-assetlist-label-color, var(--spectrum-assetlist-label-color))); + display: flex; + box-sizing: border-box; + align-items: center; + inline-size: var(--mod-assetlist-width, var(--spectrum-assetlist-width)); + padding-block: 0; + padding-inline: var(--mod-assetlist-item-padding-inline-start, var(--spectrum-assetlist-item-padding-inline-start)) var(--mod-assetlist-item-padding-inline-end, var(--spectrum-assetlist-item-padding-inline-end)); + margin-block: 0 var(--mod-assetlist-item-margin-bottom, var(--spectrum-assetlist-item-margin-block-end)); + margin-inline: 0; + transition: background-color var(--mod-assetlist-item-animation, var(--spectrum-assetlist-item-animation)) ease-in-out; + font-size: var(--mod-assetlist-item-font-size, var(--spectrum-assetlist-item-font-size)); + font-weight: var(--mod-assetlist-item-font-weight, var(--spectrum-assetlist-item-font-weight)); + font-style: normal; + cursor: pointer; + outline: none; +} +.spectrum-AssetList-item, +.spectrum-AssetList-item:before { + block-size: var(--mod-assetlist-item-height, var(--spectrum-assetlist-item-height)); + border-radius: var(--mod-assetlist-item-border-radius, var(--spectrum-assetlist-item-border-radius)); +} +.spectrum-AssetList-item:before { + content: ""; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + background-color: initial; +} +.spectrum-AssetList-item.is-selectable .spectrum-Checkbox, +.spectrum-AssetList-item.is-selected .spectrum-Checkbox, +.spectrum-AssetList-item:focus .spectrum-Checkbox { + display: inline-flex; +} +.spectrum-AssetList-item.is-branch .spectrum-AssetList-itemChildIndicator { + display: block; +} +.spectrum-AssetList-item .spectrum-AssetList-itemThumbnail { + border-style: none; + inline-size: var(--mod-assetlist-thumbnail-width, var(--spectrum-assetlist-thumbnail-width)); + block-size: var(--mod-assetlist-thumnail-height, var(--spectrum-assetlist-thumbnail-height)); + margin-inline-start: var(--mod-assetlist-thumbnail-margin-left, var(--spectrum-assetlist-thumbnail-margin-inline-start)); + vertical-align: middle; +} +.js-focus-within .spectrum-AssetList-item.is-focused[focus-within], +.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible, +.spectrum-AssetList-item.is-focused:focus-within, +.spectrum-AssetList-item.is-focused[focus-within].js-focus-within, +.spectrum-AssetList-item:focus-within:focus-visible, +.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within { + background-color: var(--highcontrast-assetlist-item-background-color-hover, var(--mod-assetlist-item-background-color-hover, var(--spectrum-assetlist-item-background-color-hover))); +} +.js-focus-within .spectrum-AssetList-item.is-focused[focus-within]:before, +.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible:before, +.spectrum-AssetList-item.is-focused:focus-within:before, +.spectrum-AssetList-item.is-focused[focus-within].js-focus-within:before, +.spectrum-AssetList-item:focus-within:focus-visible:before, +.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within:before { + box-shadow: 0 0 0 2px var(--highcontrast-assetlist-border-color-key-focus, var(--mod-assetlist-border-color-key-focus, var(--spectrum-assetlist-border-color-key-focus))) inset; +} +.spectrum-AssetList-item.is-navigated, +.spectrum-AssetList-item.is-navigated:focus { + background-color: var(--mod-assetlist-item-background-color-down, var(--spectrum-assetlist-item-background-color-down)); +} +.spectrum-AssetList-item.is-selected { + background-color: var(--highcontrast-assetlist-item-background-color-selected, var(--mod-assetlist-item-background-color-selected, var(--spectrum-assetlist-item-background-color-selected))); +} +.spectrum-AssetList-item.is-selected:focus { + background-color: var(--highcontrast-assetlist-item-background-color-selected-hover, var(--mod-assetlist-item-background-color-selected-hover, var(--spectrum-assetlist-item-background-color-selected-hover))); +} +@media (hover: hover) { + .spectrum-AssetList-item:hover .spectrum-Checkbox { + display: inline-flex; + } + .spectrum-AssetList-item:hover { + background-color: var(--highcontrast-assetlist-item-background-color-hover, var(--mod-assetlist-item-background-color-hover, var(--spectrum-assetlist-item-background-color-hover))); + } + .spectrum-AssetList-item.is-navigated:hover { + background-color: var(--mod-assetlist-item-background-color-down, var(--spectrum-assetlist-item-background-color-down)); + } + .spectrum-AssetList-item.is-selected:hover { + background-color: var(--highcontrast-assetlist-item-background-color-selected-hover, var(--mod-assetlist-item-background-color-selected-hover, var(--spectrum-assetlist-item-background-color-selected-hover))); + } +} +.spectrum-AssetList-itemSelector { + display: none; +} +.spectrum-AssetList-itemChildIndicator { + display: none; + transition: transform ease var(--mod-assetlist-child-indicator-animation, var(--spectrum-assetlist-child-indicator-animation)); + transform: var(--spectrum-logical-rotation); +} +.spectrum-AssetList-itemLabel { + flex: 1; + padding-inline-start: var(--mod-assetlist-item-label-padding-inline-start, var(--spectrum-assetlist-item-label-padding-inline-start)); + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +@media (forced-colors: active) { + .spectrum-AssetList-item { + forced-color-adjust: none; + --highcontrast-assetlist-border-color-key-focus: Highlight; + --highcontrast-assetlist-item-background-color-hover: Highlight; + --highcontrast-assetlist-item-background-color-selected-hover: Highlight; + --highcontrast-assetlist-label-color: ButtonText; + --highcontrast-assetlist-item-background-color-selected: SelectedItem; + } + .spectrum-AssetList-item.is-navigated, + .spectrum-AssetList-item.is-selected { + --highcontrast-assetlist-label-color: SelectedItemText; + } + @media (hover: hover) { + .spectrum-AssetList-item:hover { + --highcontrast-assetlist-label-color: SelectedItemText; + } + } +} +/*# sourceMappingURL=components/assetlist/index.css.map */ diff --git a/components/assetlist/metadata.json b/components/assetlist/metadata.json new file mode 100644 index 0000000000..b46d49c736 --- /dev/null +++ b/components/assetlist/metadata.json @@ -0,0 +1,89 @@ +{ + "selectors": [ + ".js-focus-within .spectrum-AssetList-item.is-focused[focus-within],\n.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible,\n.spectrum-AssetList-item.is-focused:focus-within,\n.spectrum-AssetList-item.is-focused[focus-within].js-focus-within,\n.spectrum-AssetList-item:focus-within:focus-visible,\n.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within", + ".js-focus-within .spectrum-AssetList-item.is-focused[focus-within]:before,\n.js-focus-within .spectrum-AssetList-item[focus-within]:focus-visible:before,\n.spectrum-AssetList-item.is-focused:focus-within:before,\n.spectrum-AssetList-item.is-focused[focus-within].js-focus-within:before,\n.spectrum-AssetList-item:focus-within:focus-visible:before,\n.spectrum-AssetList-item[focus-within]:focus-visible.js-focus-within:before", + ".spectrum-AssetList", + ".spectrum-AssetList-item", + ".spectrum-AssetList-item .spectrum-AssetList-itemThumbnail", + ".spectrum-AssetList-item,\n.spectrum-AssetList-item:before", + ".spectrum-AssetList-item.is-branch .spectrum-AssetList-itemChildIndicator", + ".spectrum-AssetList-item.is-navigated,\n\t.spectrum-AssetList-item.is-selected", + ".spectrum-AssetList-item.is-navigated,\n.spectrum-AssetList-item.is-navigated:focus", + ".spectrum-AssetList-item.is-navigated:hover", + ".spectrum-AssetList-item.is-selectable .spectrum-Checkbox,\n.spectrum-AssetList-item.is-selected .spectrum-Checkbox,\n.spectrum-AssetList-item:focus .spectrum-Checkbox", + ".spectrum-AssetList-item.is-selected", + ".spectrum-AssetList-item.is-selected:focus", + ".spectrum-AssetList-item.is-selected:hover", + ".spectrum-AssetList-item:before", + ".spectrum-AssetList-item:hover", + ".spectrum-AssetList-item:hover .spectrum-Checkbox", + ".spectrum-AssetList-itemChildIndicator", + ".spectrum-AssetList-itemLabel", + ".spectrum-AssetList-itemSelector", + ".spectrum-AssetList:dir(rtl),\n[dir=\"rtl\"] .spectrum-AssetList" + ], + "mods": [ + "--mod-assetlist-border-color-key-focus", + "--mod-assetlist-child-indicator-animation", + "--mod-assetlist-item-animation", + "--mod-assetlist-item-background-color-down", + "--mod-assetlist-item-background-color-hover", + "--mod-assetlist-item-background-color-selected", + "--mod-assetlist-item-background-color-selected-hover", + "--mod-assetlist-item-border-radius", + "--mod-assetlist-item-font-size", + "--mod-assetlist-item-font-weight", + "--mod-assetlist-item-height", + "--mod-assetlist-item-label-padding-inline-start", + "--mod-assetlist-item-margin-bottom", + "--mod-assetlist-item-padding-inline-end", + "--mod-assetlist-item-padding-inline-start", + "--mod-assetlist-label-color", + "--mod-assetlist-thumbnail-margin-left", + "--mod-assetlist-thumbnail-width", + "--mod-assetlist-thumnail-height", + "--mod-assetlist-width" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-assetlist-border-color-key-focus", + "--spectrum-assetlist-child-indicator-animation", + "--spectrum-assetlist-item-animation", + "--spectrum-assetlist-item-background-color-down", + "--spectrum-assetlist-item-background-color-hover", + "--spectrum-assetlist-item-background-color-selected", + "--spectrum-assetlist-item-background-color-selected-hover", + "--spectrum-assetlist-item-border-radius", + "--spectrum-assetlist-item-font-size", + "--spectrum-assetlist-item-font-weight", + "--spectrum-assetlist-item-height", + "--spectrum-assetlist-item-label-padding-inline-start", + "--spectrum-assetlist-item-margin-block-end", + "--spectrum-assetlist-item-padding-inline-end", + "--spectrum-assetlist-item-padding-inline-start", + "--spectrum-assetlist-label-color", + "--spectrum-assetlist-thumbnail-height", + "--spectrum-assetlist-thumbnail-margin-inline-start", + "--spectrum-assetlist-thumbnail-width", + "--spectrum-assetlist-width", + "--spectrum-font-size-100", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-logical-rotation", + "--spectrum-neutral-content-color-default", + "--spectrum-regular-font-weight", + "--spectrum-spacing-100", + "--spectrum-spacing-300", + "--spectrum-spacing-400", + "--spectrum-spacing-600", + "--spectrum-spacing-75" + ], + "system": [], + "a11y": [ + "--highcontrast-assetlist-border-color-key-focus", + "--highcontrast-assetlist-item-background-color-hover", + "--highcontrast-assetlist-item-background-color-selected", + "--highcontrast-assetlist-item-background-color-selected-hover", + "--highcontrast-assetlist-label-color" + ] +} diff --git a/components/assetlist/package.json b/components/assetlist/package.json new file mode 100644 index 0000000000..df2e9b237f --- /dev/null +++ b/components/assetlist/package.json @@ -0,0 +1,51 @@ +{ + "name": "@spectrum-css/assetlist", + "version": "6.1.1", + "description": "The Spectrum CSS assetlist component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/assetlist", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/assetlist" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/checkbox": ">=9", + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/checkbox": { + "optional": true + }, + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/checkbox": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/assetlist/template.js b/components/assetlist/template.js new file mode 100644 index 0000000000..257187b0b3 --- /dev/null +++ b/components/assetlist/template.js @@ -0,0 +1,92 @@ +import { Template as Checkbox } from "@spectrum-css/checkbox/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Variants, renderContent } from "@spectrum-css/preview/decorators/utilities.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const AssetListItem = ({ + rootClass = "spectrum-AssetList-item", + image, + iconName, + label, + checkboxId, + ariaLabelledby, + isNavigated = false, + isSelectable = false, + isSelected = false, + isBranch = false, + onclick = () => {}, +}) => html` +
  • + ${when(isSelectable, () => + Checkbox({ + size: "m", + isChecked: isSelected, + ariaLabelledby, + id: checkboxId, + customClasses: [`${rootClass}Selector`], + }))} + ${when( + image, + () => + html`asset image thumbnail` + )} + ${when(iconName, () => Icon({ iconName, customClasses: [`${rootClass}Thumbnail`] }))} + ${when(label, () => html`${label}`)} + ${when(!isSelectable && !isBranch, () => + Checkbox({ + size: "m", + isChecked: isSelected, + ariaLabelledby, + id: checkboxId, + customClasses: [`${rootClass}Selector`], + }))} + ${when(isBranch, () => + Icon({ + iconName: "ChevronRight100", + customClasses: [`${rootClass}ChildIndicator`], + }) + )} +
  • +`; + +export const Template = ({ + rootClass = "spectrum-AssetList", + items = [], + customClasses = [], + id, +} = {}, context = {}) => { + return html` +
      ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + > + ${renderContent(items, { + callback: AssetListItem, + args: { + rootClass: `${rootClass}-item`, + }, + context + })} +
    + `; +}; + +export const AssetListGroup = Variants({ Template }); diff --git a/components/avatar/index-base.css b/components/avatar/index-base.css new file mode 100644 index 0000000000..516bb8b47e --- /dev/null +++ b/components/avatar/index-base.css @@ -0,0 +1,106 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Avatar { + --spectrum-avatar-color-opacity: 1; + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-border-radius: var(--spectrum-avatar-block-size); + --spectrum-avatar-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-avatar-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-avatar-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-avatar-color-opacity-disabled: var(--spectrum-avatar-opacity-disabled); +} +.spectrum-Avatar--size50 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-50); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-50); +} +.spectrum-Avatar--size75 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-75); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-75); +} +.spectrum-Avatar--size100 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-100); +} +.spectrum-Avatar--size200 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-200); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-200); +} +.spectrum-Avatar--size300 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-300); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-300); +} +.spectrum-Avatar--size400 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-400); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-400); +} +.spectrum-Avatar--size500 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-500); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-500); +} +.spectrum-Avatar--size600 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-600); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-600); +} +.spectrum-Avatar--size700 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-700); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-700); +} +@media (forced-colors: active) { + .spectrum-Avatar { + --highcontrast-avatar-focus-indicator-color: CanvasText; + } +} +.spectrum-Avatar { + display: inline-block; + position: relative; + inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)); + block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size)); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); + border-width: 0; + outline: none; + -webkit-user-drag: none; + -webkit-user-select: none; + user-select: none; + overflow: visible; + opacity: var(--mod-avatar-color-opacity, var(--spectrum-avatar-color-opacity)); +} +.spectrum-Avatar.is-disabled { + opacity: var(--highcontrast-avatar-color-opacity-disabled, var(--mod-avatar-color-opacity-disabled, var(--spectrum-avatar-color-opacity-disabled))); +} +.spectrum-Avatar.is-focused:not(.is-disabled):after, +.spectrum-Avatar:not(.is-disabled) .spectrum-Avatar-link:focus-visible:after { + pointer-events: none; + content: ""; + position: absolute; + inset-block-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1); + inset-inline-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1); + inline-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2); + block-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2); + border-style: solid; + border-width: var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness)); + border-color: var(--highcontrast-avatar-focus-indicator-color, var(--mod-avatar-focus-indicator-color, var(--spectrum-avatar-focus-indicator-color))); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); +} +.spectrum-Avatar-link { + outline: none; + outline-color: transparent; + outline-style: solid; +} +.spectrum-Avatar-image { + inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)); + block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size)); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); +} +/*# sourceMappingURL=components/avatar/index.css.map */ diff --git a/components/avatar/index-vars.css b/components/avatar/index-vars.css new file mode 100644 index 0000000000..516bb8b47e --- /dev/null +++ b/components/avatar/index-vars.css @@ -0,0 +1,106 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Avatar { + --spectrum-avatar-color-opacity: 1; + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-border-radius: var(--spectrum-avatar-block-size); + --spectrum-avatar-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-avatar-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-avatar-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-avatar-color-opacity-disabled: var(--spectrum-avatar-opacity-disabled); +} +.spectrum-Avatar--size50 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-50); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-50); +} +.spectrum-Avatar--size75 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-75); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-75); +} +.spectrum-Avatar--size100 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-100); +} +.spectrum-Avatar--size200 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-200); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-200); +} +.spectrum-Avatar--size300 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-300); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-300); +} +.spectrum-Avatar--size400 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-400); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-400); +} +.spectrum-Avatar--size500 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-500); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-500); +} +.spectrum-Avatar--size600 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-600); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-600); +} +.spectrum-Avatar--size700 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-700); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-700); +} +@media (forced-colors: active) { + .spectrum-Avatar { + --highcontrast-avatar-focus-indicator-color: CanvasText; + } +} +.spectrum-Avatar { + display: inline-block; + position: relative; + inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)); + block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size)); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); + border-width: 0; + outline: none; + -webkit-user-drag: none; + -webkit-user-select: none; + user-select: none; + overflow: visible; + opacity: var(--mod-avatar-color-opacity, var(--spectrum-avatar-color-opacity)); +} +.spectrum-Avatar.is-disabled { + opacity: var(--highcontrast-avatar-color-opacity-disabled, var(--mod-avatar-color-opacity-disabled, var(--spectrum-avatar-color-opacity-disabled))); +} +.spectrum-Avatar.is-focused:not(.is-disabled):after, +.spectrum-Avatar:not(.is-disabled) .spectrum-Avatar-link:focus-visible:after { + pointer-events: none; + content: ""; + position: absolute; + inset-block-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1); + inset-inline-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1); + inline-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2); + block-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2); + border-style: solid; + border-width: var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness)); + border-color: var(--highcontrast-avatar-focus-indicator-color, var(--mod-avatar-focus-indicator-color, var(--spectrum-avatar-focus-indicator-color))); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); +} +.spectrum-Avatar-link { + outline: none; + outline-color: transparent; + outline-style: solid; +} +.spectrum-Avatar-image { + inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)); + block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size)); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); +} +/*# sourceMappingURL=components/avatar/index.css.map */ diff --git a/components/avatar/index.css b/components/avatar/index.css new file mode 100644 index 0000000000..516bb8b47e --- /dev/null +++ b/components/avatar/index.css @@ -0,0 +1,106 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Avatar { + --spectrum-avatar-color-opacity: 1; + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-border-radius: var(--spectrum-avatar-block-size); + --spectrum-avatar-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-avatar-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-avatar-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-avatar-color-opacity-disabled: var(--spectrum-avatar-opacity-disabled); +} +.spectrum-Avatar--size50 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-50); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-50); +} +.spectrum-Avatar--size75 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-75); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-75); +} +.spectrum-Avatar--size100 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-100); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-100); +} +.spectrum-Avatar--size200 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-200); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-200); +} +.spectrum-Avatar--size300 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-300); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-300); +} +.spectrum-Avatar--size400 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-400); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-400); +} +.spectrum-Avatar--size500 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-500); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-500); +} +.spectrum-Avatar--size600 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-600); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-600); +} +.spectrum-Avatar--size700 { + --spectrum-avatar-inline-size: var(--spectrum-avatar-size-700); + --spectrum-avatar-block-size: var(--spectrum-avatar-size-700); +} +@media (forced-colors: active) { + .spectrum-Avatar { + --highcontrast-avatar-focus-indicator-color: CanvasText; + } +} +.spectrum-Avatar { + display: inline-block; + position: relative; + inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)); + block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size)); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); + border-width: 0; + outline: none; + -webkit-user-drag: none; + -webkit-user-select: none; + user-select: none; + overflow: visible; + opacity: var(--mod-avatar-color-opacity, var(--spectrum-avatar-color-opacity)); +} +.spectrum-Avatar.is-disabled { + opacity: var(--highcontrast-avatar-color-opacity-disabled, var(--mod-avatar-color-opacity-disabled, var(--spectrum-avatar-color-opacity-disabled))); +} +.spectrum-Avatar.is-focused:not(.is-disabled):after, +.spectrum-Avatar:not(.is-disabled) .spectrum-Avatar-link:focus-visible:after { + pointer-events: none; + content: ""; + position: absolute; + inset-block-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1); + inset-inline-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1); + inline-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2); + block-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2); + border-style: solid; + border-width: var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness)); + border-color: var(--highcontrast-avatar-focus-indicator-color, var(--mod-avatar-focus-indicator-color, var(--spectrum-avatar-focus-indicator-color))); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); +} +.spectrum-Avatar-link { + outline: none; + outline-color: transparent; + outline-style: solid; +} +.spectrum-Avatar-image { + inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)); + block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size)); + border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius)); +} +/*# sourceMappingURL=components/avatar/index.css.map */ diff --git a/components/avatar/metadata.json b/components/avatar/metadata.json new file mode 100644 index 0000000000..50db1017c7 --- /dev/null +++ b/components/avatar/metadata.json @@ -0,0 +1,56 @@ +{ + "selectors": [ + ".spectrum-Avatar", + ".spectrum-Avatar--size100", + ".spectrum-Avatar--size200", + ".spectrum-Avatar--size300", + ".spectrum-Avatar--size400", + ".spectrum-Avatar--size50", + ".spectrum-Avatar--size500", + ".spectrum-Avatar--size600", + ".spectrum-Avatar--size700", + ".spectrum-Avatar--size75", + ".spectrum-Avatar-image", + ".spectrum-Avatar-link", + ".spectrum-Avatar.is-disabled", + ".spectrum-Avatar.is-focused:not(.is-disabled):after,\n.spectrum-Avatar:not(.is-disabled) .spectrum-Avatar-link:focus-visible:after" + ], + "mods": [ + "--mod-avatar-block-size", + "--mod-avatar-border-radius", + "--mod-avatar-color-opacity", + "--mod-avatar-color-opacity-disabled", + "--mod-avatar-focus-indicator-color", + "--mod-avatar-focus-indicator-gap", + "--mod-avatar-focus-indicator-thickness", + "--mod-avatar-inline-size" + ], + "spectrum": [ + "--spectrum-avatar-block-size", + "--spectrum-avatar-border-radius", + "--spectrum-avatar-color-opacity", + "--spectrum-avatar-color-opacity-disabled", + "--spectrum-avatar-focus-indicator-color", + "--spectrum-avatar-focus-indicator-gap", + "--spectrum-avatar-focus-indicator-thickness", + "--spectrum-avatar-inline-size", + "--spectrum-avatar-opacity-disabled", + "--spectrum-avatar-size-100", + "--spectrum-avatar-size-200", + "--spectrum-avatar-size-300", + "--spectrum-avatar-size-400", + "--spectrum-avatar-size-50", + "--spectrum-avatar-size-500", + "--spectrum-avatar-size-600", + "--spectrum-avatar-size-700", + "--spectrum-avatar-size-75", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness" + ], + "system": [], + "a11y": [ + "--highcontrast-avatar-color-opacity-disabled", + "--highcontrast-avatar-focus-indicator-color" + ] +} diff --git a/components/avatar/package.json b/components/avatar/package.json new file mode 100644 index 0000000000..a6836f57c7 --- /dev/null +++ b/components/avatar/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/avatar", + "version": "7.1.1", + "description": "The Spectrum CSS avatar component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/avatar", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/avatar" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/avatar/template.js b/components/avatar/template.js new file mode 100644 index 0000000000..9be5efaf1e --- /dev/null +++ b/components/avatar/template.js @@ -0,0 +1,105 @@ +import { Variants } from "@spectrum-css/preview/decorators"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Avatar", + image = "example-ava.png", + altText, + isDisabled = false, + isFocused = false, + size = "700", + hasLink, + id, + customClasses = [], +} = {}, context = {}) => { + const { updateArgs } = context; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + @focusin=${() => { + updateArgs({ isFocused: true }); + }} + @focusout=${() => { + updateArgs({ isFocused: false }); + }} + > + ${when(hasLink, () => + html` + + ${ifDefined(altText)} + + ` + )} + ${when(!hasLink, () => + html` + ${ifDefined(altText)} + ` + )} +
    + `; +}; + +export const AvatarSizes = (args, context) => { + const sizeOptions = context?.argTypes?.size?.options ?? []; + if (!sizeOptions.length) { + return html`
    No size options
    `; + } + + return html` +
    + ${sizeOptions.map((size) => (html` +
    + ${Template({...args, size})} + ${Typography({ + semantics: "heading", + size: "xs", + content: [size], + customClasses: ["chromatic-ignore"], + })} +
    + `))} +
    + `; +}; + +export const AvatarGroup = Variants({ + Template, + stateData: [{ + testHeading: "Not linked", + hasLink: false, + }, { + testHeading: "Disabled", + isDisabled: true, + }, { + testHeading: "Focused", + isFocused: true, + }], + sizeDirection: "row", +}); diff --git a/components/badge/index-base.css b/components/badge/index-base.css new file mode 100644 index 0000000000..e4760bfb9c --- /dev/null +++ b/components/badge/index-base.css @@ -0,0 +1,230 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Badge { + --spectrum-badge-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-badge-line-height: var(--spectrum-line-height-100); + --spectrum-badge-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-badge-label-icon-color: var(--spectrum-white); + --spectrum-badge-background-color-default: var(--spectrum-neutral-subdued-background-color-default); + --spectrum-badge-background-color-accent: var(--spectrum-accent-background-color-default); + --spectrum-badge-background-color-informative: var(--spectrum-informative-background-color-default); + --spectrum-badge-background-color-negative: var(--spectrum-negative-background-color-default); + --spectrum-badge-background-color-positive: var(--spectrum-positive-background-color-default); + --spectrum-badge-background-color-notice: var(--spectrum-notice-background-color-default); + --spectrum-badge-background-color-gray: var(--spectrum-gray-background-color-default); + --spectrum-badge-background-color-red: var(--spectrum-red-background-color-default); + --spectrum-badge-background-color-orange: var(--spectrum-orange-background-color-default); + --spectrum-badge-background-color-yellow: var(--spectrum-yellow-background-color-default); + --spectrum-badge-background-color-chartreuse: var(--spectrum-chartreuse-background-color-default); + --spectrum-badge-background-color-celery: var(--spectrum-celery-background-color-default); + --spectrum-badge-background-color-green: var(--spectrum-green-background-color-default); + --spectrum-badge-background-color-seafoam: var(--spectrum-seafoam-background-color-default); + --spectrum-badge-background-color-cyan: var(--spectrum-cyan-background-color-default); + --spectrum-badge-background-color-blue: var(--spectrum-blue-background-color-default); + --spectrum-badge-background-color-indigo: var(--spectrum-indigo-background-color-default); + --spectrum-badge-background-color-purple: var(--spectrum-purple-background-color-default); + --spectrum-badge-background-color-fuchsia: var(--spectrum-fuchsia-background-color-default); + --spectrum-badge-background-color-magenta: var(--spectrum-magenta-background-color-default); + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-100); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-100); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-100); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-100); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-100); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-100); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-100); +} +.spectrum-Badge--celery, +.spectrum-Badge--chartreuse, +.spectrum-Badge--orange, +.spectrum-Badge--yellow { + --spectrum-badge-label-icon-color: var(--spectrum-black); +} +.spectrum-Badge--blue, +.spectrum-Badge--cyan, +.spectrum-Badge--fuchsia, +.spectrum-Badge--gray, +.spectrum-Badge--green, +.spectrum-Badge--indigo, +.spectrum-Badge--magenta, +.spectrum-Badge--purple, +.spectrum-Badge--red, +.spectrum-Badge--seafoam { + --spectrum-badge-label-icon-color: var(--spectrum-badge-label-icon-color-primary); +} +.spectrum-Badge--sizeS { + --spectrum-badge-height: var(--spectrum-component-height-75); + --spectrum-badge-font-size: var(--spectrum-font-size-75); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-75); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-75); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-75); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-75); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-75); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-75); +} +.spectrum-Badge--sizeL { + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-200); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-200); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-200); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-200); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-200); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-200); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-200); +} +.spectrum-Badge--sizeXL { + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-300); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-300); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-300); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-300); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-300); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-300); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-300); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-300); +} +@media (forced-colors: active) { + .spectrum-Badge { + border-color: CanvasText; + } +} +.spectrum-Badge { + min-block-size: var(--mod-badge-height, var(--spectrum-badge-height)); + inline-size: auto; + display: inline-flex; + vertical-align: middle; + position: relative; + cursor: default; + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; + border-radius: var(--mod-badge-corner-radius, var(--spectrum-badge-corner-radius)); + border: 1px solid transparent; + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge, +.spectrum-Badge--neutral { + background: var(--mod-badge-background-color-default, var(--spectrum-badge-background-color-default)); +} +.spectrum-Badge--accent { + background: var(--mod-badge-background-color-accent, var(--spectrum-badge-background-color-accent)); +} +.spectrum-Badge--informative { + background: var(--mod-badge-background-color-informative, var(--spectrum-badge-background-color-informative)); +} +.spectrum-Badge--negative { + background: var(--mod-badge-background-color-negative, var(--spectrum-badge-background-color-negative)); +} +.spectrum-Badge--positive { + background: var(--mod-badge-background-color-positive, var(--spectrum-badge-background-color-positive)); +} +.spectrum-Badge--notice { + background: var(--mod-badge-background-color-notice, var(--spectrum-badge-background-color-notice)); +} +.spectrum-Badge--gray { + background: var(--mod-badge-background-color-gray, var(--spectrum-badge-background-color-gray)); +} +.spectrum-Badge--red { + background: var(--mod-badge-background-color-red, var(--spectrum-badge-background-color-red)); +} +.spectrum-Badge--orange { + background: var(--mod-badge-background-color-orange, var(--spectrum-badge-background-color-orange)); +} +.spectrum-Badge--yellow { + background: var(--mod-badge-background-color-yellow, var(--spectrum-badge-background-color-yellow)); +} +.spectrum-Badge--chartreuse { + background: var(--mod-badge-background-color-chartreuse, var(--spectrum-badge-background-color-chartreuse)); +} +.spectrum-Badge--celery { + background: var(--mod-badge-background-color-celery, var(--spectrum-badge-background-color-celery)); +} +.spectrum-Badge--green { + background: var(--mod-badge-background-color-green, var(--spectrum-badge-background-color-green)); +} +.spectrum-Badge--seafoam { + background: var(--mod-badge-background-color-seafoam, var(--spectrum-badge-background-color-seafoam)); +} +.spectrum-Badge--cyan { + background: var(--mod-badge-background-color-cyan, var(--spectrum-badge-background-color-cyan)); +} +.spectrum-Badge--blue { + background: var(--mod-badge-background-color-blue, var(--spectrum-badge-background-color-blue)); +} +.spectrum-Badge--indigo { + background: var(--mod-badge-background-color-indigo, var(--spectrum-badge-background-color-indigo)); +} +.spectrum-Badge--purple { + background: var(--mod-badge-background-color-purple, var(--spectrum-badge-background-color-purple)); +} +.spectrum-Badge--fuchsia { + background: var(--mod-badge-background-color-fuchsia, var(--spectrum-badge-background-color-fuchsia)); +} +.spectrum-Badge--magenta { + background: var(--mod-badge-background-color-magenta, var(--spectrum-badge-background-color-magenta)); +} +.spectrum-Badge--fixed-inline-start { + border-start-start-radius: 0; + border-end-start-radius: 0; +} +.spectrum-Badge--fixed-inline-end { + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Badge--fixed-block-start { + border-start-start-radius: 0; + border-start-end-radius: 0; +} +.spectrum-Badge--fixed-block-end { + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Badge-label { + font-size: var(--mod-badge-font-size, var(--spectrum-badge-font-size)); + line-height: var(--mod-badge-line-height, var(--spectrum-badge-line-height)); + padding-inline-end: var(--mod-badge-label-spacing-horizontal, var(--spectrum-badge-label-spacing-horizontal)); + padding-inline-start: var(--mod-badge-label-spacing-horizontal, var(--spectrum-badge-label-spacing-horizontal)); + padding-block-start: var(--mod-badge-label-spacing-vertical-top, var(--spectrum-badge-label-spacing-vertical-top)); + padding-block-end: var(--mod-badge-label-spacing-vertical-bottom, var(--spectrum-badge-label-spacing-vertical-bottom)); + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge-label:lang(ja), +.spectrum-Badge-label:lang(ko), +.spectrum-Badge-label:lang(zh) { + line-height: var(--mod-badge-line-height-cjk, var(--spectrum-badge-line-height-cjk)); +} +.spectrum-Badge-icon + .spectrum-Badge-label { + padding-inline-start: 0; +} +.spectrum-Badge-icon { + block-size: var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + inline-size: var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + flex: 0 0 var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + padding-inline-start: var(--mod-badge-icon-spacing-horizontal, var(--spectrum-badge-icon-spacing-horizontal)); + padding-inline-end: var(--mod-badge-icon-text-spacing, var(--spectrum-badge-icon-text-spacing)); + padding-block-start: var(--mod-badge-icon-spacing-vertical-top, var(--spectrum-badge-icon-spacing-vertical-top)); + padding-block-end: var(--mod-badge-icon-spacing-vertical-top, var(--spectrum-badge-icon-spacing-vertical-top)); + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge-icon--no-label { + padding-inline-start: var(--mod-badge-icon-only-spacing-horizontal, var(--spectrum-badge-icon-only-spacing-horizontal)); + padding-inline-end: var(--mod-badge-icon-only-spacing-horizontal, var(--spectrum-badge-icon-only-spacing-horizontal)); +} +/*# sourceMappingURL=components/badge/index.css.map */ diff --git a/components/badge/index-vars.css b/components/badge/index-vars.css new file mode 100644 index 0000000000..e4760bfb9c --- /dev/null +++ b/components/badge/index-vars.css @@ -0,0 +1,230 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Badge { + --spectrum-badge-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-badge-line-height: var(--spectrum-line-height-100); + --spectrum-badge-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-badge-label-icon-color: var(--spectrum-white); + --spectrum-badge-background-color-default: var(--spectrum-neutral-subdued-background-color-default); + --spectrum-badge-background-color-accent: var(--spectrum-accent-background-color-default); + --spectrum-badge-background-color-informative: var(--spectrum-informative-background-color-default); + --spectrum-badge-background-color-negative: var(--spectrum-negative-background-color-default); + --spectrum-badge-background-color-positive: var(--spectrum-positive-background-color-default); + --spectrum-badge-background-color-notice: var(--spectrum-notice-background-color-default); + --spectrum-badge-background-color-gray: var(--spectrum-gray-background-color-default); + --spectrum-badge-background-color-red: var(--spectrum-red-background-color-default); + --spectrum-badge-background-color-orange: var(--spectrum-orange-background-color-default); + --spectrum-badge-background-color-yellow: var(--spectrum-yellow-background-color-default); + --spectrum-badge-background-color-chartreuse: var(--spectrum-chartreuse-background-color-default); + --spectrum-badge-background-color-celery: var(--spectrum-celery-background-color-default); + --spectrum-badge-background-color-green: var(--spectrum-green-background-color-default); + --spectrum-badge-background-color-seafoam: var(--spectrum-seafoam-background-color-default); + --spectrum-badge-background-color-cyan: var(--spectrum-cyan-background-color-default); + --spectrum-badge-background-color-blue: var(--spectrum-blue-background-color-default); + --spectrum-badge-background-color-indigo: var(--spectrum-indigo-background-color-default); + --spectrum-badge-background-color-purple: var(--spectrum-purple-background-color-default); + --spectrum-badge-background-color-fuchsia: var(--spectrum-fuchsia-background-color-default); + --spectrum-badge-background-color-magenta: var(--spectrum-magenta-background-color-default); + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-100); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-100); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-100); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-100); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-100); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-100); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-100); +} +.spectrum-Badge--celery, +.spectrum-Badge--chartreuse, +.spectrum-Badge--orange, +.spectrum-Badge--yellow { + --spectrum-badge-label-icon-color: var(--spectrum-black); +} +.spectrum-Badge--blue, +.spectrum-Badge--cyan, +.spectrum-Badge--fuchsia, +.spectrum-Badge--gray, +.spectrum-Badge--green, +.spectrum-Badge--indigo, +.spectrum-Badge--magenta, +.spectrum-Badge--purple, +.spectrum-Badge--red, +.spectrum-Badge--seafoam { + --spectrum-badge-label-icon-color: var(--spectrum-badge-label-icon-color-primary); +} +.spectrum-Badge--sizeS { + --spectrum-badge-height: var(--spectrum-component-height-75); + --spectrum-badge-font-size: var(--spectrum-font-size-75); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-75); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-75); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-75); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-75); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-75); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-75); +} +.spectrum-Badge--sizeL { + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-200); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-200); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-200); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-200); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-200); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-200); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-200); +} +.spectrum-Badge--sizeXL { + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-300); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-300); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-300); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-300); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-300); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-300); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-300); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-300); +} +@media (forced-colors: active) { + .spectrum-Badge { + border-color: CanvasText; + } +} +.spectrum-Badge { + min-block-size: var(--mod-badge-height, var(--spectrum-badge-height)); + inline-size: auto; + display: inline-flex; + vertical-align: middle; + position: relative; + cursor: default; + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; + border-radius: var(--mod-badge-corner-radius, var(--spectrum-badge-corner-radius)); + border: 1px solid transparent; + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge, +.spectrum-Badge--neutral { + background: var(--mod-badge-background-color-default, var(--spectrum-badge-background-color-default)); +} +.spectrum-Badge--accent { + background: var(--mod-badge-background-color-accent, var(--spectrum-badge-background-color-accent)); +} +.spectrum-Badge--informative { + background: var(--mod-badge-background-color-informative, var(--spectrum-badge-background-color-informative)); +} +.spectrum-Badge--negative { + background: var(--mod-badge-background-color-negative, var(--spectrum-badge-background-color-negative)); +} +.spectrum-Badge--positive { + background: var(--mod-badge-background-color-positive, var(--spectrum-badge-background-color-positive)); +} +.spectrum-Badge--notice { + background: var(--mod-badge-background-color-notice, var(--spectrum-badge-background-color-notice)); +} +.spectrum-Badge--gray { + background: var(--mod-badge-background-color-gray, var(--spectrum-badge-background-color-gray)); +} +.spectrum-Badge--red { + background: var(--mod-badge-background-color-red, var(--spectrum-badge-background-color-red)); +} +.spectrum-Badge--orange { + background: var(--mod-badge-background-color-orange, var(--spectrum-badge-background-color-orange)); +} +.spectrum-Badge--yellow { + background: var(--mod-badge-background-color-yellow, var(--spectrum-badge-background-color-yellow)); +} +.spectrum-Badge--chartreuse { + background: var(--mod-badge-background-color-chartreuse, var(--spectrum-badge-background-color-chartreuse)); +} +.spectrum-Badge--celery { + background: var(--mod-badge-background-color-celery, var(--spectrum-badge-background-color-celery)); +} +.spectrum-Badge--green { + background: var(--mod-badge-background-color-green, var(--spectrum-badge-background-color-green)); +} +.spectrum-Badge--seafoam { + background: var(--mod-badge-background-color-seafoam, var(--spectrum-badge-background-color-seafoam)); +} +.spectrum-Badge--cyan { + background: var(--mod-badge-background-color-cyan, var(--spectrum-badge-background-color-cyan)); +} +.spectrum-Badge--blue { + background: var(--mod-badge-background-color-blue, var(--spectrum-badge-background-color-blue)); +} +.spectrum-Badge--indigo { + background: var(--mod-badge-background-color-indigo, var(--spectrum-badge-background-color-indigo)); +} +.spectrum-Badge--purple { + background: var(--mod-badge-background-color-purple, var(--spectrum-badge-background-color-purple)); +} +.spectrum-Badge--fuchsia { + background: var(--mod-badge-background-color-fuchsia, var(--spectrum-badge-background-color-fuchsia)); +} +.spectrum-Badge--magenta { + background: var(--mod-badge-background-color-magenta, var(--spectrum-badge-background-color-magenta)); +} +.spectrum-Badge--fixed-inline-start { + border-start-start-radius: 0; + border-end-start-radius: 0; +} +.spectrum-Badge--fixed-inline-end { + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Badge--fixed-block-start { + border-start-start-radius: 0; + border-start-end-radius: 0; +} +.spectrum-Badge--fixed-block-end { + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Badge-label { + font-size: var(--mod-badge-font-size, var(--spectrum-badge-font-size)); + line-height: var(--mod-badge-line-height, var(--spectrum-badge-line-height)); + padding-inline-end: var(--mod-badge-label-spacing-horizontal, var(--spectrum-badge-label-spacing-horizontal)); + padding-inline-start: var(--mod-badge-label-spacing-horizontal, var(--spectrum-badge-label-spacing-horizontal)); + padding-block-start: var(--mod-badge-label-spacing-vertical-top, var(--spectrum-badge-label-spacing-vertical-top)); + padding-block-end: var(--mod-badge-label-spacing-vertical-bottom, var(--spectrum-badge-label-spacing-vertical-bottom)); + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge-label:lang(ja), +.spectrum-Badge-label:lang(ko), +.spectrum-Badge-label:lang(zh) { + line-height: var(--mod-badge-line-height-cjk, var(--spectrum-badge-line-height-cjk)); +} +.spectrum-Badge-icon + .spectrum-Badge-label { + padding-inline-start: 0; +} +.spectrum-Badge-icon { + block-size: var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + inline-size: var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + flex: 0 0 var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + padding-inline-start: var(--mod-badge-icon-spacing-horizontal, var(--spectrum-badge-icon-spacing-horizontal)); + padding-inline-end: var(--mod-badge-icon-text-spacing, var(--spectrum-badge-icon-text-spacing)); + padding-block-start: var(--mod-badge-icon-spacing-vertical-top, var(--spectrum-badge-icon-spacing-vertical-top)); + padding-block-end: var(--mod-badge-icon-spacing-vertical-top, var(--spectrum-badge-icon-spacing-vertical-top)); + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge-icon--no-label { + padding-inline-start: var(--mod-badge-icon-only-spacing-horizontal, var(--spectrum-badge-icon-only-spacing-horizontal)); + padding-inline-end: var(--mod-badge-icon-only-spacing-horizontal, var(--spectrum-badge-icon-only-spacing-horizontal)); +} +/*# sourceMappingURL=components/badge/index.css.map */ diff --git a/components/badge/index.css b/components/badge/index.css new file mode 100644 index 0000000000..e4760bfb9c --- /dev/null +++ b/components/badge/index.css @@ -0,0 +1,230 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Badge { + --spectrum-badge-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-badge-line-height: var(--spectrum-line-height-100); + --spectrum-badge-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-badge-label-icon-color: var(--spectrum-white); + --spectrum-badge-background-color-default: var(--spectrum-neutral-subdued-background-color-default); + --spectrum-badge-background-color-accent: var(--spectrum-accent-background-color-default); + --spectrum-badge-background-color-informative: var(--spectrum-informative-background-color-default); + --spectrum-badge-background-color-negative: var(--spectrum-negative-background-color-default); + --spectrum-badge-background-color-positive: var(--spectrum-positive-background-color-default); + --spectrum-badge-background-color-notice: var(--spectrum-notice-background-color-default); + --spectrum-badge-background-color-gray: var(--spectrum-gray-background-color-default); + --spectrum-badge-background-color-red: var(--spectrum-red-background-color-default); + --spectrum-badge-background-color-orange: var(--spectrum-orange-background-color-default); + --spectrum-badge-background-color-yellow: var(--spectrum-yellow-background-color-default); + --spectrum-badge-background-color-chartreuse: var(--spectrum-chartreuse-background-color-default); + --spectrum-badge-background-color-celery: var(--spectrum-celery-background-color-default); + --spectrum-badge-background-color-green: var(--spectrum-green-background-color-default); + --spectrum-badge-background-color-seafoam: var(--spectrum-seafoam-background-color-default); + --spectrum-badge-background-color-cyan: var(--spectrum-cyan-background-color-default); + --spectrum-badge-background-color-blue: var(--spectrum-blue-background-color-default); + --spectrum-badge-background-color-indigo: var(--spectrum-indigo-background-color-default); + --spectrum-badge-background-color-purple: var(--spectrum-purple-background-color-default); + --spectrum-badge-background-color-fuchsia: var(--spectrum-fuchsia-background-color-default); + --spectrum-badge-background-color-magenta: var(--spectrum-magenta-background-color-default); + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-100); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-100); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-100); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-100); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-100); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-100); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-100); +} +.spectrum-Badge--celery, +.spectrum-Badge--chartreuse, +.spectrum-Badge--orange, +.spectrum-Badge--yellow { + --spectrum-badge-label-icon-color: var(--spectrum-black); +} +.spectrum-Badge--blue, +.spectrum-Badge--cyan, +.spectrum-Badge--fuchsia, +.spectrum-Badge--gray, +.spectrum-Badge--green, +.spectrum-Badge--indigo, +.spectrum-Badge--magenta, +.spectrum-Badge--purple, +.spectrum-Badge--red, +.spectrum-Badge--seafoam { + --spectrum-badge-label-icon-color: var(--spectrum-badge-label-icon-color-primary); +} +.spectrum-Badge--sizeS { + --spectrum-badge-height: var(--spectrum-component-height-75); + --spectrum-badge-font-size: var(--spectrum-font-size-75); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-75); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-75); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-75); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-75); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-75); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-75); +} +.spectrum-Badge--sizeL { + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-200); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-200); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-200); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-200); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-200); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-200); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-200); +} +.spectrum-Badge--sizeXL { + --spectrum-badge-height: var(--spectrum-component-height-100); + --spectrum-badge-font-size: var(--spectrum-font-size-300); + --spectrum-badge-label-spacing-vertical-top: var(--spectrum-component-top-to-text-300); + --spectrum-badge-label-spacing-vertical-bottom: var(--spectrum-component-bottom-to-text-300); + --spectrum-badge-label-spacing-horizontal: var(--spectrum-component-edge-to-text-300); + --spectrum-badge-workflow-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-badge-icon-text-spacing: var(--spectrum-text-to-visual-300); + --spectrum-badge-icon-spacing-horizontal: var(--spectrum-component-edge-to-visual-300); + --spectrum-badge-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-300); + --spectrum-badge-icon-only-spacing-horizontal: var(--spectrum-component-edge-to-visual-only-300); +} +@media (forced-colors: active) { + .spectrum-Badge { + border-color: CanvasText; + } +} +.spectrum-Badge { + min-block-size: var(--mod-badge-height, var(--spectrum-badge-height)); + inline-size: auto; + display: inline-flex; + vertical-align: middle; + position: relative; + cursor: default; + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; + border-radius: var(--mod-badge-corner-radius, var(--spectrum-badge-corner-radius)); + border: 1px solid transparent; + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge, +.spectrum-Badge--neutral { + background: var(--mod-badge-background-color-default, var(--spectrum-badge-background-color-default)); +} +.spectrum-Badge--accent { + background: var(--mod-badge-background-color-accent, var(--spectrum-badge-background-color-accent)); +} +.spectrum-Badge--informative { + background: var(--mod-badge-background-color-informative, var(--spectrum-badge-background-color-informative)); +} +.spectrum-Badge--negative { + background: var(--mod-badge-background-color-negative, var(--spectrum-badge-background-color-negative)); +} +.spectrum-Badge--positive { + background: var(--mod-badge-background-color-positive, var(--spectrum-badge-background-color-positive)); +} +.spectrum-Badge--notice { + background: var(--mod-badge-background-color-notice, var(--spectrum-badge-background-color-notice)); +} +.spectrum-Badge--gray { + background: var(--mod-badge-background-color-gray, var(--spectrum-badge-background-color-gray)); +} +.spectrum-Badge--red { + background: var(--mod-badge-background-color-red, var(--spectrum-badge-background-color-red)); +} +.spectrum-Badge--orange { + background: var(--mod-badge-background-color-orange, var(--spectrum-badge-background-color-orange)); +} +.spectrum-Badge--yellow { + background: var(--mod-badge-background-color-yellow, var(--spectrum-badge-background-color-yellow)); +} +.spectrum-Badge--chartreuse { + background: var(--mod-badge-background-color-chartreuse, var(--spectrum-badge-background-color-chartreuse)); +} +.spectrum-Badge--celery { + background: var(--mod-badge-background-color-celery, var(--spectrum-badge-background-color-celery)); +} +.spectrum-Badge--green { + background: var(--mod-badge-background-color-green, var(--spectrum-badge-background-color-green)); +} +.spectrum-Badge--seafoam { + background: var(--mod-badge-background-color-seafoam, var(--spectrum-badge-background-color-seafoam)); +} +.spectrum-Badge--cyan { + background: var(--mod-badge-background-color-cyan, var(--spectrum-badge-background-color-cyan)); +} +.spectrum-Badge--blue { + background: var(--mod-badge-background-color-blue, var(--spectrum-badge-background-color-blue)); +} +.spectrum-Badge--indigo { + background: var(--mod-badge-background-color-indigo, var(--spectrum-badge-background-color-indigo)); +} +.spectrum-Badge--purple { + background: var(--mod-badge-background-color-purple, var(--spectrum-badge-background-color-purple)); +} +.spectrum-Badge--fuchsia { + background: var(--mod-badge-background-color-fuchsia, var(--spectrum-badge-background-color-fuchsia)); +} +.spectrum-Badge--magenta { + background: var(--mod-badge-background-color-magenta, var(--spectrum-badge-background-color-magenta)); +} +.spectrum-Badge--fixed-inline-start { + border-start-start-radius: 0; + border-end-start-radius: 0; +} +.spectrum-Badge--fixed-inline-end { + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Badge--fixed-block-start { + border-start-start-radius: 0; + border-start-end-radius: 0; +} +.spectrum-Badge--fixed-block-end { + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Badge-label { + font-size: var(--mod-badge-font-size, var(--spectrum-badge-font-size)); + line-height: var(--mod-badge-line-height, var(--spectrum-badge-line-height)); + padding-inline-end: var(--mod-badge-label-spacing-horizontal, var(--spectrum-badge-label-spacing-horizontal)); + padding-inline-start: var(--mod-badge-label-spacing-horizontal, var(--spectrum-badge-label-spacing-horizontal)); + padding-block-start: var(--mod-badge-label-spacing-vertical-top, var(--spectrum-badge-label-spacing-vertical-top)); + padding-block-end: var(--mod-badge-label-spacing-vertical-bottom, var(--spectrum-badge-label-spacing-vertical-bottom)); + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge-label:lang(ja), +.spectrum-Badge-label:lang(ko), +.spectrum-Badge-label:lang(zh) { + line-height: var(--mod-badge-line-height-cjk, var(--spectrum-badge-line-height-cjk)); +} +.spectrum-Badge-icon + .spectrum-Badge-label { + padding-inline-start: 0; +} +.spectrum-Badge-icon { + block-size: var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + inline-size: var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + flex: 0 0 var(--mod-badge-workflow-icon-size, var(--spectrum-badge-workflow-icon-size)); + padding-inline-start: var(--mod-badge-icon-spacing-horizontal, var(--spectrum-badge-icon-spacing-horizontal)); + padding-inline-end: var(--mod-badge-icon-text-spacing, var(--spectrum-badge-icon-text-spacing)); + padding-block-start: var(--mod-badge-icon-spacing-vertical-top, var(--spectrum-badge-icon-spacing-vertical-top)); + padding-block-end: var(--mod-badge-icon-spacing-vertical-top, var(--spectrum-badge-icon-spacing-vertical-top)); + color: var(--mod-badge-label-icon-color, var(--spectrum-badge-label-icon-color)); +} +.spectrum-Badge-icon--no-label { + padding-inline-start: var(--mod-badge-icon-only-spacing-horizontal, var(--spectrum-badge-icon-only-spacing-horizontal)); + padding-inline-end: var(--mod-badge-icon-only-spacing-horizontal, var(--spectrum-badge-icon-only-spacing-horizontal)); +} +/*# sourceMappingURL=components/badge/index.css.map */ diff --git a/components/badge/metadata.json b/components/badge/metadata.json new file mode 100644 index 0000000000..6acd24bc64 --- /dev/null +++ b/components/badge/metadata.json @@ -0,0 +1,177 @@ +{ + "selectors": [ + ".spectrum-Badge", + ".spectrum-Badge,\n.spectrum-Badge--neutral", + ".spectrum-Badge--accent", + ".spectrum-Badge--blue", + ".spectrum-Badge--blue,\n.spectrum-Badge--cyan,\n.spectrum-Badge--fuchsia,\n.spectrum-Badge--gray,\n.spectrum-Badge--green,\n.spectrum-Badge--indigo,\n.spectrum-Badge--magenta,\n.spectrum-Badge--purple,\n.spectrum-Badge--red,\n.spectrum-Badge--seafoam", + ".spectrum-Badge--celery", + ".spectrum-Badge--celery,\n.spectrum-Badge--chartreuse,\n.spectrum-Badge--orange,\n.spectrum-Badge--yellow", + ".spectrum-Badge--chartreuse", + ".spectrum-Badge--cyan", + ".spectrum-Badge--fixed-block-end", + ".spectrum-Badge--fixed-block-start", + ".spectrum-Badge--fixed-inline-end", + ".spectrum-Badge--fixed-inline-start", + ".spectrum-Badge--fuchsia", + ".spectrum-Badge--gray", + ".spectrum-Badge--green", + ".spectrum-Badge--indigo", + ".spectrum-Badge--informative", + ".spectrum-Badge--magenta", + ".spectrum-Badge--negative", + ".spectrum-Badge--notice", + ".spectrum-Badge--orange", + ".spectrum-Badge--positive", + ".spectrum-Badge--purple", + ".spectrum-Badge--red", + ".spectrum-Badge--seafoam", + ".spectrum-Badge--sizeL", + ".spectrum-Badge--sizeS", + ".spectrum-Badge--sizeXL", + ".spectrum-Badge--yellow", + ".spectrum-Badge-icon", + ".spectrum-Badge-icon + .spectrum-Badge-label", + ".spectrum-Badge-icon--no-label", + ".spectrum-Badge-label", + ".spectrum-Badge-label:lang(ja),\n.spectrum-Badge-label:lang(ko),\n.spectrum-Badge-label:lang(zh)" + ], + "mods": [ + "--mod-badge-background-color-accent", + "--mod-badge-background-color-blue", + "--mod-badge-background-color-celery", + "--mod-badge-background-color-chartreuse", + "--mod-badge-background-color-cyan", + "--mod-badge-background-color-default", + "--mod-badge-background-color-fuchsia", + "--mod-badge-background-color-gray", + "--mod-badge-background-color-green", + "--mod-badge-background-color-indigo", + "--mod-badge-background-color-informative", + "--mod-badge-background-color-magenta", + "--mod-badge-background-color-negative", + "--mod-badge-background-color-notice", + "--mod-badge-background-color-orange", + "--mod-badge-background-color-positive", + "--mod-badge-background-color-purple", + "--mod-badge-background-color-red", + "--mod-badge-background-color-seafoam", + "--mod-badge-background-color-yellow", + "--mod-badge-corner-radius", + "--mod-badge-font-size", + "--mod-badge-height", + "--mod-badge-icon-only-spacing-horizontal", + "--mod-badge-icon-spacing-horizontal", + "--mod-badge-icon-spacing-vertical-top", + "--mod-badge-icon-text-spacing", + "--mod-badge-label-icon-color", + "--mod-badge-label-spacing-horizontal", + "--mod-badge-label-spacing-vertical-bottom", + "--mod-badge-label-spacing-vertical-top", + "--mod-badge-line-height", + "--mod-badge-line-height-cjk", + "--mod-badge-workflow-icon-size" + ], + "spectrum": [ + "--spectrum-accent-background-color-default", + "--spectrum-badge-background-color-accent", + "--spectrum-badge-background-color-blue", + "--spectrum-badge-background-color-celery", + "--spectrum-badge-background-color-chartreuse", + "--spectrum-badge-background-color-cyan", + "--spectrum-badge-background-color-default", + "--spectrum-badge-background-color-fuchsia", + "--spectrum-badge-background-color-gray", + "--spectrum-badge-background-color-green", + "--spectrum-badge-background-color-indigo", + "--spectrum-badge-background-color-informative", + "--spectrum-badge-background-color-magenta", + "--spectrum-badge-background-color-negative", + "--spectrum-badge-background-color-notice", + "--spectrum-badge-background-color-orange", + "--spectrum-badge-background-color-positive", + "--spectrum-badge-background-color-purple", + "--spectrum-badge-background-color-red", + "--spectrum-badge-background-color-seafoam", + "--spectrum-badge-background-color-yellow", + "--spectrum-badge-corner-radius", + "--spectrum-badge-font-size", + "--spectrum-badge-height", + "--spectrum-badge-icon-only-spacing-horizontal", + "--spectrum-badge-icon-spacing-horizontal", + "--spectrum-badge-icon-spacing-vertical-top", + "--spectrum-badge-icon-text-spacing", + "--spectrum-badge-label-icon-color", + "--spectrum-badge-label-icon-color-primary", + "--spectrum-badge-label-spacing-horizontal", + "--spectrum-badge-label-spacing-vertical-bottom", + "--spectrum-badge-label-spacing-vertical-top", + "--spectrum-badge-line-height", + "--spectrum-badge-line-height-cjk", + "--spectrum-badge-workflow-icon-size", + "--spectrum-black", + "--spectrum-blue-background-color-default", + "--spectrum-celery-background-color-default", + "--spectrum-chartreuse-background-color-default", + "--spectrum-cjk-line-height-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-300", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-edge-to-visual-100", + "--spectrum-component-edge-to-visual-200", + "--spectrum-component-edge-to-visual-300", + "--spectrum-component-edge-to-visual-75", + "--spectrum-component-edge-to-visual-only-100", + "--spectrum-component-edge-to-visual-only-200", + "--spectrum-component-edge-to-visual-only-300", + "--spectrum-component-edge-to-visual-only-75", + "--spectrum-component-height-100", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-component-top-to-workflow-icon-100", + "--spectrum-component-top-to-workflow-icon-200", + "--spectrum-component-top-to-workflow-icon-300", + "--spectrum-component-top-to-workflow-icon-75", + "--spectrum-corner-radius-100", + "--spectrum-cyan-background-color-default", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-fuchsia-background-color-default", + "--spectrum-gray-background-color-default", + "--spectrum-green-background-color-default", + "--spectrum-indigo-background-color-default", + "--spectrum-informative-background-color-default", + "--spectrum-line-height-100", + "--spectrum-magenta-background-color-default", + "--spectrum-negative-background-color-default", + "--spectrum-neutral-subdued-background-color-default", + "--spectrum-notice-background-color-default", + "--spectrum-orange-background-color-default", + "--spectrum-positive-background-color-default", + "--spectrum-purple-background-color-default", + "--spectrum-red-background-color-default", + "--spectrum-seafoam-background-color-default", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-75", + "--spectrum-white", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-75", + "--spectrum-yellow-background-color-default" + ], + "system": [], + "a11y": [] +} diff --git a/components/badge/package.json b/components/badge/package.json new file mode 100644 index 0000000000..f9cb6d361a --- /dev/null +++ b/components/badge/package.json @@ -0,0 +1,46 @@ +{ + "name": "@spectrum-css/badge", + "version": "4.1.1", + "description": "The Spectrum CSS badge component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/badge", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/badge" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/badge/template.js b/components/badge/template.js new file mode 100644 index 0000000000..17870bae7a --- /dev/null +++ b/components/badge/template.js @@ -0,0 +1,111 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; +import { capitalize } from "lodash-es"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Badge", + size = "m", + label, + iconName, + variant = "neutral", + fixed, + customStyles = {}, + customClasses = [], + id, +}) => html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + > + ${when(iconName, () => + Icon({ + iconName, + customClasses: [ + ...(typeof label === "undefined" + ? [`${rootClass}-icon--no-label`] + : []), + `${rootClass}-icon`, + ], + }) + )} + ${when(label, () => html`
    ${label}
    `)} +
    +`; + +const Badges = (args, context) => { + return html`${[ + { + iconName: undefined, + }, + { + label: undefined, + }, + { + label: "24 days left in trial", + customStyles: { "max-inline-size": "120px" }, + }, + ].map((overrides) => Template({ ...args, ...overrides }, context))} `; +}; + +export const BadgeGroup = Variants({ + Template: Badges, + testData: [ + ...["neutral", "accent", "informative", "positive", "negative"].map((variant) => + ({ + testHeading: capitalize(variant), + variant, + }) + ), + ...["gray", "red", "orange", "yellow", "chartreuse", "celery", "green", "seafoam", "cyan", "blue", "indigo", "purple", "fuchsia", "magenta"].map((variant) => + ({ + testHeading: capitalize(variant), + variant, + }) + ), + ...["none", "fixed-inline-start", "fixed-inline-end", "fixed-block-start", "fixed-block-end"].map((fixed) => + ({ + testHeading: `Layout ${fixed}`, + size: "xl", + variant: "informative", + fixed, + }) + ), + ], +}); + +export const PreviewSets = (variants, args, context) => html` +
    + ${variants.map((variant) => html` +
    + ${Template({ ...args, variant, label: capitalize(variant) }, context)} +
    + `)} +
    +`; diff --git a/components/breadcrumb/index-base.css b/components/breadcrumb/index-base.css new file mode 100644 index 0000000000..257ffe879b --- /dev/null +++ b/components/breadcrumb/index-base.css @@ -0,0 +1,247 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Breadcrumbs { + --spectrum-breadcrumbs-block-size: var(--spectrum-breadcrumbs-height); + --spectrum-breadcrumbs-block-size-compact: var(--spectrum-breadcrumbs-height-compact); + --spectrum-breadcrumbs-block-size-multiline: var(--spectrum-breadcrumbs-height-multiline); + --spectrum-breadcrumbs-line-height: var(--spectrum-line-height-100); + --spectrum-breadcrumbs-font-size: var(--spectrum-font-size-200); + --spectrum-breadcrumbs-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-current: var(--spectrum-font-size-200); + --spectrum-breadcrumbs-font-family-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-font-size-compact: var(--spectrum-font-size-100); + --spectrum-breadcrumbs-font-family-compact: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-compact: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-compact-current: var(--spectrum-font-size-100); + --spectrum-breadcrumbs-font-family-compact-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-compact-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-font-size-multiline: var(--spectrum-font-size-75); + --spectrum-breadcrumbs-font-family-multiline: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-multiline: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-multiline-current: var(--spectrum-font-size-300); + --spectrum-breadcrumbs-font-family-multiline-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-multiline-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-text-decoration-thickness: var(--spectrum-text-underline-thickness); + --spectrum-breadcrumbs-text-decoration-gap: var(--spectrum-text-underline-gap); + --spectrum-breadcrumbs-separator-spacing-inline: var(--spectrum-text-to-visual-100); + --spectrum-breadcrumbs-text-spacing-block-start: var(--spectrum-breadcrumbs-top-to-text); + --spectrum-breadcrumbs-text-spacing-block-end: var(--spectrum-breadcrumbs-bottom-to-text); + --spectrum-breadcrumbs-icon-spacing-block: var(--spectrum-breadcrumbs-top-to-separator-icon); + --spectrum-breadcrumbs-text-spacing-block-start-compact: var(--spectrum-breadcrumbs-top-to-text-compact); + --spectrum-breadcrumbs-text-spacing-block-end-compact: var(--spectrum-breadcrumbs-bottom-to-text-compact); + --spectrum-breadcrumbs-icon-spacing-block-compact: var(--spectrum-breadcrumbs-top-to-separator-icon-compact); + --spectrum-breadcrumbs-text-spacing-block-start-multiline: var(--spectrum-breadcrumbs-top-to-text-multiline); + --spectrum-breadcrumbs-text-spacing-block-end-multiline: var(--spectrum-breadcrumbs-bottom-to-text-multiline); + --spectrum-breadcrumbs-text-spacing-block-between-multiline: var(--spectrum-breadcrumbs-top-text-to-bottom-text); + --spectrum-breadcrumbs-icon-spacing-block-start-multiline: var(--spectrum-breadcrumbs-top-to-separator-icon-multiline); + --spectrum-breadcrumbs-icon-spacing-block-between-multiline: var(--spectrum-breadcrumbs-separator-icon-to-bottom-text-multiline); + --spectrum-breadcrumbs-inline-start: var(--spectrum-breadcrumbs-start-edge-to-text); + --spectrum-breadcrumbs-inline-end: var(--spectrum-breadcrumbs-end-edge-to-text); + --spectrum-breadcrumbs-action-button-spacing-inline: var(--spectrum-breadcrumbs-truncated-menu-to-separator-icon); + --spectrum-breadcrumbs-action-button-spacing-block: var(--spectrum-breadcrumbs-top-to-truncated-menu); + --spectrum-breadcrumbs-action-button-spacing-block-compact: var(--spectrum-breadcrumbs-top-to-truncated-menu-compact); + --spectrum-breadcrumbs-action-button-spacing-inline-start: var(--spectrum-breadcrumbs-start-edge-to-truncated-menu); + --spectrum-breadcrumbs-action-button-spacing-block-multiline: var(--spectrum-breadcrumbs-top-to-truncated-menu-compact); + --spectrum-breadcrumbs-action-button-spacing-block-between-multiline: var(--spectrum-breadcrumbs-truncated-menu-to-bottom-text); + --spectrum-breadcrumbs-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-breadcrumbs-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-breadcrumbs-item-link-border-radius: var(--spectrum-corner-radius-100); + --spectrum-breadcrumbs-text-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-breadcrumbs-text-color-current: var(--spectrum-neutral-content-color-default); + --spectrum-breadcrumbs-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-breadcrumbs-separator-color: var(--spectrum-neutral-content-color-default); + --spectrum-breadcrumbs-action-button-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-breadcrumbs-action-button-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-breadcrumbs-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +@media (forced-colors: active) { + .spectrum-Breadcrumbs { + --highcontrast-breadcrumbs-text-color: LinkText; + --highcontrast-breadcrumbs-text-color-current: CanvasText; + --highcontrast-breadcrumbs-text-color-disabled: GrayText; + --highcontrast-breadcrumbs-separator-color: CanvasText; + --highcontrast-breadcrumbs-action-button-color: LinkText; + --highcontrast-breadcrumbs-action-button-color-disabled: GrayText; + --highcontrast-breadcrumbs-focus-indicator-color: CanvasText; + } +} +.spectrum-Breadcrumbs { + list-style-type: none; + margin: 0; + padding-inline-start: var(--mod-breadcrumbs-inline-start, var(--spectrum-breadcrumbs-inline-start)); + padding-inline-end: var(--mod-breadcrumbs-inline-end, var(--spectrum-breadcrumbs-inline-end)); + display: flex; + flex-flow: row nowrap; + align-items: center; + justify-content: flex-start; + flex: 1 0 0%; + block-size: var(--mod-breadcrumbs-block-size, var(--spectrum-breadcrumbs-block-size)); +} +.spectrum-Breadcrumbs--compact { + block-size: var(--mod-breadcrumbs-block-size-compact, var(--spectrum-breadcrumbs-block-size-compact)); +} +.spectrum-Breadcrumbs--multiline { + block-size: var(--mod-breadcrumbs-block-size-multiline, var(--spectrum-breadcrumbs-block-size-multiline)); + flex-wrap: wrap; + align-content: center; +} +.spectrum-Breadcrumbs-itemSeparator { + position: relative; + margin-block: var(--mod-breadcrumbs-icon-spacing-block, var(--spectrum-breadcrumbs-icon-spacing-block)); + margin-inline: var(--mod-breadcrumbs-separator-spacing-inline, var(--spectrum-breadcrumbs-separator-spacing-inline)); + opacity: 1; + color: var(--highcontrast-breadcrumbs-separator-color, var(--mod-breadcrumbs-separator-color, var(--spectrum-breadcrumbs-separator-color))); +} +.spectrum-Breadcrumbs-itemSeparator:dir(rtl), +[dir="rtl"] .spectrum-Breadcrumbs-itemSeparator { + transform: scaleX(-1); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemSeparator { + margin-block: var(--mod-breadcrumbs-icon-spacing-block-compact, var(--spectrum-breadcrumbs-icon-spacing-block-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemSeparator { + margin-block-start: var(--mod-breadcrumbs-icon-spacing-block-start-multiline, var(--spectrum-breadcrumbs-icon-spacing-block-start-multiline)); + margin-block-end: var(--mod-breadcrumbs-icon-spacing-block-between-multiline, var(--spectrum-breadcrumbs-icon-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-item { + box-sizing: border-box; + position: relative; + display: inline-flex; + white-space: nowrap; + font-family: var(--mod-breadcrumbs-font-family, var(--spectrum-breadcrumbs-font-family)); + font-size: var(--mod-breadcrumbs-font-size, var(--spectrum-breadcrumbs-font-size)); + font-weight: var(--mod-breadcrumbs-font-weight, var(--spectrum-breadcrumbs-font-weight)); + line-height: var(--mod-breadcrumbs-line-height, var(--spectrum-breadcrumbs-line-height)); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item { + font-family: var(--mod-breadcrumbs-font-family-compact, var(--spectrum-breadcrumbs-font-family-compact)); + font-size: var(--mod-breadcrumbs-font-size-compact, var(--spectrum-breadcrumbs-font-size-compact)); + font-weight: var(--mod-breadcrumbs-font-weight-compact, var(--spectrum-breadcrumbs-font-weight-compact)); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-block: var(--mod-breadcrumbs-action-button-spacing-block-compact, var(--spectrum-breadcrumbs-action-button-spacing-block-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item { + font-family: var(--mod-breadcrumbs-font-family-multiline, var(--spectrum-breadcrumbs-font-family-multiline)); + font-size: var(--mod-breadcrumbs-font-size-multiline, var(--spectrum-breadcrumbs-font-size-multiline)); + font-weight: var(--mod-breadcrumbs-font-weight-multiline, var(--spectrum-breadcrumbs-font-weight-multiline)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type { + block-size: auto; + inline-size: 100%; +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-block-start: var(--mod-breadcrumbs-action-button-spacing-block-multiline, var(--spectrum-breadcrumbs-action-button-spacing-block-multiline)); + margin-block-end: var(--mod-breadcrumbs-action-button-spacing-block-between-multiline, var(--spectrum-breadcrumbs-action-button-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-current, var(--spectrum-breadcrumbs-font-family-current)); + font-size: var(--mod-breadcrumbs-font-size-current, var(--spectrum-breadcrumbs-font-size-current)); + font-weight: var(--mod-breadcrumbs-font-weight-current, var(--spectrum-breadcrumbs-font-weight-current)); +} +.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemSeparator { + display: none; +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-compact-current, var(--spectrum-breadcrumbs-font-family-compact-current)); + font-size: var(--mod-breadcrumbs-font-size-compact-current, var(--spectrum-breadcrumbs-font-size-compact-current)); + font-weight: var(--mod-breadcrumbs-font-weight-compact-current, var(--spectrum-breadcrumbs-font-weight-compact-current)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-multiline-current, var(--spectrum-breadcrumbs-font-family-multiline-current)); + font-size: var(--mod-breadcrumbs-font-size-multiline-current, var(--spectrum-breadcrumbs-font-size-multiline-current)); + font-weight: var(--mod-breadcrumbs-font-weight-multiline-current, var(--spectrum-breadcrumbs-font-weight-multiline-current)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink { + margin-block-start: 0; + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end-multiline, var(--spectrum-breadcrumbs-text-spacing-block-end-multiline)); +} +.spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-inline: var(--mod-breadcrumbs-action-button-spacing-inline, var(--spectrum-breadcrumbs-action-button-spacing-inline)); + margin-block: var(--mod-breadcrumbs-action-button-spacing-block, var(--spectrum-breadcrumbs-action-button-spacing-block)); + color: var(--highcontrast-breadcrumbs-action-button-color, var(--mod-breadcrumbs-action-button-color, var(--spectrum-breadcrumbs-action-button-color))); +} +.spectrum-Breadcrumbs-item > .spectrum-ActionButton:disabled { + color: var(--highcontrast-breadcrumbs-action-button-color-disabled, var(--mod-breadcrumbs-action-button-color-disabled, var(--spectrum-breadcrumbs-action-button-color-disabled))); +} +.spectrum-Breadcrumbs-item:first-of-type > .spectrum-ActionButton { + margin-inline-start: var(--mod-breadcrumbs-action-button-spacing-inline-start, var(--spectrum-breadcrumbs-action-button-spacing-inline-start)); +} +.spectrum-Breadcrumbs-itemLink { + cursor: default; + position: relative; + box-sizing: border-box; + display: block; + border-radius: var(--mod-breadcrumbs-item-link-border-radius, var(--spectrum-breadcrumbs-item-link-border-radius)); + outline: none; + -webkit-text-decoration: none; + text-decoration: none; + color: var(--highcontrast-breadcrumbs-text-color, var(--mod-breadcrumbs-text-color, var(--spectrum-breadcrumbs-text-color))); + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start, var(--spectrum-breadcrumbs-text-spacing-block-start)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end, var(--spectrum-breadcrumbs-text-spacing-block-end)); +} +.spectrum-Breadcrumbs-itemLink.is-disabled, +.spectrum-Breadcrumbs-itemLink[aria-disabled="true"] { + color: var(--highcontrast-breadcrumbs-text-color-disabled, var(--mod-breadcrumbs-text-color-disabled, var(--spectrum-breadcrumbs-text-color-disabled))); +} +.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink { + color: var(--highcontrast-breadcrumbs-text-color-current, var(--mod-breadcrumbs-text-color-current, var(--spectrum-breadcrumbs-text-color-current))); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemLink { + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start-compact, var(--spectrum-breadcrumbs-text-spacing-block-start-compact)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end-compact, var(--spectrum-breadcrumbs-text-spacing-block-end-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemLink { + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start-multiline, var(--spectrum-breadcrumbs-text-spacing-block-start-multiline)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-between-multiline, var(--spectrum-breadcrumbs-text-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-itemLink[href], +.spectrum-Breadcrumbs-itemLink[tabindex="0"] { + cursor: pointer; +} +.spectrum-Breadcrumbs-itemLink[href]:focus-visible, +.spectrum-Breadcrumbs-itemLink[tabindex="0"]:focus-visible { + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-thickness: var(--mod-breadcrumbs-text-decoration-thickness, var(--spectrum-breadcrumbs-text-decoration-thickness)); + text-underline-offset: var(--mod-breadcrumbs-text-decoration-gap, var(--spectrum-breadcrumbs-text-decoration-gap)); +} +@media (hover: hover) { + .spectrum-Breadcrumbs-itemLink[href]:hover, + .spectrum-Breadcrumbs-itemLink[tabindex="0"]:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-thickness: var(--mod-breadcrumbs-text-decoration-thickness, var(--spectrum-breadcrumbs-text-decoration-thickness)); + text-underline-offset: var(--mod-breadcrumbs-text-decoration-gap, var(--spectrum-breadcrumbs-text-decoration-gap)); + } +} +.spectrum-Breadcrumbs-item.is-dragged .spectrum-Breadcrumbs-itemLink:before, +.spectrum-Breadcrumbs-itemLink:focus-visible:before { + position: absolute; + margin-inline-start: calc((var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness))) * -1); + margin-block-start: calc((var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness))) * -1); + box-sizing: border-box; + display: block; + inline-size: calc(100% + var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) * 2 + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)) * 2); + block-size: calc(100% + var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) * 2 + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)) * 2); + border-width: var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)); + border-style: solid; + border-radius: var(--mod-breadcrumbs-item-link-border-radius, var(--spectrum-breadcrumbs-item-link-border-radius)); + content: ""; + pointer-events: none; + border-color: var(--highcontrast-breadcrumbs-focus-indicator-color, var(--mod-breadcrumbs-focus-indicator-color, var(--spectrum-breadcrumbs-focus-indicator-color))); +} +/*# sourceMappingURL=components/breadcrumb/index.css.map */ diff --git a/components/breadcrumb/index-vars.css b/components/breadcrumb/index-vars.css new file mode 100644 index 0000000000..257ffe879b --- /dev/null +++ b/components/breadcrumb/index-vars.css @@ -0,0 +1,247 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Breadcrumbs { + --spectrum-breadcrumbs-block-size: var(--spectrum-breadcrumbs-height); + --spectrum-breadcrumbs-block-size-compact: var(--spectrum-breadcrumbs-height-compact); + --spectrum-breadcrumbs-block-size-multiline: var(--spectrum-breadcrumbs-height-multiline); + --spectrum-breadcrumbs-line-height: var(--spectrum-line-height-100); + --spectrum-breadcrumbs-font-size: var(--spectrum-font-size-200); + --spectrum-breadcrumbs-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-current: var(--spectrum-font-size-200); + --spectrum-breadcrumbs-font-family-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-font-size-compact: var(--spectrum-font-size-100); + --spectrum-breadcrumbs-font-family-compact: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-compact: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-compact-current: var(--spectrum-font-size-100); + --spectrum-breadcrumbs-font-family-compact-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-compact-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-font-size-multiline: var(--spectrum-font-size-75); + --spectrum-breadcrumbs-font-family-multiline: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-multiline: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-multiline-current: var(--spectrum-font-size-300); + --spectrum-breadcrumbs-font-family-multiline-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-multiline-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-text-decoration-thickness: var(--spectrum-text-underline-thickness); + --spectrum-breadcrumbs-text-decoration-gap: var(--spectrum-text-underline-gap); + --spectrum-breadcrumbs-separator-spacing-inline: var(--spectrum-text-to-visual-100); + --spectrum-breadcrumbs-text-spacing-block-start: var(--spectrum-breadcrumbs-top-to-text); + --spectrum-breadcrumbs-text-spacing-block-end: var(--spectrum-breadcrumbs-bottom-to-text); + --spectrum-breadcrumbs-icon-spacing-block: var(--spectrum-breadcrumbs-top-to-separator-icon); + --spectrum-breadcrumbs-text-spacing-block-start-compact: var(--spectrum-breadcrumbs-top-to-text-compact); + --spectrum-breadcrumbs-text-spacing-block-end-compact: var(--spectrum-breadcrumbs-bottom-to-text-compact); + --spectrum-breadcrumbs-icon-spacing-block-compact: var(--spectrum-breadcrumbs-top-to-separator-icon-compact); + --spectrum-breadcrumbs-text-spacing-block-start-multiline: var(--spectrum-breadcrumbs-top-to-text-multiline); + --spectrum-breadcrumbs-text-spacing-block-end-multiline: var(--spectrum-breadcrumbs-bottom-to-text-multiline); + --spectrum-breadcrumbs-text-spacing-block-between-multiline: var(--spectrum-breadcrumbs-top-text-to-bottom-text); + --spectrum-breadcrumbs-icon-spacing-block-start-multiline: var(--spectrum-breadcrumbs-top-to-separator-icon-multiline); + --spectrum-breadcrumbs-icon-spacing-block-between-multiline: var(--spectrum-breadcrumbs-separator-icon-to-bottom-text-multiline); + --spectrum-breadcrumbs-inline-start: var(--spectrum-breadcrumbs-start-edge-to-text); + --spectrum-breadcrumbs-inline-end: var(--spectrum-breadcrumbs-end-edge-to-text); + --spectrum-breadcrumbs-action-button-spacing-inline: var(--spectrum-breadcrumbs-truncated-menu-to-separator-icon); + --spectrum-breadcrumbs-action-button-spacing-block: var(--spectrum-breadcrumbs-top-to-truncated-menu); + --spectrum-breadcrumbs-action-button-spacing-block-compact: var(--spectrum-breadcrumbs-top-to-truncated-menu-compact); + --spectrum-breadcrumbs-action-button-spacing-inline-start: var(--spectrum-breadcrumbs-start-edge-to-truncated-menu); + --spectrum-breadcrumbs-action-button-spacing-block-multiline: var(--spectrum-breadcrumbs-top-to-truncated-menu-compact); + --spectrum-breadcrumbs-action-button-spacing-block-between-multiline: var(--spectrum-breadcrumbs-truncated-menu-to-bottom-text); + --spectrum-breadcrumbs-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-breadcrumbs-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-breadcrumbs-item-link-border-radius: var(--spectrum-corner-radius-100); + --spectrum-breadcrumbs-text-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-breadcrumbs-text-color-current: var(--spectrum-neutral-content-color-default); + --spectrum-breadcrumbs-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-breadcrumbs-separator-color: var(--spectrum-neutral-content-color-default); + --spectrum-breadcrumbs-action-button-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-breadcrumbs-action-button-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-breadcrumbs-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +@media (forced-colors: active) { + .spectrum-Breadcrumbs { + --highcontrast-breadcrumbs-text-color: LinkText; + --highcontrast-breadcrumbs-text-color-current: CanvasText; + --highcontrast-breadcrumbs-text-color-disabled: GrayText; + --highcontrast-breadcrumbs-separator-color: CanvasText; + --highcontrast-breadcrumbs-action-button-color: LinkText; + --highcontrast-breadcrumbs-action-button-color-disabled: GrayText; + --highcontrast-breadcrumbs-focus-indicator-color: CanvasText; + } +} +.spectrum-Breadcrumbs { + list-style-type: none; + margin: 0; + padding-inline-start: var(--mod-breadcrumbs-inline-start, var(--spectrum-breadcrumbs-inline-start)); + padding-inline-end: var(--mod-breadcrumbs-inline-end, var(--spectrum-breadcrumbs-inline-end)); + display: flex; + flex-flow: row nowrap; + align-items: center; + justify-content: flex-start; + flex: 1 0 0%; + block-size: var(--mod-breadcrumbs-block-size, var(--spectrum-breadcrumbs-block-size)); +} +.spectrum-Breadcrumbs--compact { + block-size: var(--mod-breadcrumbs-block-size-compact, var(--spectrum-breadcrumbs-block-size-compact)); +} +.spectrum-Breadcrumbs--multiline { + block-size: var(--mod-breadcrumbs-block-size-multiline, var(--spectrum-breadcrumbs-block-size-multiline)); + flex-wrap: wrap; + align-content: center; +} +.spectrum-Breadcrumbs-itemSeparator { + position: relative; + margin-block: var(--mod-breadcrumbs-icon-spacing-block, var(--spectrum-breadcrumbs-icon-spacing-block)); + margin-inline: var(--mod-breadcrumbs-separator-spacing-inline, var(--spectrum-breadcrumbs-separator-spacing-inline)); + opacity: 1; + color: var(--highcontrast-breadcrumbs-separator-color, var(--mod-breadcrumbs-separator-color, var(--spectrum-breadcrumbs-separator-color))); +} +.spectrum-Breadcrumbs-itemSeparator:dir(rtl), +[dir="rtl"] .spectrum-Breadcrumbs-itemSeparator { + transform: scaleX(-1); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemSeparator { + margin-block: var(--mod-breadcrumbs-icon-spacing-block-compact, var(--spectrum-breadcrumbs-icon-spacing-block-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemSeparator { + margin-block-start: var(--mod-breadcrumbs-icon-spacing-block-start-multiline, var(--spectrum-breadcrumbs-icon-spacing-block-start-multiline)); + margin-block-end: var(--mod-breadcrumbs-icon-spacing-block-between-multiline, var(--spectrum-breadcrumbs-icon-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-item { + box-sizing: border-box; + position: relative; + display: inline-flex; + white-space: nowrap; + font-family: var(--mod-breadcrumbs-font-family, var(--spectrum-breadcrumbs-font-family)); + font-size: var(--mod-breadcrumbs-font-size, var(--spectrum-breadcrumbs-font-size)); + font-weight: var(--mod-breadcrumbs-font-weight, var(--spectrum-breadcrumbs-font-weight)); + line-height: var(--mod-breadcrumbs-line-height, var(--spectrum-breadcrumbs-line-height)); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item { + font-family: var(--mod-breadcrumbs-font-family-compact, var(--spectrum-breadcrumbs-font-family-compact)); + font-size: var(--mod-breadcrumbs-font-size-compact, var(--spectrum-breadcrumbs-font-size-compact)); + font-weight: var(--mod-breadcrumbs-font-weight-compact, var(--spectrum-breadcrumbs-font-weight-compact)); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-block: var(--mod-breadcrumbs-action-button-spacing-block-compact, var(--spectrum-breadcrumbs-action-button-spacing-block-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item { + font-family: var(--mod-breadcrumbs-font-family-multiline, var(--spectrum-breadcrumbs-font-family-multiline)); + font-size: var(--mod-breadcrumbs-font-size-multiline, var(--spectrum-breadcrumbs-font-size-multiline)); + font-weight: var(--mod-breadcrumbs-font-weight-multiline, var(--spectrum-breadcrumbs-font-weight-multiline)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type { + block-size: auto; + inline-size: 100%; +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-block-start: var(--mod-breadcrumbs-action-button-spacing-block-multiline, var(--spectrum-breadcrumbs-action-button-spacing-block-multiline)); + margin-block-end: var(--mod-breadcrumbs-action-button-spacing-block-between-multiline, var(--spectrum-breadcrumbs-action-button-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-current, var(--spectrum-breadcrumbs-font-family-current)); + font-size: var(--mod-breadcrumbs-font-size-current, var(--spectrum-breadcrumbs-font-size-current)); + font-weight: var(--mod-breadcrumbs-font-weight-current, var(--spectrum-breadcrumbs-font-weight-current)); +} +.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemSeparator { + display: none; +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-compact-current, var(--spectrum-breadcrumbs-font-family-compact-current)); + font-size: var(--mod-breadcrumbs-font-size-compact-current, var(--spectrum-breadcrumbs-font-size-compact-current)); + font-weight: var(--mod-breadcrumbs-font-weight-compact-current, var(--spectrum-breadcrumbs-font-weight-compact-current)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-multiline-current, var(--spectrum-breadcrumbs-font-family-multiline-current)); + font-size: var(--mod-breadcrumbs-font-size-multiline-current, var(--spectrum-breadcrumbs-font-size-multiline-current)); + font-weight: var(--mod-breadcrumbs-font-weight-multiline-current, var(--spectrum-breadcrumbs-font-weight-multiline-current)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink { + margin-block-start: 0; + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end-multiline, var(--spectrum-breadcrumbs-text-spacing-block-end-multiline)); +} +.spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-inline: var(--mod-breadcrumbs-action-button-spacing-inline, var(--spectrum-breadcrumbs-action-button-spacing-inline)); + margin-block: var(--mod-breadcrumbs-action-button-spacing-block, var(--spectrum-breadcrumbs-action-button-spacing-block)); + color: var(--highcontrast-breadcrumbs-action-button-color, var(--mod-breadcrumbs-action-button-color, var(--spectrum-breadcrumbs-action-button-color))); +} +.spectrum-Breadcrumbs-item > .spectrum-ActionButton:disabled { + color: var(--highcontrast-breadcrumbs-action-button-color-disabled, var(--mod-breadcrumbs-action-button-color-disabled, var(--spectrum-breadcrumbs-action-button-color-disabled))); +} +.spectrum-Breadcrumbs-item:first-of-type > .spectrum-ActionButton { + margin-inline-start: var(--mod-breadcrumbs-action-button-spacing-inline-start, var(--spectrum-breadcrumbs-action-button-spacing-inline-start)); +} +.spectrum-Breadcrumbs-itemLink { + cursor: default; + position: relative; + box-sizing: border-box; + display: block; + border-radius: var(--mod-breadcrumbs-item-link-border-radius, var(--spectrum-breadcrumbs-item-link-border-radius)); + outline: none; + -webkit-text-decoration: none; + text-decoration: none; + color: var(--highcontrast-breadcrumbs-text-color, var(--mod-breadcrumbs-text-color, var(--spectrum-breadcrumbs-text-color))); + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start, var(--spectrum-breadcrumbs-text-spacing-block-start)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end, var(--spectrum-breadcrumbs-text-spacing-block-end)); +} +.spectrum-Breadcrumbs-itemLink.is-disabled, +.spectrum-Breadcrumbs-itemLink[aria-disabled="true"] { + color: var(--highcontrast-breadcrumbs-text-color-disabled, var(--mod-breadcrumbs-text-color-disabled, var(--spectrum-breadcrumbs-text-color-disabled))); +} +.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink { + color: var(--highcontrast-breadcrumbs-text-color-current, var(--mod-breadcrumbs-text-color-current, var(--spectrum-breadcrumbs-text-color-current))); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemLink { + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start-compact, var(--spectrum-breadcrumbs-text-spacing-block-start-compact)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end-compact, var(--spectrum-breadcrumbs-text-spacing-block-end-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemLink { + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start-multiline, var(--spectrum-breadcrumbs-text-spacing-block-start-multiline)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-between-multiline, var(--spectrum-breadcrumbs-text-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-itemLink[href], +.spectrum-Breadcrumbs-itemLink[tabindex="0"] { + cursor: pointer; +} +.spectrum-Breadcrumbs-itemLink[href]:focus-visible, +.spectrum-Breadcrumbs-itemLink[tabindex="0"]:focus-visible { + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-thickness: var(--mod-breadcrumbs-text-decoration-thickness, var(--spectrum-breadcrumbs-text-decoration-thickness)); + text-underline-offset: var(--mod-breadcrumbs-text-decoration-gap, var(--spectrum-breadcrumbs-text-decoration-gap)); +} +@media (hover: hover) { + .spectrum-Breadcrumbs-itemLink[href]:hover, + .spectrum-Breadcrumbs-itemLink[tabindex="0"]:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-thickness: var(--mod-breadcrumbs-text-decoration-thickness, var(--spectrum-breadcrumbs-text-decoration-thickness)); + text-underline-offset: var(--mod-breadcrumbs-text-decoration-gap, var(--spectrum-breadcrumbs-text-decoration-gap)); + } +} +.spectrum-Breadcrumbs-item.is-dragged .spectrum-Breadcrumbs-itemLink:before, +.spectrum-Breadcrumbs-itemLink:focus-visible:before { + position: absolute; + margin-inline-start: calc((var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness))) * -1); + margin-block-start: calc((var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness))) * -1); + box-sizing: border-box; + display: block; + inline-size: calc(100% + var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) * 2 + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)) * 2); + block-size: calc(100% + var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) * 2 + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)) * 2); + border-width: var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)); + border-style: solid; + border-radius: var(--mod-breadcrumbs-item-link-border-radius, var(--spectrum-breadcrumbs-item-link-border-radius)); + content: ""; + pointer-events: none; + border-color: var(--highcontrast-breadcrumbs-focus-indicator-color, var(--mod-breadcrumbs-focus-indicator-color, var(--spectrum-breadcrumbs-focus-indicator-color))); +} +/*# sourceMappingURL=components/breadcrumb/index.css.map */ diff --git a/components/breadcrumb/index.css b/components/breadcrumb/index.css new file mode 100644 index 0000000000..257ffe879b --- /dev/null +++ b/components/breadcrumb/index.css @@ -0,0 +1,247 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Breadcrumbs { + --spectrum-breadcrumbs-block-size: var(--spectrum-breadcrumbs-height); + --spectrum-breadcrumbs-block-size-compact: var(--spectrum-breadcrumbs-height-compact); + --spectrum-breadcrumbs-block-size-multiline: var(--spectrum-breadcrumbs-height-multiline); + --spectrum-breadcrumbs-line-height: var(--spectrum-line-height-100); + --spectrum-breadcrumbs-font-size: var(--spectrum-font-size-200); + --spectrum-breadcrumbs-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-current: var(--spectrum-font-size-200); + --spectrum-breadcrumbs-font-family-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-font-size-compact: var(--spectrum-font-size-100); + --spectrum-breadcrumbs-font-family-compact: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-compact: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-compact-current: var(--spectrum-font-size-100); + --spectrum-breadcrumbs-font-family-compact-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-compact-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-font-size-multiline: var(--spectrum-font-size-75); + --spectrum-breadcrumbs-font-family-multiline: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-multiline: var(--spectrum-regular-font-weight); + --spectrum-breadcrumbs-font-size-multiline-current: var(--spectrum-font-size-300); + --spectrum-breadcrumbs-font-family-multiline-current: var(--spectrum-sans-font-family-stack); + --spectrum-breadcrumbs-font-weight-multiline-current: var(--spectrum-bold-font-weight); + --spectrum-breadcrumbs-text-decoration-thickness: var(--spectrum-text-underline-thickness); + --spectrum-breadcrumbs-text-decoration-gap: var(--spectrum-text-underline-gap); + --spectrum-breadcrumbs-separator-spacing-inline: var(--spectrum-text-to-visual-100); + --spectrum-breadcrumbs-text-spacing-block-start: var(--spectrum-breadcrumbs-top-to-text); + --spectrum-breadcrumbs-text-spacing-block-end: var(--spectrum-breadcrumbs-bottom-to-text); + --spectrum-breadcrumbs-icon-spacing-block: var(--spectrum-breadcrumbs-top-to-separator-icon); + --spectrum-breadcrumbs-text-spacing-block-start-compact: var(--spectrum-breadcrumbs-top-to-text-compact); + --spectrum-breadcrumbs-text-spacing-block-end-compact: var(--spectrum-breadcrumbs-bottom-to-text-compact); + --spectrum-breadcrumbs-icon-spacing-block-compact: var(--spectrum-breadcrumbs-top-to-separator-icon-compact); + --spectrum-breadcrumbs-text-spacing-block-start-multiline: var(--spectrum-breadcrumbs-top-to-text-multiline); + --spectrum-breadcrumbs-text-spacing-block-end-multiline: var(--spectrum-breadcrumbs-bottom-to-text-multiline); + --spectrum-breadcrumbs-text-spacing-block-between-multiline: var(--spectrum-breadcrumbs-top-text-to-bottom-text); + --spectrum-breadcrumbs-icon-spacing-block-start-multiline: var(--spectrum-breadcrumbs-top-to-separator-icon-multiline); + --spectrum-breadcrumbs-icon-spacing-block-between-multiline: var(--spectrum-breadcrumbs-separator-icon-to-bottom-text-multiline); + --spectrum-breadcrumbs-inline-start: var(--spectrum-breadcrumbs-start-edge-to-text); + --spectrum-breadcrumbs-inline-end: var(--spectrum-breadcrumbs-end-edge-to-text); + --spectrum-breadcrumbs-action-button-spacing-inline: var(--spectrum-breadcrumbs-truncated-menu-to-separator-icon); + --spectrum-breadcrumbs-action-button-spacing-block: var(--spectrum-breadcrumbs-top-to-truncated-menu); + --spectrum-breadcrumbs-action-button-spacing-block-compact: var(--spectrum-breadcrumbs-top-to-truncated-menu-compact); + --spectrum-breadcrumbs-action-button-spacing-inline-start: var(--spectrum-breadcrumbs-start-edge-to-truncated-menu); + --spectrum-breadcrumbs-action-button-spacing-block-multiline: var(--spectrum-breadcrumbs-top-to-truncated-menu-compact); + --spectrum-breadcrumbs-action-button-spacing-block-between-multiline: var(--spectrum-breadcrumbs-truncated-menu-to-bottom-text); + --spectrum-breadcrumbs-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-breadcrumbs-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-breadcrumbs-item-link-border-radius: var(--spectrum-corner-radius-100); + --spectrum-breadcrumbs-text-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-breadcrumbs-text-color-current: var(--spectrum-neutral-content-color-default); + --spectrum-breadcrumbs-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-breadcrumbs-separator-color: var(--spectrum-neutral-content-color-default); + --spectrum-breadcrumbs-action-button-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-breadcrumbs-action-button-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-breadcrumbs-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +@media (forced-colors: active) { + .spectrum-Breadcrumbs { + --highcontrast-breadcrumbs-text-color: LinkText; + --highcontrast-breadcrumbs-text-color-current: CanvasText; + --highcontrast-breadcrumbs-text-color-disabled: GrayText; + --highcontrast-breadcrumbs-separator-color: CanvasText; + --highcontrast-breadcrumbs-action-button-color: LinkText; + --highcontrast-breadcrumbs-action-button-color-disabled: GrayText; + --highcontrast-breadcrumbs-focus-indicator-color: CanvasText; + } +} +.spectrum-Breadcrumbs { + list-style-type: none; + margin: 0; + padding-inline-start: var(--mod-breadcrumbs-inline-start, var(--spectrum-breadcrumbs-inline-start)); + padding-inline-end: var(--mod-breadcrumbs-inline-end, var(--spectrum-breadcrumbs-inline-end)); + display: flex; + flex-flow: row nowrap; + align-items: center; + justify-content: flex-start; + flex: 1 0 0%; + block-size: var(--mod-breadcrumbs-block-size, var(--spectrum-breadcrumbs-block-size)); +} +.spectrum-Breadcrumbs--compact { + block-size: var(--mod-breadcrumbs-block-size-compact, var(--spectrum-breadcrumbs-block-size-compact)); +} +.spectrum-Breadcrumbs--multiline { + block-size: var(--mod-breadcrumbs-block-size-multiline, var(--spectrum-breadcrumbs-block-size-multiline)); + flex-wrap: wrap; + align-content: center; +} +.spectrum-Breadcrumbs-itemSeparator { + position: relative; + margin-block: var(--mod-breadcrumbs-icon-spacing-block, var(--spectrum-breadcrumbs-icon-spacing-block)); + margin-inline: var(--mod-breadcrumbs-separator-spacing-inline, var(--spectrum-breadcrumbs-separator-spacing-inline)); + opacity: 1; + color: var(--highcontrast-breadcrumbs-separator-color, var(--mod-breadcrumbs-separator-color, var(--spectrum-breadcrumbs-separator-color))); +} +.spectrum-Breadcrumbs-itemSeparator:dir(rtl), +[dir="rtl"] .spectrum-Breadcrumbs-itemSeparator { + transform: scaleX(-1); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemSeparator { + margin-block: var(--mod-breadcrumbs-icon-spacing-block-compact, var(--spectrum-breadcrumbs-icon-spacing-block-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemSeparator { + margin-block-start: var(--mod-breadcrumbs-icon-spacing-block-start-multiline, var(--spectrum-breadcrumbs-icon-spacing-block-start-multiline)); + margin-block-end: var(--mod-breadcrumbs-icon-spacing-block-between-multiline, var(--spectrum-breadcrumbs-icon-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-item { + box-sizing: border-box; + position: relative; + display: inline-flex; + white-space: nowrap; + font-family: var(--mod-breadcrumbs-font-family, var(--spectrum-breadcrumbs-font-family)); + font-size: var(--mod-breadcrumbs-font-size, var(--spectrum-breadcrumbs-font-size)); + font-weight: var(--mod-breadcrumbs-font-weight, var(--spectrum-breadcrumbs-font-weight)); + line-height: var(--mod-breadcrumbs-line-height, var(--spectrum-breadcrumbs-line-height)); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item { + font-family: var(--mod-breadcrumbs-font-family-compact, var(--spectrum-breadcrumbs-font-family-compact)); + font-size: var(--mod-breadcrumbs-font-size-compact, var(--spectrum-breadcrumbs-font-size-compact)); + font-weight: var(--mod-breadcrumbs-font-weight-compact, var(--spectrum-breadcrumbs-font-weight-compact)); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-block: var(--mod-breadcrumbs-action-button-spacing-block-compact, var(--spectrum-breadcrumbs-action-button-spacing-block-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item { + font-family: var(--mod-breadcrumbs-font-family-multiline, var(--spectrum-breadcrumbs-font-family-multiline)); + font-size: var(--mod-breadcrumbs-font-size-multiline, var(--spectrum-breadcrumbs-font-size-multiline)); + font-weight: var(--mod-breadcrumbs-font-weight-multiline, var(--spectrum-breadcrumbs-font-weight-multiline)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type { + block-size: auto; + inline-size: 100%; +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-block-start: var(--mod-breadcrumbs-action-button-spacing-block-multiline, var(--spectrum-breadcrumbs-action-button-spacing-block-multiline)); + margin-block-end: var(--mod-breadcrumbs-action-button-spacing-block-between-multiline, var(--spectrum-breadcrumbs-action-button-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-current, var(--spectrum-breadcrumbs-font-family-current)); + font-size: var(--mod-breadcrumbs-font-size-current, var(--spectrum-breadcrumbs-font-size-current)); + font-weight: var(--mod-breadcrumbs-font-weight-current, var(--spectrum-breadcrumbs-font-weight-current)); +} +.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemSeparator { + display: none; +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-compact-current, var(--spectrum-breadcrumbs-font-family-compact-current)); + font-size: var(--mod-breadcrumbs-font-size-compact-current, var(--spectrum-breadcrumbs-font-size-compact-current)); + font-weight: var(--mod-breadcrumbs-font-weight-compact-current, var(--spectrum-breadcrumbs-font-weight-compact-current)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type { + font-family: var(--mod-breadcrumbs-font-family-multiline-current, var(--spectrum-breadcrumbs-font-family-multiline-current)); + font-size: var(--mod-breadcrumbs-font-size-multiline-current, var(--spectrum-breadcrumbs-font-size-multiline-current)); + font-weight: var(--mod-breadcrumbs-font-weight-multiline-current, var(--spectrum-breadcrumbs-font-weight-multiline-current)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink { + margin-block-start: 0; + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end-multiline, var(--spectrum-breadcrumbs-text-spacing-block-end-multiline)); +} +.spectrum-Breadcrumbs-item > .spectrum-ActionButton { + margin-inline: var(--mod-breadcrumbs-action-button-spacing-inline, var(--spectrum-breadcrumbs-action-button-spacing-inline)); + margin-block: var(--mod-breadcrumbs-action-button-spacing-block, var(--spectrum-breadcrumbs-action-button-spacing-block)); + color: var(--highcontrast-breadcrumbs-action-button-color, var(--mod-breadcrumbs-action-button-color, var(--spectrum-breadcrumbs-action-button-color))); +} +.spectrum-Breadcrumbs-item > .spectrum-ActionButton:disabled { + color: var(--highcontrast-breadcrumbs-action-button-color-disabled, var(--mod-breadcrumbs-action-button-color-disabled, var(--spectrum-breadcrumbs-action-button-color-disabled))); +} +.spectrum-Breadcrumbs-item:first-of-type > .spectrum-ActionButton { + margin-inline-start: var(--mod-breadcrumbs-action-button-spacing-inline-start, var(--spectrum-breadcrumbs-action-button-spacing-inline-start)); +} +.spectrum-Breadcrumbs-itemLink { + cursor: default; + position: relative; + box-sizing: border-box; + display: block; + border-radius: var(--mod-breadcrumbs-item-link-border-radius, var(--spectrum-breadcrumbs-item-link-border-radius)); + outline: none; + -webkit-text-decoration: none; + text-decoration: none; + color: var(--highcontrast-breadcrumbs-text-color, var(--mod-breadcrumbs-text-color, var(--spectrum-breadcrumbs-text-color))); + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start, var(--spectrum-breadcrumbs-text-spacing-block-start)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end, var(--spectrum-breadcrumbs-text-spacing-block-end)); +} +.spectrum-Breadcrumbs-itemLink.is-disabled, +.spectrum-Breadcrumbs-itemLink[aria-disabled="true"] { + color: var(--highcontrast-breadcrumbs-text-color-disabled, var(--mod-breadcrumbs-text-color-disabled, var(--spectrum-breadcrumbs-text-color-disabled))); +} +.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink { + color: var(--highcontrast-breadcrumbs-text-color-current, var(--mod-breadcrumbs-text-color-current, var(--spectrum-breadcrumbs-text-color-current))); +} +.spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemLink { + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start-compact, var(--spectrum-breadcrumbs-text-spacing-block-start-compact)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-end-compact, var(--spectrum-breadcrumbs-text-spacing-block-end-compact)); +} +.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemLink { + margin-block-start: var(--mod-breadcrumbs-text-spacing-block-start-multiline, var(--spectrum-breadcrumbs-text-spacing-block-start-multiline)); + margin-block-end: var(--mod-breadcrumbs-text-spacing-block-between-multiline, var(--spectrum-breadcrumbs-text-spacing-block-between-multiline)); +} +.spectrum-Breadcrumbs-itemLink[href], +.spectrum-Breadcrumbs-itemLink[tabindex="0"] { + cursor: pointer; +} +.spectrum-Breadcrumbs-itemLink[href]:focus-visible, +.spectrum-Breadcrumbs-itemLink[tabindex="0"]:focus-visible { + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-thickness: var(--mod-breadcrumbs-text-decoration-thickness, var(--spectrum-breadcrumbs-text-decoration-thickness)); + text-underline-offset: var(--mod-breadcrumbs-text-decoration-gap, var(--spectrum-breadcrumbs-text-decoration-gap)); +} +@media (hover: hover) { + .spectrum-Breadcrumbs-itemLink[href]:hover, + .spectrum-Breadcrumbs-itemLink[tabindex="0"]:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-thickness: var(--mod-breadcrumbs-text-decoration-thickness, var(--spectrum-breadcrumbs-text-decoration-thickness)); + text-underline-offset: var(--mod-breadcrumbs-text-decoration-gap, var(--spectrum-breadcrumbs-text-decoration-gap)); + } +} +.spectrum-Breadcrumbs-item.is-dragged .spectrum-Breadcrumbs-itemLink:before, +.spectrum-Breadcrumbs-itemLink:focus-visible:before { + position: absolute; + margin-inline-start: calc((var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness))) * -1); + margin-block-start: calc((var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness))) * -1); + box-sizing: border-box; + display: block; + inline-size: calc(100% + var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) * 2 + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)) * 2); + block-size: calc(100% + var(--mod-breadcrumbs-focus-indicator-gap, var(--spectrum-breadcrumbs-focus-indicator-gap)) * 2 + var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)) * 2); + border-width: var(--mod-breadcrumbs-focus-indicator-thickness, var(--spectrum-breadcrumbs-focus-indicator-thickness)); + border-style: solid; + border-radius: var(--mod-breadcrumbs-item-link-border-radius, var(--spectrum-breadcrumbs-item-link-border-radius)); + content: ""; + pointer-events: none; + border-color: var(--highcontrast-breadcrumbs-focus-indicator-color, var(--mod-breadcrumbs-focus-indicator-color, var(--spectrum-breadcrumbs-focus-indicator-color))); +} +/*# sourceMappingURL=components/breadcrumb/index.css.map */ diff --git a/components/breadcrumb/metadata.json b/components/breadcrumb/metadata.json new file mode 100644 index 0000000000..7afd2b4ff1 --- /dev/null +++ b/components/breadcrumb/metadata.json @@ -0,0 +1,194 @@ +{ + "selectors": [ + ".spectrum-Breadcrumbs", + ".spectrum-Breadcrumbs--compact", + ".spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item", + ".spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item > .spectrum-ActionButton", + ".spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-item:last-of-type", + ".spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemLink", + ".spectrum-Breadcrumbs--compact .spectrum-Breadcrumbs-itemSeparator", + ".spectrum-Breadcrumbs--multiline", + ".spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item", + ".spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item > .spectrum-ActionButton", + ".spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type", + ".spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink", + ".spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemLink", + ".spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-itemSeparator", + ".spectrum-Breadcrumbs-item", + ".spectrum-Breadcrumbs-item > .spectrum-ActionButton", + ".spectrum-Breadcrumbs-item > .spectrum-ActionButton:disabled", + ".spectrum-Breadcrumbs-item.is-dragged .spectrum-Breadcrumbs-itemLink:before,\n.spectrum-Breadcrumbs-itemLink:focus-visible:before", + ".spectrum-Breadcrumbs-item:first-of-type > .spectrum-ActionButton", + ".spectrum-Breadcrumbs-item:last-of-type", + ".spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink", + ".spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemSeparator", + ".spectrum-Breadcrumbs-itemLink", + ".spectrum-Breadcrumbs-itemLink.is-disabled,\n.spectrum-Breadcrumbs-itemLink[aria-disabled=\"true\"]", + ".spectrum-Breadcrumbs-itemLink[href],\n.spectrum-Breadcrumbs-itemLink[tabindex=\"0\"]", + ".spectrum-Breadcrumbs-itemLink[href]:focus-visible,\n.spectrum-Breadcrumbs-itemLink[tabindex=\"0\"]:focus-visible", + ".spectrum-Breadcrumbs-itemLink[href]:hover,\n\t.spectrum-Breadcrumbs-itemLink[tabindex=\"0\"]:hover", + ".spectrum-Breadcrumbs-itemSeparator", + ".spectrum-Breadcrumbs-itemSeparator:dir(rtl),\n[dir=\"rtl\"] .spectrum-Breadcrumbs-itemSeparator" + ], + "mods": [ + "--mod-breadcrumbs-action-button-color", + "--mod-breadcrumbs-action-button-color-disabled", + "--mod-breadcrumbs-action-button-spacing-block", + "--mod-breadcrumbs-action-button-spacing-block-between-multiline", + "--mod-breadcrumbs-action-button-spacing-block-compact", + "--mod-breadcrumbs-action-button-spacing-block-multiline", + "--mod-breadcrumbs-action-button-spacing-inline", + "--mod-breadcrumbs-action-button-spacing-inline-start", + "--mod-breadcrumbs-block-size", + "--mod-breadcrumbs-block-size-compact", + "--mod-breadcrumbs-block-size-multiline", + "--mod-breadcrumbs-focus-indicator-color", + "--mod-breadcrumbs-focus-indicator-gap", + "--mod-breadcrumbs-focus-indicator-thickness", + "--mod-breadcrumbs-font-family", + "--mod-breadcrumbs-font-family-compact", + "--mod-breadcrumbs-font-family-compact-current", + "--mod-breadcrumbs-font-family-current", + "--mod-breadcrumbs-font-family-multiline", + "--mod-breadcrumbs-font-family-multiline-current", + "--mod-breadcrumbs-font-size", + "--mod-breadcrumbs-font-size-compact", + "--mod-breadcrumbs-font-size-compact-current", + "--mod-breadcrumbs-font-size-current", + "--mod-breadcrumbs-font-size-multiline", + "--mod-breadcrumbs-font-size-multiline-current", + "--mod-breadcrumbs-font-weight", + "--mod-breadcrumbs-font-weight-compact", + "--mod-breadcrumbs-font-weight-compact-current", + "--mod-breadcrumbs-font-weight-current", + "--mod-breadcrumbs-font-weight-multiline", + "--mod-breadcrumbs-font-weight-multiline-current", + "--mod-breadcrumbs-icon-spacing-block", + "--mod-breadcrumbs-icon-spacing-block-between-multiline", + "--mod-breadcrumbs-icon-spacing-block-compact", + "--mod-breadcrumbs-icon-spacing-block-start-multiline", + "--mod-breadcrumbs-inline-end", + "--mod-breadcrumbs-inline-start", + "--mod-breadcrumbs-item-link-border-radius", + "--mod-breadcrumbs-line-height", + "--mod-breadcrumbs-separator-color", + "--mod-breadcrumbs-separator-spacing-inline", + "--mod-breadcrumbs-text-color", + "--mod-breadcrumbs-text-color-current", + "--mod-breadcrumbs-text-color-disabled", + "--mod-breadcrumbs-text-decoration-gap", + "--mod-breadcrumbs-text-decoration-thickness", + "--mod-breadcrumbs-text-spacing-block-between-multiline", + "--mod-breadcrumbs-text-spacing-block-end", + "--mod-breadcrumbs-text-spacing-block-end-compact", + "--mod-breadcrumbs-text-spacing-block-end-multiline", + "--mod-breadcrumbs-text-spacing-block-start", + "--mod-breadcrumbs-text-spacing-block-start-compact", + "--mod-breadcrumbs-text-spacing-block-start-multiline" + ], + "spectrum": [ + "--spectrum-bold-font-weight", + "--spectrum-breadcrumbs-action-button-color", + "--spectrum-breadcrumbs-action-button-color-disabled", + "--spectrum-breadcrumbs-action-button-spacing-block", + "--spectrum-breadcrumbs-action-button-spacing-block-between-multiline", + "--spectrum-breadcrumbs-action-button-spacing-block-compact", + "--spectrum-breadcrumbs-action-button-spacing-block-multiline", + "--spectrum-breadcrumbs-action-button-spacing-inline", + "--spectrum-breadcrumbs-action-button-spacing-inline-start", + "--spectrum-breadcrumbs-block-size", + "--spectrum-breadcrumbs-block-size-compact", + "--spectrum-breadcrumbs-block-size-multiline", + "--spectrum-breadcrumbs-bottom-to-text", + "--spectrum-breadcrumbs-bottom-to-text-compact", + "--spectrum-breadcrumbs-bottom-to-text-multiline", + "--spectrum-breadcrumbs-end-edge-to-text", + "--spectrum-breadcrumbs-focus-indicator-color", + "--spectrum-breadcrumbs-focus-indicator-gap", + "--spectrum-breadcrumbs-focus-indicator-thickness", + "--spectrum-breadcrumbs-font-family", + "--spectrum-breadcrumbs-font-family-compact", + "--spectrum-breadcrumbs-font-family-compact-current", + "--spectrum-breadcrumbs-font-family-current", + "--spectrum-breadcrumbs-font-family-multiline", + "--spectrum-breadcrumbs-font-family-multiline-current", + "--spectrum-breadcrumbs-font-size", + "--spectrum-breadcrumbs-font-size-compact", + "--spectrum-breadcrumbs-font-size-compact-current", + "--spectrum-breadcrumbs-font-size-current", + "--spectrum-breadcrumbs-font-size-multiline", + "--spectrum-breadcrumbs-font-size-multiline-current", + "--spectrum-breadcrumbs-font-weight", + "--spectrum-breadcrumbs-font-weight-compact", + "--spectrum-breadcrumbs-font-weight-compact-current", + "--spectrum-breadcrumbs-font-weight-current", + "--spectrum-breadcrumbs-font-weight-multiline", + "--spectrum-breadcrumbs-font-weight-multiline-current", + "--spectrum-breadcrumbs-height", + "--spectrum-breadcrumbs-height-compact", + "--spectrum-breadcrumbs-height-multiline", + "--spectrum-breadcrumbs-icon-spacing-block", + "--spectrum-breadcrumbs-icon-spacing-block-between-multiline", + "--spectrum-breadcrumbs-icon-spacing-block-compact", + "--spectrum-breadcrumbs-icon-spacing-block-start-multiline", + "--spectrum-breadcrumbs-inline-end", + "--spectrum-breadcrumbs-inline-start", + "--spectrum-breadcrumbs-item-link-border-radius", + "--spectrum-breadcrumbs-line-height", + "--spectrum-breadcrumbs-separator-color", + "--spectrum-breadcrumbs-separator-icon-to-bottom-text-multiline", + "--spectrum-breadcrumbs-separator-spacing-inline", + "--spectrum-breadcrumbs-start-edge-to-text", + "--spectrum-breadcrumbs-start-edge-to-truncated-menu", + "--spectrum-breadcrumbs-text-color", + "--spectrum-breadcrumbs-text-color-current", + "--spectrum-breadcrumbs-text-color-disabled", + "--spectrum-breadcrumbs-text-decoration-gap", + "--spectrum-breadcrumbs-text-decoration-thickness", + "--spectrum-breadcrumbs-text-spacing-block-between-multiline", + "--spectrum-breadcrumbs-text-spacing-block-end", + "--spectrum-breadcrumbs-text-spacing-block-end-compact", + "--spectrum-breadcrumbs-text-spacing-block-end-multiline", + "--spectrum-breadcrumbs-text-spacing-block-start", + "--spectrum-breadcrumbs-text-spacing-block-start-compact", + "--spectrum-breadcrumbs-text-spacing-block-start-multiline", + "--spectrum-breadcrumbs-top-text-to-bottom-text", + "--spectrum-breadcrumbs-top-to-separator-icon", + "--spectrum-breadcrumbs-top-to-separator-icon-compact", + "--spectrum-breadcrumbs-top-to-separator-icon-multiline", + "--spectrum-breadcrumbs-top-to-text", + "--spectrum-breadcrumbs-top-to-text-compact", + "--spectrum-breadcrumbs-top-to-text-multiline", + "--spectrum-breadcrumbs-top-to-truncated-menu", + "--spectrum-breadcrumbs-top-to-truncated-menu-compact", + "--spectrum-breadcrumbs-truncated-menu-to-bottom-text", + "--spectrum-breadcrumbs-truncated-menu-to-separator-icon", + "--spectrum-corner-radius-100", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-line-height-100", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-regular-font-weight", + "--spectrum-sans-font-family-stack", + "--spectrum-text-to-visual-100", + "--spectrum-text-underline-gap", + "--spectrum-text-underline-thickness" + ], + "system": [], + "a11y": [ + "--highcontrast-breadcrumbs-action-button-color", + "--highcontrast-breadcrumbs-action-button-color-disabled", + "--highcontrast-breadcrumbs-focus-indicator-color", + "--highcontrast-breadcrumbs-separator-color", + "--highcontrast-breadcrumbs-text-color", + "--highcontrast-breadcrumbs-text-color-current", + "--highcontrast-breadcrumbs-text-color-disabled" + ] +} diff --git a/components/breadcrumb/package.json b/components/breadcrumb/package.json new file mode 100644 index 0000000000..f048beeb53 --- /dev/null +++ b/components/breadcrumb/package.json @@ -0,0 +1,51 @@ +{ + "name": "@spectrum-css/breadcrumb", + "version": "9.1.2", + "description": "The Spectrum CSS breadcrumb component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/breadcrumb", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/breadcrumb" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/actionbutton": { + "optional": true + }, + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/breadcrumb/template.js b/components/breadcrumb/template.js new file mode 100644 index 0000000000..b28cce8038 --- /dev/null +++ b/components/breadcrumb/template.js @@ -0,0 +1,121 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ( + { + rootClass = "spectrum-Breadcrumbs", + customClasses = [], + items = [], + variant, + isDragged = false, + }, + context, +) => html` + +`; + +export const BreadcrumbGroup = Variants({ + Template, + testData: [{ + testHeading: "Default" + }, { + testHeading: "Compact", + variant: "compact", + }, + { + testHeading: "Multiline", + variant: "multiline", + items: [ + { + label: "Nav root", + }, + { + iconName: "FolderOpen", + isDisabled: true, + }, + { + label: "Trend", + isDragged: true, + }, + { + label: "January 2019 Assets", + }, + ], + }], + stateData: [ + { + testHeading: "Dragged", + isDragged: true, + } + ] +}); diff --git a/components/button/index-base.css b/components/button/index-base.css new file mode 100644 index 0000000000..f60c780043 --- /dev/null +++ b/components/button/index-base.css @@ -0,0 +1,678 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Button { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-Button::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-Button:focus { + outline: none; +} +.spectrum-Button.is-disabled, +.spectrum-Button:disabled { + cursor: default; +} +.spectrum-Button:after { + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + display: block; + margin: calc(var(--mod-button-focus-indicator-gap, var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))) * -1); + transition: + opacity var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out, + margin var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out; +} +.spectrum-Button:focus-visible:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -2); +} +a.spectrum-Button { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-Button-label { + align-self: center; + justify-self: center; + text-align: center; +} +.spectrum-Button-label:empty { + display: none; +} +.spectrum-Button { + --spectrum-button-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-button-border-radius: var(--spectrum-corner-radius-100); + --spectrum-button-border-width: var(--spectrum-border-width-200); + --spectrum-button-line-height: 1.2; + --spectrum-button-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-button-focus-ring-border-radius: calc(var(--spectrum-button-border-radius) + var(--spectrum-button-focus-ring-gap)); + --spectrum-button-focus-ring-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-button-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-50); + --mod-progress-circle-position: absolute; +} +.spectrum-Button--sizeS { + --spectrum-button-min-width: calc(var(--spectrum-component-height-75) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-75); + --spectrum-button-height: var(--spectrum-component-height-75); + --spectrum-button-font-size: var(--spectrum-font-size-75); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-75) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-75); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-75) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-75); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-small); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-small); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-75); +} +.spectrum-Button--sizeM { + --spectrum-button-min-width: calc(var(--spectrum-component-height-100) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-100); + --spectrum-button-height: var(--spectrum-component-height-100); + --spectrum-button-font-size: var(--spectrum-font-size-100); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-100) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-100); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-100) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-medium); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-medium); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-100); +} +.spectrum-Button--sizeL { + --spectrum-button-min-width: calc(var(--spectrum-component-height-200) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-200); + --spectrum-button-height: var(--spectrum-component-height-200); + --spectrum-button-font-size: var(--spectrum-font-size-200); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-200) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-200); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-200) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-200); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-large); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-large); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-200); +} +.spectrum-Button--sizeXL { + --spectrum-button-min-width: calc(var(--spectrum-component-height-300) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-300); + --spectrum-button-height: var(--spectrum-component-height-300); + --spectrum-button-font-size: var(--spectrum-font-size-300); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-300) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-300); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-300) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-300); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-extra-large); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-extra-large); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-300); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-300); +} +.spectrum-Button { + border-radius: var(--mod-button-border-radius, var(--spectrum-button-border-radius)); + border-width: var(--mod-button-border-width, var(--spectrum-button-border-width)); + border-style: solid; + font-size: var(--mod-button-font-size, var(--spectrum-button-font-size)); + font-weight: var(--mod-bold-font-weight, var(--spectrum-bold-font-weight)); + gap: var(--mod-button-padding-label-to-icon, var(--spectrum-button-padding-label-to-icon)); + min-inline-size: var(--mod-button-min-width, var(--spectrum-button-min-width)); + min-block-size: var(--mod-button-height, var(--spectrum-button-height)); + padding-block: 0; + padding-inline: var(--mod-button-edge-to-text, var(--spectrum-button-edge-to-text)); + position: relative; + color: inherit; + margin-block: var(--mod-button-margin-block); + margin-inline-end: var(--mod-button-margin-right); + margin-inline-start: var(--mod-button-margin-left); +} +.spectrum-Button:active { + box-shadow: none; +} +.spectrum-Button .spectrum-Icon { + --_icon-size-difference: max(0px, var(--spectrum-button-intended-icon-size) - var(--spectrum-icon-block-size, var(--spectrum-button-intended-icon-size))); + margin-block-start: var(--mod-button-icon-margin-block-start, max(0px, var(--mod-button-top-to-icon, var(--spectrum-button-top-to-icon)) - var(--mod-button-border-width, var(--spectrum-button-border-width)) + (var(--_icon-size-difference, 0px) / 2))); + margin-inline-start: calc(var(--mod-button-edge-to-visual, var(--spectrum-button-edge-to-visual)) - var(--mod-button-edge-to-text, var(--spectrum-button-edge-to-text))); + color: inherit; + flex-shrink: 0; + align-self: flex-start; +} +.spectrum-Button:after { + border-radius: calc(var(--mod-button-border-radius, var(--spectrum-button-border-radius)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))); +} +.spectrum-Button.spectrum-Button--iconOnly { + min-inline-size: unset; + padding: calc(var(--mod-button-edge-to-visual-only, var(--spectrum-button-edge-to-visual-only)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + border-radius: 50%; +} +.spectrum-Button.spectrum-Button--iconOnly .spectrum-Icon { + align-self: center; + margin-inline-start: 0; + margin-block-start: 0; +} +.spectrum-Button.spectrum-Button--iconOnly:after { + border-radius: 50%; +} +.spectrum-Button-label { + padding-block-start: calc(var(--mod-button-top-to-text, var(--spectrum-button-top-to-text)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + padding-block-end: calc(var(--mod-button-bottom-to-text, var(--spectrum-button-bottom-to-text)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + line-height: var(--mod-button-line-height, var(--spectrum-button-line-height)); + align-self: start; + text-align: var(--mod-button-text-align, center); +} +.spectrum-Button .spectrum-Icon + .spectrum-Button-label { + text-align: var(--mod-button-text-align-with-icon, start); +} +.spectrum-Button.is-focused:after, +.spectrum-Button:focus-visible:after { + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) var(--mod-button-focus-ring-color, var(--spectrum-button-focus-indicator-color)); +} +.spectrum-Button { + transition: border-color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration)) ease-in-out; +} +.spectrum-Button:after { + position: absolute; + inset: 0; + margin: calc((var(--mod-button-focus-ring-gap, var(--spectrum-button-focus-ring-gap)) + var(--mod-button-border-width, var(--spectrum-button-border-width))) * -1); + border-radius: var(--mod-button-focus-ring-border-radius, var(--spectrum-button-focus-ring-border-radius)); + transition: box-shadow var(--mod-button-animation-duration, var(--spectrum-button-animation-duration)) ease-in-out; + pointer-events: none; + content: ""; +} +.spectrum-Button:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-Button:focus-visible:after { + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) var(--highcontrast-button-focus-ring-color, var(--mod-button-focus-ring-color, var(--mod-button-focus-ring-color, var(--spectrum-button-focus-indicator-color)))); +} +.spectrum-Button { + background-color: var(--highcontrast-button-background-color-default, var(--mod-button-background-color-default, var(--spectrum-button-background-color-default))); + border-color: var(--highcontrast-button-border-color-default, var(--mod-button-border-color-default, var(--spectrum-button-border-color-default))); + color: var(--highcontrast-button-content-color-default, var(--mod-button-content-color-default, var(--spectrum-button-content-color-default))); + transition: + border var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear, + color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear, + background-color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear; +} +@media (hover: hover) { + .spectrum-Button:hover { + box-shadow: none; + background-color: var(--highcontrast-button-background-color-hover, var(--mod-button-background-color-hover, var(--spectrum-button-background-color-hover))); + border-color: var(--highcontrast-button-border-color-hover, var(--mod-button-border-color-hover, var(--spectrum-button-border-color-hover))); + color: var(--highcontrast-button-content-color-hover, var(--mod-button-content-color-hover, var(--spectrum-button-content-color-hover))); + } +} +.spectrum-Button:focus-visible { + background-color: var(--highcontrast-button-background-color-focus, var(--mod-button-background-color-focus, var(--spectrum-button-background-color-focus))); + border-color: var(--highcontrast-button-border-color-focus, var(--mod-button-border-color-focus, var(--spectrum-button-border-color-focus))); + color: var(--highcontrast-button-content-color-focus, var(--mod-button-content-color-focus, var(--spectrum-button-content-color-focus))); +} +.spectrum-Button:active { + background-color: var(--highcontrast-button-background-color-down, var(--mod-button-background-color-down, var(--spectrum-button-background-color-down))); + border-color: var(--highcontrast-button-border-color-down, var(--mod-button-border-color-down, var(--spectrum-button-border-color-down))); + color: var(--highcontrast-button-content-color-down, var(--mod-button-content-color-down, var(--spectrum-button-content-color-down))); +} +.spectrum-Button.is-disabled, +.spectrum-Button.is-pending, +.spectrum-Button:disabled, +.spectrum-Button[pending] { + background-color: var(--highcontrast-button-background-color-disabled, var(--mod-button-background-color-disabled, var(--spectrum-button-background-color-disabled))); + border-color: var(--highcontrast-button-border-color-disabled, var(--mod-button-border-color-disabled, var(--spectrum-button-border-color-disabled))); + color: var(--highcontrast-button-content-color-disabled, var(--mod-button-content-color-disabled, var(--spectrum-button-content-color-disabled))); +} +.spectrum-Button .spectrum-Button-label, +.spectrum-Button .spectrum-Icon { + visibility: visible; + opacity: 1; + transition: opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out; +} +.spectrum-Button .spectrum-ProgressCircle { + visibility: hidden; + opacity: 0; + transition: + opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)); +} +.spectrum-Button.is-pending, +.spectrum-Button[pending] { + cursor: default; +} +.spectrum-Button.is-pending .spectrum-Button-label, +.spectrum-Button.is-pending .spectrum-Icon, +.spectrum-Button[pending] .spectrum-Button-label, +.spectrum-Button[pending] .spectrum-Icon { + visibility: hidden; + opacity: 0; + transition: + opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)); +} +.spectrum-Button.is-pending .spectrum-ProgressCircle, +.spectrum-Button[pending] .spectrum-ProgressCircle { + visibility: visible; + opacity: 1; + transition: opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out; +} +.spectrum-Button--staticBlack, +.spectrum-Button--staticWhite { + --spectrum-button-focus-indicator-color: var(--mod-static-black-focus-indicator-color, var(--spectrum-static-black-focus-indicator-color)); +} +@media (forced-colors: active) { + .spectrum-Button { + --highcontrast-button-content-color-disabled: GrayText; + --highcontrast-button-border-color-disabled: GrayText; + --mod-progress-circle-track-border-color: ButtonText; + --mod-progress-circle-track-border-color-over-background: ButtonText; + --mod-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); + } + .spectrum-Button:focus-visible:after { + forced-color-adjust: none; + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) ButtonText; + } + .spectrum-Button.spectrum-Button--accent.spectrum-Button--fill { + --highcontrast-button-background-color-default: ButtonText; + --highcontrast-button-content-color-default: ButtonFace; + --highcontrast-button-background-color-disabled: ButtonFace; + --highcontrast-button-background-color-hover: Highlight; + --highcontrast-button-background-color-down: Highlight; + --highcontrast-button-background-color-focus: Highlight; + --highcontrast-button-content-color-hover: ButtonFace; + --highcontrast-button-content-color-down: ButtonFace; + --highcontrast-button-content-color-focus: ButtonFace; + } + .spectrum-Button.spectrum-Button--accent.spectrum-Button--fill .spectrum-Button-label { + forced-color-adjust: none; + } +} +.spectrum-Button { + --spectrum-button-background-color-default: var(--system-spectrum-button-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-content-color-disabled); +} +.spectrum-Button.spectrum-Button--accent { + --spectrum-button-background-color-default: var(--system-spectrum-button-accent-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-accent-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-accent-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-accent-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-accent-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-accent-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-accent-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-accent-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-accent-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-accent-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-accent-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-accent-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-accent-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-accent-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-accent-content-color-disabled); +} +.spectrum-Button.spectrum-Button--accent.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-accent-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-accent-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-accent-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-accent-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-accent-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-accent-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-accent-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-accent-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-accent-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-accent-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-accent-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-accent-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-accent-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-accent-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-accent-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--negative { + --spectrum-button-background-color-default: var(--system-spectrum-button-negative-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-negative-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-negative-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-negative-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-negative-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-negative-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-negative-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-negative-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-negative-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-negative-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-negative-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-negative-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-negative-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-negative-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-negative-content-color-disabled); +} +.spectrum-Button.spectrum-Button--negative.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-negative-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-negative-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-negative-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-negative-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-negative-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-negative-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-negative-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-negative-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-negative-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-negative-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-negative-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-negative-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-negative-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-negative-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-negative-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--primary { + --spectrum-button-background-color-default: var(--system-spectrum-button-primary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-primary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-primary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-primary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-primary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-primary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-primary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-primary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-primary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-primary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-primary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-primary-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-primary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-primary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-primary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--primary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-primary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-primary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-primary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-primary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-primary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-primary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-primary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-primary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-primary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-primary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-primary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-primary-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-primary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-primary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-primary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-secondary-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-secondary-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-secondary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--quiet { + --spectrum-button-background-color-default: var(--system-spectrum-button-quiet-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-quiet-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-quiet-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-quiet-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-quiet-border-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-quiet-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-quiet-border-color-disabled); +} +.spectrum-Button.is-selected { + --spectrum-button-background-color-default: var(--system-spectrum-button-selected-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-selected-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-selected-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-selected-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-selected-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-selected-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-selected-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-selected-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-selected-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-selected-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-selected-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-selected-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-selected-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-selected-border-color-disabled); +} +.spectrum-Button.is-selected.spectrum-Button--emphasized { + --spectrum-button-background-color-default: var(--system-spectrum-button-selected-emphasized-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-selected-emphasized-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-selected-emphasized-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-selected-emphasized-background-color-focus); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--quiet { + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-quiet-border-color-focus); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-quiet-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--quiet { + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-quiet-border-color-focus); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-quiet-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.is-selected { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-selected-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-selected-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-selected-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-selected-background-color-focus); + --spectrum-button-content-color-default: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-default)); + --spectrum-button-content-color-hover: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-hover)); + --spectrum-button-content-color-down: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-down)); + --spectrum-button-content-color-focus: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-focus)); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-selected-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-selected-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-secondary-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-secondary-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-secondary-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-secondary-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-secondary-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-content-color-disabled); +} +/*# sourceMappingURL=components/button/index.css.map */ diff --git a/components/button/index-theme.css b/components/button/index-theme.css new file mode 100644 index 0000000000..acd655bdc0 --- /dev/null +++ b/components/button/index-theme.css @@ -0,0 +1,343 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-button-background-color-default: var(--spectrum-gray-75); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-border-color-default: var(--spectrum-gray-400); + --system-spectrum-button-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-button-border-color-down: var(--spectrum-gray-600); + --system-spectrum-button-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-button-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-background-color-disabled: transparent; + --system-spectrum-button-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-accent-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-accent-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-accent-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-accent-border-color-default: transparent; + --system-spectrum-button-accent-border-color-hover: transparent; + --system-spectrum-button-accent-border-color-down: transparent; + --system-spectrum-button-accent-border-color-focus: transparent; + --system-spectrum-button-accent-content-color-default: var(--spectrum-white); + --system-spectrum-button-accent-content-color-hover: var(--spectrum-white); + --system-spectrum-button-accent-content-color-down: var(--spectrum-white); + --system-spectrum-button-accent-content-color-focus: var(--spectrum-white); + --system-spectrum-button-accent-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-accent-border-color-disabled: transparent; + --system-spectrum-button-accent-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-outline-background-color-default: transparent; + --system-spectrum-button-accent-outline-background-color-hover: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-background-color-down: var(--spectrum-accent-color-300); + --system-spectrum-button-accent-outline-background-color-focus: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-button-accent-outline-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-button-accent-outline-border-color-focus: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-content-color-default: var(--spectrum-accent-content-color-default); + --system-spectrum-button-accent-outline-content-color-hover: var(--spectrum-accent-content-color-hover); + --system-spectrum-button-accent-outline-content-color-down: var(--spectrum-accent-content-color-down); + --system-spectrum-button-accent-outline-content-color-focus: var(--spectrum-accent-content-color-key-focus); + --system-spectrum-button-accent-outline-background-color-disabled: transparent; + --system-spectrum-button-accent-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-accent-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-background-color-default: var(--spectrum-negative-background-color-default); + --system-spectrum-button-negative-background-color-hover: var(--spectrum-negative-background-color-hover); + --system-spectrum-button-negative-background-color-down: var(--spectrum-negative-background-color-down); + --system-spectrum-button-negative-background-color-focus: var(--spectrum-negative-background-color-key-focus); + --system-spectrum-button-negative-border-color-default: transparent; + --system-spectrum-button-negative-border-color-hover: transparent; + --system-spectrum-button-negative-border-color-down: transparent; + --system-spectrum-button-negative-border-color-focus: transparent; + --system-spectrum-button-negative-content-color-default: var(--spectrum-white); + --system-spectrum-button-negative-content-color-hover: var(--spectrum-white); + --system-spectrum-button-negative-content-color-down: var(--spectrum-white); + --system-spectrum-button-negative-content-color-focus: var(--spectrum-white); + --system-spectrum-button-negative-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-negative-border-color-disabled: transparent; + --system-spectrum-button-negative-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-outline-background-color-default: transparent; + --system-spectrum-button-negative-outline-background-color-hover: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-background-color-down: var(--spectrum-negative-color-300); + --system-spectrum-button-negative-outline-background-color-focus: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-border-color-default: var(--spectrum-negative-color-900); + --system-spectrum-button-negative-outline-border-color-hover: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-border-color-down: var(--spectrum-negative-color-1100); + --system-spectrum-button-negative-outline-border-color-focus: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-content-color-default: var(--spectrum-negative-content-color-default); + --system-spectrum-button-negative-outline-content-color-hover: var(--spectrum-negative-content-color-hover); + --system-spectrum-button-negative-outline-content-color-down: var(--spectrum-negative-content-color-down); + --system-spectrum-button-negative-outline-content-color-focus: var(--spectrum-negative-content-color-key-focus); + --system-spectrum-button-negative-outline-background-color-disabled: transparent; + --system-spectrum-button-negative-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-negative-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-primary-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-primary-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-primary-background-color-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-button-primary-border-color-default: transparent; + --system-spectrum-button-primary-border-color-hover: transparent; + --system-spectrum-button-primary-border-color-down: transparent; + --system-spectrum-button-primary-border-color-focus: transparent; + --system-spectrum-button-primary-content-color-default: var(--spectrum-white); + --system-spectrum-button-primary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-primary-content-color-down: var(--spectrum-white); + --system-spectrum-button-primary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-primary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-primary-border-color-disabled: transparent; + --system-spectrum-button-primary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-outline-background-color-default: transparent; + --system-spectrum-button-primary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-primary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-border-color-default: var(--spectrum-gray-800); + --system-spectrum-button-primary-outline-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-down: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-primary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-primary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-primary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-primary-outline-background-color-disabled: transparent; + --system-spectrum-button-primary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-primary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-secondary-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-border-color-default: transparent; + --system-spectrum-button-secondary-border-color-hover: transparent; + --system-spectrum-button-secondary-border-color-down: transparent; + --system-spectrum-button-secondary-border-color-focus: transparent; + --system-spectrum-button-secondary-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-secondary-border-color-disabled: transparent; + --system-spectrum-button-secondary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-outline-background-color-default: transparent; + --system-spectrum-button-secondary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-default: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-border-color-down: var(--spectrum-gray-500); + --system-spectrum-button-secondary-outline-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-secondary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-secondary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-quiet-background-color-default: transparent; + --system-spectrum-button-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-quiet-border-color-default: transparent; + --system-spectrum-button-quiet-border-color-hover: transparent; + --system-spectrum-button-quiet-border-color-down: transparent; + --system-spectrum-button-quiet-border-color-focus: transparent; + --system-spectrum-button-quiet-background-color-disabled: transparent; + --system-spectrum-button-quiet-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-button-selected-border-color-default: transparent; + --system-spectrum-button-selected-border-color-hover: transparent; + --system-spectrum-button-selected-border-color-down: transparent; + --system-spectrum-button-selected-border-color-focus: transparent; + --system-spectrum-button-selected-content-color-default: var(--spectrum-white); + --system-spectrum-button-selected-content-color-hover: var(--spectrum-white); + --system-spectrum-button-selected-content-color-down: var(--spectrum-white); + --system-spectrum-button-selected-content-color-focus: var(--spectrum-white); + --system-spectrum-button-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-selected-border-color-disabled: transparent; + --system-spectrum-button-selected-emphasized-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-selected-emphasized-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-selected-emphasized-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-selected-emphasized-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-staticblack-quiet-border-color-default: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-button-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-button-staticblack-quiet-border-color-down: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-button-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-button-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-border-color-default: transparent; + --system-spectrum-button-staticwhite-border-color-hover: transparent; + --system-spectrum-button-staticwhite-border-color-down: transparent; + --system-spectrum-button-staticwhite-border-color-focus: transparent; + --system-spectrum-button-staticwhite-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-border-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-outline-border-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-selected-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-selected-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-selected-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-button-staticwhite-secondary-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-border-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-hover: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-down: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-focus: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-default: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-hover: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-border-color-down: var(--spectrum-transparent-white-500); + --system-spectrum-button-staticwhite-secondary-outline-border-color-focus: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticblack-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-button-staticblack-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-border-color-default: transparent; + --system-spectrum-button-staticblack-border-color-hover: transparent; + --system-spectrum-button-staticblack-border-color-down: transparent; + --system-spectrum-button-staticblack-border-color-focus: transparent; + --system-spectrum-button-staticblack-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-border-color-disabled: transparent; + --system-spectrum-button-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-button-staticblack-outline-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-button-staticblack-secondary-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-border-color-default: transparent; + --system-spectrum-button-staticblack-secondary-border-color-hover: transparent; + --system-spectrum-button-staticblack-secondary-border-color-down: transparent; + --system-spectrum-button-staticblack-secondary-border-color-focus: transparent; + --system-spectrum-button-staticblack-secondary-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-secondary-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-default: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-hover: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-border-color-down: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-secondary-outline-border-color-focus: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); +} +.spectrum--express { + --system-spectrum-button-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-border-color-default: transparent; + --system-spectrum-button-border-color-hover: transparent; + --system-spectrum-button-border-color-down: transparent; + --system-spectrum-button-border-color-focus: transparent; + --system-spectrum-button-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-background-color-key-focus); +} +/*# sourceMappingURL=components/button/themes/express.css.map */ diff --git a/components/button/index-vars.css b/components/button/index-vars.css new file mode 100644 index 0000000000..7390b568e2 --- /dev/null +++ b/components/button/index-vars.css @@ -0,0 +1,1007 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-button-background-color-default: var(--spectrum-gray-75); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-border-color-default: var(--spectrum-gray-400); + --system-spectrum-button-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-button-border-color-down: var(--spectrum-gray-600); + --system-spectrum-button-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-button-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-background-color-disabled: transparent; + --system-spectrum-button-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-accent-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-accent-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-accent-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-accent-border-color-default: transparent; + --system-spectrum-button-accent-border-color-hover: transparent; + --system-spectrum-button-accent-border-color-down: transparent; + --system-spectrum-button-accent-border-color-focus: transparent; + --system-spectrum-button-accent-content-color-default: var(--spectrum-white); + --system-spectrum-button-accent-content-color-hover: var(--spectrum-white); + --system-spectrum-button-accent-content-color-down: var(--spectrum-white); + --system-spectrum-button-accent-content-color-focus: var(--spectrum-white); + --system-spectrum-button-accent-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-accent-border-color-disabled: transparent; + --system-spectrum-button-accent-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-outline-background-color-default: transparent; + --system-spectrum-button-accent-outline-background-color-hover: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-background-color-down: var(--spectrum-accent-color-300); + --system-spectrum-button-accent-outline-background-color-focus: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-button-accent-outline-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-button-accent-outline-border-color-focus: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-content-color-default: var(--spectrum-accent-content-color-default); + --system-spectrum-button-accent-outline-content-color-hover: var(--spectrum-accent-content-color-hover); + --system-spectrum-button-accent-outline-content-color-down: var(--spectrum-accent-content-color-down); + --system-spectrum-button-accent-outline-content-color-focus: var(--spectrum-accent-content-color-key-focus); + --system-spectrum-button-accent-outline-background-color-disabled: transparent; + --system-spectrum-button-accent-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-accent-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-background-color-default: var(--spectrum-negative-background-color-default); + --system-spectrum-button-negative-background-color-hover: var(--spectrum-negative-background-color-hover); + --system-spectrum-button-negative-background-color-down: var(--spectrum-negative-background-color-down); + --system-spectrum-button-negative-background-color-focus: var(--spectrum-negative-background-color-key-focus); + --system-spectrum-button-negative-border-color-default: transparent; + --system-spectrum-button-negative-border-color-hover: transparent; + --system-spectrum-button-negative-border-color-down: transparent; + --system-spectrum-button-negative-border-color-focus: transparent; + --system-spectrum-button-negative-content-color-default: var(--spectrum-white); + --system-spectrum-button-negative-content-color-hover: var(--spectrum-white); + --system-spectrum-button-negative-content-color-down: var(--spectrum-white); + --system-spectrum-button-negative-content-color-focus: var(--spectrum-white); + --system-spectrum-button-negative-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-negative-border-color-disabled: transparent; + --system-spectrum-button-negative-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-outline-background-color-default: transparent; + --system-spectrum-button-negative-outline-background-color-hover: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-background-color-down: var(--spectrum-negative-color-300); + --system-spectrum-button-negative-outline-background-color-focus: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-border-color-default: var(--spectrum-negative-color-900); + --system-spectrum-button-negative-outline-border-color-hover: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-border-color-down: var(--spectrum-negative-color-1100); + --system-spectrum-button-negative-outline-border-color-focus: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-content-color-default: var(--spectrum-negative-content-color-default); + --system-spectrum-button-negative-outline-content-color-hover: var(--spectrum-negative-content-color-hover); + --system-spectrum-button-negative-outline-content-color-down: var(--spectrum-negative-content-color-down); + --system-spectrum-button-negative-outline-content-color-focus: var(--spectrum-negative-content-color-key-focus); + --system-spectrum-button-negative-outline-background-color-disabled: transparent; + --system-spectrum-button-negative-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-negative-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-primary-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-primary-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-primary-background-color-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-button-primary-border-color-default: transparent; + --system-spectrum-button-primary-border-color-hover: transparent; + --system-spectrum-button-primary-border-color-down: transparent; + --system-spectrum-button-primary-border-color-focus: transparent; + --system-spectrum-button-primary-content-color-default: var(--spectrum-white); + --system-spectrum-button-primary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-primary-content-color-down: var(--spectrum-white); + --system-spectrum-button-primary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-primary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-primary-border-color-disabled: transparent; + --system-spectrum-button-primary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-outline-background-color-default: transparent; + --system-spectrum-button-primary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-primary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-border-color-default: var(--spectrum-gray-800); + --system-spectrum-button-primary-outline-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-down: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-primary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-primary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-primary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-primary-outline-background-color-disabled: transparent; + --system-spectrum-button-primary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-primary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-secondary-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-border-color-default: transparent; + --system-spectrum-button-secondary-border-color-hover: transparent; + --system-spectrum-button-secondary-border-color-down: transparent; + --system-spectrum-button-secondary-border-color-focus: transparent; + --system-spectrum-button-secondary-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-secondary-border-color-disabled: transparent; + --system-spectrum-button-secondary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-outline-background-color-default: transparent; + --system-spectrum-button-secondary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-default: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-border-color-down: var(--spectrum-gray-500); + --system-spectrum-button-secondary-outline-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-secondary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-secondary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-quiet-background-color-default: transparent; + --system-spectrum-button-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-quiet-border-color-default: transparent; + --system-spectrum-button-quiet-border-color-hover: transparent; + --system-spectrum-button-quiet-border-color-down: transparent; + --system-spectrum-button-quiet-border-color-focus: transparent; + --system-spectrum-button-quiet-background-color-disabled: transparent; + --system-spectrum-button-quiet-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-button-selected-border-color-default: transparent; + --system-spectrum-button-selected-border-color-hover: transparent; + --system-spectrum-button-selected-border-color-down: transparent; + --system-spectrum-button-selected-border-color-focus: transparent; + --system-spectrum-button-selected-content-color-default: var(--spectrum-white); + --system-spectrum-button-selected-content-color-hover: var(--spectrum-white); + --system-spectrum-button-selected-content-color-down: var(--spectrum-white); + --system-spectrum-button-selected-content-color-focus: var(--spectrum-white); + --system-spectrum-button-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-selected-border-color-disabled: transparent; + --system-spectrum-button-selected-emphasized-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-selected-emphasized-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-selected-emphasized-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-selected-emphasized-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-staticblack-quiet-border-color-default: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-button-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-button-staticblack-quiet-border-color-down: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-button-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-button-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-border-color-default: transparent; + --system-spectrum-button-staticwhite-border-color-hover: transparent; + --system-spectrum-button-staticwhite-border-color-down: transparent; + --system-spectrum-button-staticwhite-border-color-focus: transparent; + --system-spectrum-button-staticwhite-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-border-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-outline-border-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-selected-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-selected-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-selected-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-button-staticwhite-secondary-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-border-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-hover: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-down: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-focus: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-default: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-hover: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-border-color-down: var(--spectrum-transparent-white-500); + --system-spectrum-button-staticwhite-secondary-outline-border-color-focus: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticblack-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-button-staticblack-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-border-color-default: transparent; + --system-spectrum-button-staticblack-border-color-hover: transparent; + --system-spectrum-button-staticblack-border-color-down: transparent; + --system-spectrum-button-staticblack-border-color-focus: transparent; + --system-spectrum-button-staticblack-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-border-color-disabled: transparent; + --system-spectrum-button-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-button-staticblack-outline-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-button-staticblack-secondary-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-border-color-default: transparent; + --system-spectrum-button-staticblack-secondary-border-color-hover: transparent; + --system-spectrum-button-staticblack-secondary-border-color-down: transparent; + --system-spectrum-button-staticblack-secondary-border-color-focus: transparent; + --system-spectrum-button-staticblack-secondary-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-secondary-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-default: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-hover: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-border-color-down: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-secondary-outline-border-color-focus: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); +} +.spectrum--express { + --system-spectrum-button-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-border-color-default: transparent; + --system-spectrum-button-border-color-hover: transparent; + --system-spectrum-button-border-color-down: transparent; + --system-spectrum-button-border-color-focus: transparent; + --system-spectrum-button-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-background-color-key-focus); +} +.spectrum-Button { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-Button::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-Button:focus { + outline: none; +} +.spectrum-Button.is-disabled, +.spectrum-Button:disabled { + cursor: default; +} +.spectrum-Button:after { + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + display: block; + margin: calc(var(--mod-button-focus-indicator-gap, var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))) * -1); + transition: + opacity var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out, + margin var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out; +} +.spectrum-Button:focus-visible:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -2); +} +a.spectrum-Button { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-Button-label { + align-self: center; + justify-self: center; + text-align: center; +} +.spectrum-Button-label:empty { + display: none; +} +.spectrum-Button { + --spectrum-button-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-button-border-radius: var(--spectrum-corner-radius-100); + --spectrum-button-border-width: var(--spectrum-border-width-200); + --spectrum-button-line-height: 1.2; + --spectrum-button-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-button-focus-ring-border-radius: calc(var(--spectrum-button-border-radius) + var(--spectrum-button-focus-ring-gap)); + --spectrum-button-focus-ring-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-button-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-50); + --mod-progress-circle-position: absolute; +} +.spectrum-Button--sizeS { + --spectrum-button-min-width: calc(var(--spectrum-component-height-75) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-75); + --spectrum-button-height: var(--spectrum-component-height-75); + --spectrum-button-font-size: var(--spectrum-font-size-75); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-75) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-75); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-75) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-75); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-small); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-small); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-75); +} +.spectrum-Button--sizeM { + --spectrum-button-min-width: calc(var(--spectrum-component-height-100) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-100); + --spectrum-button-height: var(--spectrum-component-height-100); + --spectrum-button-font-size: var(--spectrum-font-size-100); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-100) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-100); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-100) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-medium); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-medium); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-100); +} +.spectrum-Button--sizeL { + --spectrum-button-min-width: calc(var(--spectrum-component-height-200) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-200); + --spectrum-button-height: var(--spectrum-component-height-200); + --spectrum-button-font-size: var(--spectrum-font-size-200); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-200) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-200); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-200) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-200); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-large); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-large); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-200); +} +.spectrum-Button--sizeXL { + --spectrum-button-min-width: calc(var(--spectrum-component-height-300) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-300); + --spectrum-button-height: var(--spectrum-component-height-300); + --spectrum-button-font-size: var(--spectrum-font-size-300); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-300) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-300); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-300) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-300); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-extra-large); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-extra-large); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-300); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-300); +} +.spectrum-Button { + border-radius: var(--mod-button-border-radius, var(--spectrum-button-border-radius)); + border-width: var(--mod-button-border-width, var(--spectrum-button-border-width)); + border-style: solid; + font-size: var(--mod-button-font-size, var(--spectrum-button-font-size)); + font-weight: var(--mod-bold-font-weight, var(--spectrum-bold-font-weight)); + gap: var(--mod-button-padding-label-to-icon, var(--spectrum-button-padding-label-to-icon)); + min-inline-size: var(--mod-button-min-width, var(--spectrum-button-min-width)); + min-block-size: var(--mod-button-height, var(--spectrum-button-height)); + padding-block: 0; + padding-inline: var(--mod-button-edge-to-text, var(--spectrum-button-edge-to-text)); + position: relative; + color: inherit; + margin-block: var(--mod-button-margin-block); + margin-inline-end: var(--mod-button-margin-right); + margin-inline-start: var(--mod-button-margin-left); +} +.spectrum-Button:active { + box-shadow: none; +} +.spectrum-Button .spectrum-Icon { + --_icon-size-difference: max(0px, var(--spectrum-button-intended-icon-size) - var(--spectrum-icon-block-size, var(--spectrum-button-intended-icon-size))); + margin-block-start: var(--mod-button-icon-margin-block-start, max(0px, var(--mod-button-top-to-icon, var(--spectrum-button-top-to-icon)) - var(--mod-button-border-width, var(--spectrum-button-border-width)) + (var(--_icon-size-difference, 0px) / 2))); + margin-inline-start: calc(var(--mod-button-edge-to-visual, var(--spectrum-button-edge-to-visual)) - var(--mod-button-edge-to-text, var(--spectrum-button-edge-to-text))); + color: inherit; + flex-shrink: 0; + align-self: flex-start; +} +.spectrum-Button:after { + border-radius: calc(var(--mod-button-border-radius, var(--spectrum-button-border-radius)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))); +} +.spectrum-Button.spectrum-Button--iconOnly { + min-inline-size: unset; + padding: calc(var(--mod-button-edge-to-visual-only, var(--spectrum-button-edge-to-visual-only)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + border-radius: 50%; +} +.spectrum-Button.spectrum-Button--iconOnly .spectrum-Icon { + align-self: center; + margin-inline-start: 0; + margin-block-start: 0; +} +.spectrum-Button.spectrum-Button--iconOnly:after { + border-radius: 50%; +} +.spectrum-Button-label { + padding-block-start: calc(var(--mod-button-top-to-text, var(--spectrum-button-top-to-text)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + padding-block-end: calc(var(--mod-button-bottom-to-text, var(--spectrum-button-bottom-to-text)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + line-height: var(--mod-button-line-height, var(--spectrum-button-line-height)); + align-self: start; + text-align: var(--mod-button-text-align, center); +} +.spectrum-Button .spectrum-Icon + .spectrum-Button-label { + text-align: var(--mod-button-text-align-with-icon, start); +} +.spectrum-Button.is-focused:after, +.spectrum-Button:focus-visible:after { + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) var(--mod-button-focus-ring-color, var(--spectrum-button-focus-indicator-color)); +} +.spectrum-Button { + transition: border-color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration)) ease-in-out; +} +.spectrum-Button:after { + position: absolute; + inset: 0; + margin: calc((var(--mod-button-focus-ring-gap, var(--spectrum-button-focus-ring-gap)) + var(--mod-button-border-width, var(--spectrum-button-border-width))) * -1); + border-radius: var(--mod-button-focus-ring-border-radius, var(--spectrum-button-focus-ring-border-radius)); + transition: box-shadow var(--mod-button-animation-duration, var(--spectrum-button-animation-duration)) ease-in-out; + pointer-events: none; + content: ""; +} +.spectrum-Button:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-Button:focus-visible:after { + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) var(--highcontrast-button-focus-ring-color, var(--mod-button-focus-ring-color, var(--mod-button-focus-ring-color, var(--spectrum-button-focus-indicator-color)))); +} +.spectrum-Button { + background-color: var(--highcontrast-button-background-color-default, var(--mod-button-background-color-default, var(--spectrum-button-background-color-default))); + border-color: var(--highcontrast-button-border-color-default, var(--mod-button-border-color-default, var(--spectrum-button-border-color-default))); + color: var(--highcontrast-button-content-color-default, var(--mod-button-content-color-default, var(--spectrum-button-content-color-default))); + transition: + border var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear, + color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear, + background-color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear; +} +@media (hover: hover) { + .spectrum-Button:hover { + box-shadow: none; + background-color: var(--highcontrast-button-background-color-hover, var(--mod-button-background-color-hover, var(--spectrum-button-background-color-hover))); + border-color: var(--highcontrast-button-border-color-hover, var(--mod-button-border-color-hover, var(--spectrum-button-border-color-hover))); + color: var(--highcontrast-button-content-color-hover, var(--mod-button-content-color-hover, var(--spectrum-button-content-color-hover))); + } +} +.spectrum-Button:focus-visible { + background-color: var(--highcontrast-button-background-color-focus, var(--mod-button-background-color-focus, var(--spectrum-button-background-color-focus))); + border-color: var(--highcontrast-button-border-color-focus, var(--mod-button-border-color-focus, var(--spectrum-button-border-color-focus))); + color: var(--highcontrast-button-content-color-focus, var(--mod-button-content-color-focus, var(--spectrum-button-content-color-focus))); +} +.spectrum-Button:active { + background-color: var(--highcontrast-button-background-color-down, var(--mod-button-background-color-down, var(--spectrum-button-background-color-down))); + border-color: var(--highcontrast-button-border-color-down, var(--mod-button-border-color-down, var(--spectrum-button-border-color-down))); + color: var(--highcontrast-button-content-color-down, var(--mod-button-content-color-down, var(--spectrum-button-content-color-down))); +} +.spectrum-Button.is-disabled, +.spectrum-Button.is-pending, +.spectrum-Button:disabled, +.spectrum-Button[pending] { + background-color: var(--highcontrast-button-background-color-disabled, var(--mod-button-background-color-disabled, var(--spectrum-button-background-color-disabled))); + border-color: var(--highcontrast-button-border-color-disabled, var(--mod-button-border-color-disabled, var(--spectrum-button-border-color-disabled))); + color: var(--highcontrast-button-content-color-disabled, var(--mod-button-content-color-disabled, var(--spectrum-button-content-color-disabled))); +} +.spectrum-Button .spectrum-Button-label, +.spectrum-Button .spectrum-Icon { + visibility: visible; + opacity: 1; + transition: opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out; +} +.spectrum-Button .spectrum-ProgressCircle { + visibility: hidden; + opacity: 0; + transition: + opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)); +} +.spectrum-Button.is-pending, +.spectrum-Button[pending] { + cursor: default; +} +.spectrum-Button.is-pending .spectrum-Button-label, +.spectrum-Button.is-pending .spectrum-Icon, +.spectrum-Button[pending] .spectrum-Button-label, +.spectrum-Button[pending] .spectrum-Icon { + visibility: hidden; + opacity: 0; + transition: + opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)); +} +.spectrum-Button.is-pending .spectrum-ProgressCircle, +.spectrum-Button[pending] .spectrum-ProgressCircle { + visibility: visible; + opacity: 1; + transition: opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out; +} +.spectrum-Button--staticBlack, +.spectrum-Button--staticWhite { + --spectrum-button-focus-indicator-color: var(--mod-static-black-focus-indicator-color, var(--spectrum-static-black-focus-indicator-color)); +} +@media (forced-colors: active) { + .spectrum-Button { + --highcontrast-button-content-color-disabled: GrayText; + --highcontrast-button-border-color-disabled: GrayText; + --mod-progress-circle-track-border-color: ButtonText; + --mod-progress-circle-track-border-color-over-background: ButtonText; + --mod-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); + } + .spectrum-Button:focus-visible:after { + forced-color-adjust: none; + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) ButtonText; + } + .spectrum-Button.spectrum-Button--accent.spectrum-Button--fill { + --highcontrast-button-background-color-default: ButtonText; + --highcontrast-button-content-color-default: ButtonFace; + --highcontrast-button-background-color-disabled: ButtonFace; + --highcontrast-button-background-color-hover: Highlight; + --highcontrast-button-background-color-down: Highlight; + --highcontrast-button-background-color-focus: Highlight; + --highcontrast-button-content-color-hover: ButtonFace; + --highcontrast-button-content-color-down: ButtonFace; + --highcontrast-button-content-color-focus: ButtonFace; + } + .spectrum-Button.spectrum-Button--accent.spectrum-Button--fill .spectrum-Button-label { + forced-color-adjust: none; + } +} +.spectrum-Button { + --spectrum-button-background-color-default: var(--system-spectrum-button-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-content-color-disabled); +} +.spectrum-Button.spectrum-Button--accent { + --spectrum-button-background-color-default: var(--system-spectrum-button-accent-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-accent-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-accent-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-accent-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-accent-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-accent-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-accent-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-accent-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-accent-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-accent-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-accent-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-accent-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-accent-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-accent-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-accent-content-color-disabled); +} +.spectrum-Button.spectrum-Button--accent.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-accent-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-accent-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-accent-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-accent-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-accent-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-accent-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-accent-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-accent-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-accent-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-accent-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-accent-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-accent-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-accent-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-accent-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-accent-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--negative { + --spectrum-button-background-color-default: var(--system-spectrum-button-negative-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-negative-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-negative-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-negative-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-negative-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-negative-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-negative-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-negative-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-negative-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-negative-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-negative-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-negative-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-negative-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-negative-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-negative-content-color-disabled); +} +.spectrum-Button.spectrum-Button--negative.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-negative-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-negative-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-negative-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-negative-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-negative-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-negative-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-negative-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-negative-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-negative-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-negative-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-negative-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-negative-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-negative-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-negative-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-negative-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--primary { + --spectrum-button-background-color-default: var(--system-spectrum-button-primary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-primary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-primary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-primary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-primary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-primary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-primary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-primary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-primary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-primary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-primary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-primary-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-primary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-primary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-primary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--primary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-primary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-primary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-primary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-primary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-primary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-primary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-primary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-primary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-primary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-primary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-primary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-primary-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-primary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-primary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-primary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-secondary-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-secondary-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-secondary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--quiet { + --spectrum-button-background-color-default: var(--system-spectrum-button-quiet-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-quiet-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-quiet-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-quiet-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-quiet-border-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-quiet-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-quiet-border-color-disabled); +} +.spectrum-Button.is-selected { + --spectrum-button-background-color-default: var(--system-spectrum-button-selected-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-selected-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-selected-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-selected-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-selected-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-selected-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-selected-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-selected-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-selected-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-selected-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-selected-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-selected-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-selected-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-selected-border-color-disabled); +} +.spectrum-Button.is-selected.spectrum-Button--emphasized { + --spectrum-button-background-color-default: var(--system-spectrum-button-selected-emphasized-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-selected-emphasized-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-selected-emphasized-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-selected-emphasized-background-color-focus); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--quiet { + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-quiet-border-color-focus); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-quiet-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--quiet { + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-quiet-border-color-focus); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-quiet-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.is-selected { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-selected-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-selected-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-selected-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-selected-background-color-focus); + --spectrum-button-content-color-default: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-default)); + --spectrum-button-content-color-hover: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-hover)); + --spectrum-button-content-color-down: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-down)); + --spectrum-button-content-color-focus: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-focus)); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-selected-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-selected-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-secondary-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-secondary-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-secondary-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-secondary-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-secondary-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-content-color-disabled); +} +/*# sourceMappingURL=components/button/index.css.map */ diff --git a/components/button/index.css b/components/button/index.css new file mode 100644 index 0000000000..7390b568e2 --- /dev/null +++ b/components/button/index.css @@ -0,0 +1,1007 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-button-background-color-default: var(--spectrum-gray-75); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-border-color-default: var(--spectrum-gray-400); + --system-spectrum-button-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-button-border-color-down: var(--spectrum-gray-600); + --system-spectrum-button-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-button-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-background-color-disabled: transparent; + --system-spectrum-button-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-accent-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-accent-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-accent-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-accent-border-color-default: transparent; + --system-spectrum-button-accent-border-color-hover: transparent; + --system-spectrum-button-accent-border-color-down: transparent; + --system-spectrum-button-accent-border-color-focus: transparent; + --system-spectrum-button-accent-content-color-default: var(--spectrum-white); + --system-spectrum-button-accent-content-color-hover: var(--spectrum-white); + --system-spectrum-button-accent-content-color-down: var(--spectrum-white); + --system-spectrum-button-accent-content-color-focus: var(--spectrum-white); + --system-spectrum-button-accent-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-accent-border-color-disabled: transparent; + --system-spectrum-button-accent-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-outline-background-color-default: transparent; + --system-spectrum-button-accent-outline-background-color-hover: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-background-color-down: var(--spectrum-accent-color-300); + --system-spectrum-button-accent-outline-background-color-focus: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-button-accent-outline-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-button-accent-outline-border-color-focus: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-content-color-default: var(--spectrum-accent-content-color-default); + --system-spectrum-button-accent-outline-content-color-hover: var(--spectrum-accent-content-color-hover); + --system-spectrum-button-accent-outline-content-color-down: var(--spectrum-accent-content-color-down); + --system-spectrum-button-accent-outline-content-color-focus: var(--spectrum-accent-content-color-key-focus); + --system-spectrum-button-accent-outline-background-color-disabled: transparent; + --system-spectrum-button-accent-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-accent-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-background-color-default: var(--spectrum-negative-background-color-default); + --system-spectrum-button-negative-background-color-hover: var(--spectrum-negative-background-color-hover); + --system-spectrum-button-negative-background-color-down: var(--spectrum-negative-background-color-down); + --system-spectrum-button-negative-background-color-focus: var(--spectrum-negative-background-color-key-focus); + --system-spectrum-button-negative-border-color-default: transparent; + --system-spectrum-button-negative-border-color-hover: transparent; + --system-spectrum-button-negative-border-color-down: transparent; + --system-spectrum-button-negative-border-color-focus: transparent; + --system-spectrum-button-negative-content-color-default: var(--spectrum-white); + --system-spectrum-button-negative-content-color-hover: var(--spectrum-white); + --system-spectrum-button-negative-content-color-down: var(--spectrum-white); + --system-spectrum-button-negative-content-color-focus: var(--spectrum-white); + --system-spectrum-button-negative-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-negative-border-color-disabled: transparent; + --system-spectrum-button-negative-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-outline-background-color-default: transparent; + --system-spectrum-button-negative-outline-background-color-hover: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-background-color-down: var(--spectrum-negative-color-300); + --system-spectrum-button-negative-outline-background-color-focus: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-border-color-default: var(--spectrum-negative-color-900); + --system-spectrum-button-negative-outline-border-color-hover: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-border-color-down: var(--spectrum-negative-color-1100); + --system-spectrum-button-negative-outline-border-color-focus: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-content-color-default: var(--spectrum-negative-content-color-default); + --system-spectrum-button-negative-outline-content-color-hover: var(--spectrum-negative-content-color-hover); + --system-spectrum-button-negative-outline-content-color-down: var(--spectrum-negative-content-color-down); + --system-spectrum-button-negative-outline-content-color-focus: var(--spectrum-negative-content-color-key-focus); + --system-spectrum-button-negative-outline-background-color-disabled: transparent; + --system-spectrum-button-negative-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-negative-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-primary-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-primary-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-primary-background-color-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-button-primary-border-color-default: transparent; + --system-spectrum-button-primary-border-color-hover: transparent; + --system-spectrum-button-primary-border-color-down: transparent; + --system-spectrum-button-primary-border-color-focus: transparent; + --system-spectrum-button-primary-content-color-default: var(--spectrum-white); + --system-spectrum-button-primary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-primary-content-color-down: var(--spectrum-white); + --system-spectrum-button-primary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-primary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-primary-border-color-disabled: transparent; + --system-spectrum-button-primary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-outline-background-color-default: transparent; + --system-spectrum-button-primary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-primary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-border-color-default: var(--spectrum-gray-800); + --system-spectrum-button-primary-outline-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-down: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-primary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-primary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-primary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-primary-outline-background-color-disabled: transparent; + --system-spectrum-button-primary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-primary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-secondary-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-border-color-default: transparent; + --system-spectrum-button-secondary-border-color-hover: transparent; + --system-spectrum-button-secondary-border-color-down: transparent; + --system-spectrum-button-secondary-border-color-focus: transparent; + --system-spectrum-button-secondary-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-secondary-border-color-disabled: transparent; + --system-spectrum-button-secondary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-outline-background-color-default: transparent; + --system-spectrum-button-secondary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-default: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-border-color-down: var(--spectrum-gray-500); + --system-spectrum-button-secondary-outline-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-secondary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-secondary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-quiet-background-color-default: transparent; + --system-spectrum-button-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-quiet-border-color-default: transparent; + --system-spectrum-button-quiet-border-color-hover: transparent; + --system-spectrum-button-quiet-border-color-down: transparent; + --system-spectrum-button-quiet-border-color-focus: transparent; + --system-spectrum-button-quiet-background-color-disabled: transparent; + --system-spectrum-button-quiet-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-button-selected-border-color-default: transparent; + --system-spectrum-button-selected-border-color-hover: transparent; + --system-spectrum-button-selected-border-color-down: transparent; + --system-spectrum-button-selected-border-color-focus: transparent; + --system-spectrum-button-selected-content-color-default: var(--spectrum-white); + --system-spectrum-button-selected-content-color-hover: var(--spectrum-white); + --system-spectrum-button-selected-content-color-down: var(--spectrum-white); + --system-spectrum-button-selected-content-color-focus: var(--spectrum-white); + --system-spectrum-button-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-selected-border-color-disabled: transparent; + --system-spectrum-button-selected-emphasized-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-selected-emphasized-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-selected-emphasized-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-selected-emphasized-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-staticblack-quiet-border-color-default: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-button-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-button-staticblack-quiet-border-color-down: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-button-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-button-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-border-color-default: transparent; + --system-spectrum-button-staticwhite-border-color-hover: transparent; + --system-spectrum-button-staticwhite-border-color-down: transparent; + --system-spectrum-button-staticwhite-border-color-focus: transparent; + --system-spectrum-button-staticwhite-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-border-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-outline-border-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-selected-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-selected-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-selected-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-button-staticwhite-secondary-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-border-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-hover: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-down: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-focus: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-default: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-hover: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-border-color-down: var(--spectrum-transparent-white-500); + --system-spectrum-button-staticwhite-secondary-outline-border-color-focus: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticblack-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-button-staticblack-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-border-color-default: transparent; + --system-spectrum-button-staticblack-border-color-hover: transparent; + --system-spectrum-button-staticblack-border-color-down: transparent; + --system-spectrum-button-staticblack-border-color-focus: transparent; + --system-spectrum-button-staticblack-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-border-color-disabled: transparent; + --system-spectrum-button-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-button-staticblack-outline-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-button-staticblack-secondary-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-border-color-default: transparent; + --system-spectrum-button-staticblack-secondary-border-color-hover: transparent; + --system-spectrum-button-staticblack-secondary-border-color-down: transparent; + --system-spectrum-button-staticblack-secondary-border-color-focus: transparent; + --system-spectrum-button-staticblack-secondary-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-secondary-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-default: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-hover: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-border-color-down: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-secondary-outline-border-color-focus: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); +} +.spectrum--express { + --system-spectrum-button-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-border-color-default: transparent; + --system-spectrum-button-border-color-hover: transparent; + --system-spectrum-button-border-color-down: transparent; + --system-spectrum-button-border-color-focus: transparent; + --system-spectrum-button-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-background-color-key-focus); +} +.spectrum-Button { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-Button::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-Button:focus { + outline: none; +} +.spectrum-Button.is-disabled, +.spectrum-Button:disabled { + cursor: default; +} +.spectrum-Button:after { + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + display: block; + margin: calc(var(--mod-button-focus-indicator-gap, var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))) * -1); + transition: + opacity var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out, + margin var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out; +} +.spectrum-Button:focus-visible:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -2); +} +a.spectrum-Button { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-Button-label { + align-self: center; + justify-self: center; + text-align: center; +} +.spectrum-Button-label:empty { + display: none; +} +.spectrum-Button { + --spectrum-button-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-button-border-radius: var(--spectrum-corner-radius-100); + --spectrum-button-border-width: var(--spectrum-border-width-200); + --spectrum-button-line-height: 1.2; + --spectrum-button-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-button-focus-ring-border-radius: calc(var(--spectrum-button-border-radius) + var(--spectrum-button-focus-ring-gap)); + --spectrum-button-focus-ring-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-button-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-50); + --mod-progress-circle-position: absolute; +} +.spectrum-Button--sizeS { + --spectrum-button-min-width: calc(var(--spectrum-component-height-75) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-75); + --spectrum-button-height: var(--spectrum-component-height-75); + --spectrum-button-font-size: var(--spectrum-font-size-75); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-75) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-75); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-75) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-75); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-small); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-small); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-75); +} +.spectrum-Button--sizeM { + --spectrum-button-min-width: calc(var(--spectrum-component-height-100) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-100); + --spectrum-button-height: var(--spectrum-component-height-100); + --spectrum-button-font-size: var(--spectrum-font-size-100); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-100) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-100); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-100) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-medium); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-medium); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-100); +} +.spectrum-Button--sizeL { + --spectrum-button-min-width: calc(var(--spectrum-component-height-200) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-200); + --spectrum-button-height: var(--spectrum-component-height-200); + --spectrum-button-font-size: var(--spectrum-font-size-200); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-200) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-200); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-200) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-200); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-large); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-large); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-200); +} +.spectrum-Button--sizeXL { + --spectrum-button-min-width: calc(var(--spectrum-component-height-300) * var(--spectrum-button-minimum-width-multiplier)); + --spectrum-button-border-radius: var(--spectrum-component-pill-edge-to-text-300); + --spectrum-button-height: var(--spectrum-component-height-300); + --spectrum-button-font-size: var(--spectrum-font-size-300); + --spectrum-button-edge-to-visual: calc(var(--spectrum-component-pill-edge-to-visual-300) - var(--spectrum-button-border-width)); + --spectrum-button-edge-to-visual-only: var(--spectrum-component-pill-edge-to-visual-only-300); + --spectrum-button-edge-to-text: calc(var(--spectrum-component-pill-edge-to-text-300) - var(--spectrum-button-border-width)); + --spectrum-button-padding-label-to-icon: var(--spectrum-text-to-visual-300); + --spectrum-button-top-to-text: var(--spectrum-button-top-to-text-extra-large); + --spectrum-button-bottom-to-text: var(--spectrum-button-bottom-to-text-extra-large); + --spectrum-button-top-to-icon: var(--spectrum-component-top-to-workflow-icon-300); + --spectrum-button-intended-icon-size: var(--spectrum-workflow-icon-size-300); +} +.spectrum-Button { + border-radius: var(--mod-button-border-radius, var(--spectrum-button-border-radius)); + border-width: var(--mod-button-border-width, var(--spectrum-button-border-width)); + border-style: solid; + font-size: var(--mod-button-font-size, var(--spectrum-button-font-size)); + font-weight: var(--mod-bold-font-weight, var(--spectrum-bold-font-weight)); + gap: var(--mod-button-padding-label-to-icon, var(--spectrum-button-padding-label-to-icon)); + min-inline-size: var(--mod-button-min-width, var(--spectrum-button-min-width)); + min-block-size: var(--mod-button-height, var(--spectrum-button-height)); + padding-block: 0; + padding-inline: var(--mod-button-edge-to-text, var(--spectrum-button-edge-to-text)); + position: relative; + color: inherit; + margin-block: var(--mod-button-margin-block); + margin-inline-end: var(--mod-button-margin-right); + margin-inline-start: var(--mod-button-margin-left); +} +.spectrum-Button:active { + box-shadow: none; +} +.spectrum-Button .spectrum-Icon { + --_icon-size-difference: max(0px, var(--spectrum-button-intended-icon-size) - var(--spectrum-icon-block-size, var(--spectrum-button-intended-icon-size))); + margin-block-start: var(--mod-button-icon-margin-block-start, max(0px, var(--mod-button-top-to-icon, var(--spectrum-button-top-to-icon)) - var(--mod-button-border-width, var(--spectrum-button-border-width)) + (var(--_icon-size-difference, 0px) / 2))); + margin-inline-start: calc(var(--mod-button-edge-to-visual, var(--spectrum-button-edge-to-visual)) - var(--mod-button-edge-to-text, var(--spectrum-button-edge-to-text))); + color: inherit; + flex-shrink: 0; + align-self: flex-start; +} +.spectrum-Button:after { + border-radius: calc(var(--mod-button-border-radius, var(--spectrum-button-border-radius)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))); +} +.spectrum-Button.spectrum-Button--iconOnly { + min-inline-size: unset; + padding: calc(var(--mod-button-edge-to-visual-only, var(--spectrum-button-edge-to-visual-only)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + border-radius: 50%; +} +.spectrum-Button.spectrum-Button--iconOnly .spectrum-Icon { + align-self: center; + margin-inline-start: 0; + margin-block-start: 0; +} +.spectrum-Button.spectrum-Button--iconOnly:after { + border-radius: 50%; +} +.spectrum-Button-label { + padding-block-start: calc(var(--mod-button-top-to-text, var(--spectrum-button-top-to-text)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + padding-block-end: calc(var(--mod-button-bottom-to-text, var(--spectrum-button-bottom-to-text)) - var(--mod-button-border-width, var(--spectrum-button-border-width))); + line-height: var(--mod-button-line-height, var(--spectrum-button-line-height)); + align-self: start; + text-align: var(--mod-button-text-align, center); +} +.spectrum-Button .spectrum-Icon + .spectrum-Button-label { + text-align: var(--mod-button-text-align-with-icon, start); +} +.spectrum-Button.is-focused:after, +.spectrum-Button:focus-visible:after { + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) var(--mod-button-focus-ring-color, var(--spectrum-button-focus-indicator-color)); +} +.spectrum-Button { + transition: border-color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration)) ease-in-out; +} +.spectrum-Button:after { + position: absolute; + inset: 0; + margin: calc((var(--mod-button-focus-ring-gap, var(--spectrum-button-focus-ring-gap)) + var(--mod-button-border-width, var(--spectrum-button-border-width))) * -1); + border-radius: var(--mod-button-focus-ring-border-radius, var(--spectrum-button-focus-ring-border-radius)); + transition: box-shadow var(--mod-button-animation-duration, var(--spectrum-button-animation-duration)) ease-in-out; + pointer-events: none; + content: ""; +} +.spectrum-Button:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-Button:focus-visible:after { + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) var(--highcontrast-button-focus-ring-color, var(--mod-button-focus-ring-color, var(--mod-button-focus-ring-color, var(--spectrum-button-focus-indicator-color)))); +} +.spectrum-Button { + background-color: var(--highcontrast-button-background-color-default, var(--mod-button-background-color-default, var(--spectrum-button-background-color-default))); + border-color: var(--highcontrast-button-border-color-default, var(--mod-button-border-color-default, var(--spectrum-button-border-color-default))); + color: var(--highcontrast-button-content-color-default, var(--mod-button-content-color-default, var(--spectrum-button-content-color-default))); + transition: + border var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear, + color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear, + background-color var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) linear; +} +@media (hover: hover) { + .spectrum-Button:hover { + box-shadow: none; + background-color: var(--highcontrast-button-background-color-hover, var(--mod-button-background-color-hover, var(--spectrum-button-background-color-hover))); + border-color: var(--highcontrast-button-border-color-hover, var(--mod-button-border-color-hover, var(--spectrum-button-border-color-hover))); + color: var(--highcontrast-button-content-color-hover, var(--mod-button-content-color-hover, var(--spectrum-button-content-color-hover))); + } +} +.spectrum-Button:focus-visible { + background-color: var(--highcontrast-button-background-color-focus, var(--mod-button-background-color-focus, var(--spectrum-button-background-color-focus))); + border-color: var(--highcontrast-button-border-color-focus, var(--mod-button-border-color-focus, var(--spectrum-button-border-color-focus))); + color: var(--highcontrast-button-content-color-focus, var(--mod-button-content-color-focus, var(--spectrum-button-content-color-focus))); +} +.spectrum-Button:active { + background-color: var(--highcontrast-button-background-color-down, var(--mod-button-background-color-down, var(--spectrum-button-background-color-down))); + border-color: var(--highcontrast-button-border-color-down, var(--mod-button-border-color-down, var(--spectrum-button-border-color-down))); + color: var(--highcontrast-button-content-color-down, var(--mod-button-content-color-down, var(--spectrum-button-content-color-down))); +} +.spectrum-Button.is-disabled, +.spectrum-Button.is-pending, +.spectrum-Button:disabled, +.spectrum-Button[pending] { + background-color: var(--highcontrast-button-background-color-disabled, var(--mod-button-background-color-disabled, var(--spectrum-button-background-color-disabled))); + border-color: var(--highcontrast-button-border-color-disabled, var(--mod-button-border-color-disabled, var(--spectrum-button-border-color-disabled))); + color: var(--highcontrast-button-content-color-disabled, var(--mod-button-content-color-disabled, var(--spectrum-button-content-color-disabled))); +} +.spectrum-Button .spectrum-Button-label, +.spectrum-Button .spectrum-Icon { + visibility: visible; + opacity: 1; + transition: opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out; +} +.spectrum-Button .spectrum-ProgressCircle { + visibility: hidden; + opacity: 0; + transition: + opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)); +} +.spectrum-Button.is-pending, +.spectrum-Button[pending] { + cursor: default; +} +.spectrum-Button.is-pending .spectrum-Button-label, +.spectrum-Button.is-pending .spectrum-Icon, +.spectrum-Button[pending] .spectrum-Button-label, +.spectrum-Button[pending] .spectrum-Icon { + visibility: hidden; + opacity: 0; + transition: + opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)); +} +.spectrum-Button.is-pending .spectrum-ProgressCircle, +.spectrum-Button[pending] .spectrum-ProgressCircle { + visibility: visible; + opacity: 1; + transition: opacity var(--mod-button-animation-duration, var(--spectrum-button-animation-duration, 0.13s)) ease-in-out; +} +.spectrum-Button--staticBlack, +.spectrum-Button--staticWhite { + --spectrum-button-focus-indicator-color: var(--mod-static-black-focus-indicator-color, var(--spectrum-static-black-focus-indicator-color)); +} +@media (forced-colors: active) { + .spectrum-Button { + --highcontrast-button-content-color-disabled: GrayText; + --highcontrast-button-border-color-disabled: GrayText; + --mod-progress-circle-track-border-color: ButtonText; + --mod-progress-circle-track-border-color-over-background: ButtonText; + --mod-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); + } + .spectrum-Button:focus-visible:after { + forced-color-adjust: none; + box-shadow: 0 0 0 var(--mod-button-focus-ring-thickness, var(--spectrum-button-focus-ring-thickness)) ButtonText; + } + .spectrum-Button.spectrum-Button--accent.spectrum-Button--fill { + --highcontrast-button-background-color-default: ButtonText; + --highcontrast-button-content-color-default: ButtonFace; + --highcontrast-button-background-color-disabled: ButtonFace; + --highcontrast-button-background-color-hover: Highlight; + --highcontrast-button-background-color-down: Highlight; + --highcontrast-button-background-color-focus: Highlight; + --highcontrast-button-content-color-hover: ButtonFace; + --highcontrast-button-content-color-down: ButtonFace; + --highcontrast-button-content-color-focus: ButtonFace; + } + .spectrum-Button.spectrum-Button--accent.spectrum-Button--fill .spectrum-Button-label { + forced-color-adjust: none; + } +} +.spectrum-Button { + --spectrum-button-background-color-default: var(--system-spectrum-button-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-content-color-disabled); +} +.spectrum-Button.spectrum-Button--accent { + --spectrum-button-background-color-default: var(--system-spectrum-button-accent-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-accent-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-accent-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-accent-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-accent-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-accent-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-accent-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-accent-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-accent-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-accent-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-accent-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-accent-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-accent-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-accent-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-accent-content-color-disabled); +} +.spectrum-Button.spectrum-Button--accent.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-accent-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-accent-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-accent-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-accent-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-accent-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-accent-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-accent-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-accent-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-accent-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-accent-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-accent-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-accent-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-accent-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-accent-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-accent-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--negative { + --spectrum-button-background-color-default: var(--system-spectrum-button-negative-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-negative-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-negative-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-negative-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-negative-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-negative-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-negative-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-negative-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-negative-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-negative-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-negative-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-negative-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-negative-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-negative-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-negative-content-color-disabled); +} +.spectrum-Button.spectrum-Button--negative.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-negative-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-negative-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-negative-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-negative-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-negative-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-negative-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-negative-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-negative-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-negative-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-negative-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-negative-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-negative-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-negative-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-negative-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-negative-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--primary { + --spectrum-button-background-color-default: var(--system-spectrum-button-primary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-primary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-primary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-primary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-primary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-primary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-primary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-primary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-primary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-primary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-primary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-primary-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-primary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-primary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-primary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--primary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-primary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-primary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-primary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-primary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-primary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-primary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-primary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-primary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-primary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-primary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-primary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-primary-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-primary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-primary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-primary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-secondary-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-secondary-outline-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-secondary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--quiet { + --spectrum-button-background-color-default: var(--system-spectrum-button-quiet-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-quiet-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-quiet-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-quiet-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-quiet-border-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-quiet-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-quiet-border-color-disabled); +} +.spectrum-Button.is-selected { + --spectrum-button-background-color-default: var(--system-spectrum-button-selected-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-selected-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-selected-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-selected-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-selected-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-selected-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-selected-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-selected-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-selected-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-selected-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-selected-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-selected-content-color-focus); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-selected-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-selected-border-color-disabled); +} +.spectrum-Button.is-selected.spectrum-Button--emphasized { + --spectrum-button-background-color-default: var(--system-spectrum-button-selected-emphasized-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-selected-emphasized-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-selected-emphasized-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-selected-emphasized-background-color-focus); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--quiet { + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-quiet-border-color-focus); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-quiet-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--quiet { + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-quiet-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-quiet-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-quiet-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-quiet-border-color-focus); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-quiet-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.is-selected { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-selected-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-selected-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-selected-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-selected-background-color-focus); + --spectrum-button-content-color-default: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-default)); + --spectrum-button-content-color-hover: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-hover)); + --spectrum-button-content-color-down: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-down)); + --spectrum-button-content-color-focus: var(--mod-button-static-content-color, var(--system-spectrum-button-staticwhite-selected-content-color-focus)); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-selected-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-selected-border-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-secondary-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-secondary-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticwhite-secondary-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-outline-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-secondary-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-secondary-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-secondary-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-secondary-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-secondary-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-secondary-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-secondary-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-secondary-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-secondary-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-secondary-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-secondary-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-secondary-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-secondary-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-secondary-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-secondary-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-secondary-content-color-disabled); +} +.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary.spectrum-Button--outline { + --spectrum-button-background-color-default: var(--system-spectrum-button-staticblack-secondary-outline-background-color-default); + --spectrum-button-background-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-background-color-hover); + --spectrum-button-background-color-down: var(--system-spectrum-button-staticblack-secondary-outline-background-color-down); + --spectrum-button-background-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-background-color-focus); + --spectrum-button-border-color-default: var(--system-spectrum-button-staticblack-secondary-outline-border-color-default); + --spectrum-button-border-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-border-color-hover); + --spectrum-button-border-color-down: var(--system-spectrum-button-staticblack-secondary-outline-border-color-down); + --spectrum-button-border-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-border-color-focus); + --spectrum-button-content-color-default: var(--system-spectrum-button-staticblack-secondary-outline-content-color-default); + --spectrum-button-content-color-hover: var(--system-spectrum-button-staticblack-secondary-outline-content-color-hover); + --spectrum-button-content-color-down: var(--system-spectrum-button-staticblack-secondary-outline-content-color-down); + --spectrum-button-content-color-focus: var(--system-spectrum-button-staticblack-secondary-outline-content-color-focus); + --spectrum-button-focus-indicator-color: var(--system-spectrum-button-staticblack-secondary-outline-focus-indicator-color); + --spectrum-button-background-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-background-color-disabled); + --spectrum-button-border-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-border-color-disabled); + --spectrum-button-content-color-disabled: var(--system-spectrum-button-staticblack-secondary-outline-content-color-disabled); +} +/*# sourceMappingURL=components/button/index.css.map */ diff --git a/components/button/metadata.json b/components/button/metadata.json new file mode 100644 index 0000000000..c144964b89 --- /dev/null +++ b/components/button/metadata.json @@ -0,0 +1,601 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Button", + ".spectrum-Button .spectrum-Button-label,\n.spectrum-Button .spectrum-Icon", + ".spectrum-Button .spectrum-Icon", + ".spectrum-Button .spectrum-Icon + .spectrum-Button-label", + ".spectrum-Button .spectrum-ProgressCircle", + ".spectrum-Button--sizeL", + ".spectrum-Button--sizeM", + ".spectrum-Button--sizeS", + ".spectrum-Button--sizeXL", + ".spectrum-Button--staticBlack,\n.spectrum-Button--staticWhite", + ".spectrum-Button-label", + ".spectrum-Button-label:empty", + ".spectrum-Button.is-disabled,\n.spectrum-Button.is-pending,\n.spectrum-Button:disabled,\n.spectrum-Button[pending]", + ".spectrum-Button.is-disabled,\n.spectrum-Button:disabled", + ".spectrum-Button.is-focused:after,\n.spectrum-Button:focus-visible:after", + ".spectrum-Button.is-pending .spectrum-Button-label,\n.spectrum-Button.is-pending .spectrum-Icon,\n.spectrum-Button[pending] .spectrum-Button-label,\n.spectrum-Button[pending] .spectrum-Icon", + ".spectrum-Button.is-pending .spectrum-ProgressCircle,\n.spectrum-Button[pending] .spectrum-ProgressCircle", + ".spectrum-Button.is-pending,\n.spectrum-Button[pending]", + ".spectrum-Button.is-selected", + ".spectrum-Button.is-selected.spectrum-Button--emphasized", + ".spectrum-Button.spectrum-Button--accent", + ".spectrum-Button.spectrum-Button--accent.spectrum-Button--fill", + ".spectrum-Button.spectrum-Button--accent.spectrum-Button--fill .spectrum-Button-label", + ".spectrum-Button.spectrum-Button--accent.spectrum-Button--outline", + ".spectrum-Button.spectrum-Button--iconOnly", + ".spectrum-Button.spectrum-Button--iconOnly .spectrum-Icon", + ".spectrum-Button.spectrum-Button--iconOnly:after", + ".spectrum-Button.spectrum-Button--negative", + ".spectrum-Button.spectrum-Button--negative.spectrum-Button--outline", + ".spectrum-Button.spectrum-Button--primary", + ".spectrum-Button.spectrum-Button--primary.spectrum-Button--outline", + ".spectrum-Button.spectrum-Button--quiet", + ".spectrum-Button.spectrum-Button--secondary", + ".spectrum-Button.spectrum-Button--secondary.spectrum-Button--outline", + ".spectrum-Button.spectrum-Button--staticBlack", + ".spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--outline", + ".spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--quiet", + ".spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary", + ".spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary.spectrum-Button--outline", + ".spectrum-Button.spectrum-Button--staticWhite", + ".spectrum-Button.spectrum-Button--staticWhite.is-selected", + ".spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--outline", + ".spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--quiet", + ".spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary", + ".spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary.spectrum-Button--outline", + ".spectrum-Button::-moz-focus-inner", + ".spectrum-Button:active", + ".spectrum-Button:after", + ".spectrum-Button:focus", + ".spectrum-Button:focus-visible", + ".spectrum-Button:focus-visible:after", + ".spectrum-Button:hover", + "a.spectrum-Button" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-bold-font-weight", + "--mod-button-animation-duration", + "--mod-button-background-color-default", + "--mod-button-background-color-disabled", + "--mod-button-background-color-down", + "--mod-button-background-color-focus", + "--mod-button-background-color-hover", + "--mod-button-border-color-default", + "--mod-button-border-color-disabled", + "--mod-button-border-color-down", + "--mod-button-border-color-focus", + "--mod-button-border-color-hover", + "--mod-button-border-radius", + "--mod-button-border-width", + "--mod-button-bottom-to-text", + "--mod-button-content-color-default", + "--mod-button-content-color-disabled", + "--mod-button-content-color-down", + "--mod-button-content-color-focus", + "--mod-button-content-color-hover", + "--mod-button-edge-to-text", + "--mod-button-edge-to-visual", + "--mod-button-edge-to-visual-only", + "--mod-button-focus-indicator-gap", + "--mod-button-focus-ring-border-radius", + "--mod-button-focus-ring-color", + "--mod-button-focus-ring-gap", + "--mod-button-focus-ring-thickness", + "--mod-button-font-family", + "--mod-button-font-size", + "--mod-button-height", + "--mod-button-icon-margin-block-start", + "--mod-button-line-height", + "--mod-button-margin-block", + "--mod-button-margin-left", + "--mod-button-margin-right", + "--mod-button-min-width", + "--mod-button-padding-label-to-icon", + "--mod-button-static-content-color", + "--mod-button-text-align", + "--mod-button-text-align-with-icon", + "--mod-button-top-to-icon", + "--mod-button-top-to-text", + "--mod-focus-indicator-gap", + "--mod-line-height-100", + "--mod-sans-font-family-stack", + "--mod-static-black-focus-indicator-color" + ], + "spectrum": [ + "--spectrum-accent-background-color-default", + "--spectrum-accent-background-color-down", + "--spectrum-accent-background-color-hover", + "--spectrum-accent-background-color-key-focus", + "--spectrum-accent-color-1000", + "--spectrum-accent-color-1100", + "--spectrum-accent-color-200", + "--spectrum-accent-color-300", + "--spectrum-accent-color-900", + "--spectrum-accent-content-color-default", + "--spectrum-accent-content-color-down", + "--spectrum-accent-content-color-hover", + "--spectrum-accent-content-color-key-focus", + "--spectrum-animation-duration-100", + "--spectrum-black", + "--spectrum-bold-font-weight", + "--spectrum-border-width-200", + "--spectrum-button-animation-duration", + "--spectrum-button-background-color-default", + "--spectrum-button-background-color-disabled", + "--spectrum-button-background-color-down", + "--spectrum-button-background-color-focus", + "--spectrum-button-background-color-hover", + "--spectrum-button-border-color-default", + "--spectrum-button-border-color-disabled", + "--spectrum-button-border-color-down", + "--spectrum-button-border-color-focus", + "--spectrum-button-border-color-hover", + "--spectrum-button-border-radius", + "--spectrum-button-border-width", + "--spectrum-button-bottom-to-text", + "--spectrum-button-bottom-to-text-extra-large", + "--spectrum-button-bottom-to-text-large", + "--spectrum-button-bottom-to-text-medium", + "--spectrum-button-bottom-to-text-small", + "--spectrum-button-content-color-default", + "--spectrum-button-content-color-disabled", + "--spectrum-button-content-color-down", + "--spectrum-button-content-color-focus", + "--spectrum-button-content-color-hover", + "--spectrum-button-edge-to-text", + "--spectrum-button-edge-to-visual", + "--spectrum-button-edge-to-visual-only", + "--spectrum-button-focus-indicator-color", + "--spectrum-button-focus-ring-border-radius", + "--spectrum-button-focus-ring-gap", + "--spectrum-button-focus-ring-thickness", + "--spectrum-button-font-size", + "--spectrum-button-height", + "--spectrum-button-intended-icon-size", + "--spectrum-button-line-height", + "--spectrum-button-min-width", + "--spectrum-button-minimum-width-multiplier", + "--spectrum-button-padding-label-to-icon", + "--spectrum-button-top-to-icon", + "--spectrum-button-top-to-text", + "--spectrum-button-top-to-text-extra-large", + "--spectrum-button-top-to-text-large", + "--spectrum-button-top-to-text-medium", + "--spectrum-button-top-to-text-small", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-pill-edge-to-text-100", + "--spectrum-component-pill-edge-to-text-200", + "--spectrum-component-pill-edge-to-text-300", + "--spectrum-component-pill-edge-to-text-75", + "--spectrum-component-pill-edge-to-visual-100", + "--spectrum-component-pill-edge-to-visual-200", + "--spectrum-component-pill-edge-to-visual-300", + "--spectrum-component-pill-edge-to-visual-75", + "--spectrum-component-pill-edge-to-visual-only-100", + "--spectrum-component-pill-edge-to-visual-only-200", + "--spectrum-component-pill-edge-to-visual-only-300", + "--spectrum-component-pill-edge-to-visual-only-75", + "--spectrum-component-top-to-workflow-icon-100", + "--spectrum-component-top-to-workflow-icon-200", + "--spectrum-component-top-to-workflow-icon-300", + "--spectrum-component-top-to-workflow-icon-75", + "--spectrum-corner-radius-100", + "--spectrum-disabled-background-color", + "--spectrum-disabled-border-color", + "--spectrum-disabled-content-color", + "--spectrum-disabled-static-black-background-color", + "--spectrum-disabled-static-black-border-color", + "--spectrum-disabled-static-black-content-color", + "--spectrum-disabled-static-white-background-color", + "--spectrum-disabled-static-white-border-color", + "--spectrum-disabled-static-white-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-75", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-icon-block-size", + "--spectrum-line-height-100", + "--spectrum-negative-background-color-default", + "--spectrum-negative-background-color-down", + "--spectrum-negative-background-color-hover", + "--spectrum-negative-background-color-key-focus", + "--spectrum-negative-color-1000", + "--spectrum-negative-color-1100", + "--spectrum-negative-color-200", + "--spectrum-negative-color-300", + "--spectrum-negative-color-900", + "--spectrum-negative-content-color-default", + "--spectrum-negative-content-color-down", + "--spectrum-negative-content-color-hover", + "--spectrum-negative-content-color-key-focus", + "--spectrum-neutral-background-color-default", + "--spectrum-neutral-background-color-down", + "--spectrum-neutral-background-color-hover", + "--spectrum-neutral-background-color-key-focus", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-neutral-subdued-background-color-default", + "--spectrum-neutral-subdued-background-color-down", + "--spectrum-neutral-subdued-background-color-hover", + "--spectrum-neutral-subdued-background-color-key-focus", + "--spectrum-progress-circle-thickness-medium", + "--spectrum-sans-font-family-stack", + "--spectrum-static-black-focus-indicator-color", + "--spectrum-static-white-focus-indicator-color", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-75", + "--spectrum-transparent-black-200", + "--spectrum-transparent-black-300", + "--spectrum-transparent-black-400", + "--spectrum-transparent-black-500", + "--spectrum-transparent-black-600", + "--spectrum-transparent-black-800", + "--spectrum-transparent-black-900", + "--spectrum-transparent-white-200", + "--spectrum-transparent-white-300", + "--spectrum-transparent-white-400", + "--spectrum-transparent-white-500", + "--spectrum-transparent-white-800", + "--spectrum-transparent-white-900", + "--spectrum-white", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-50", + "--spectrum-workflow-icon-size-75" + ], + "system": [ + "--system-spectrum-button-accent-background-color-default", + "--system-spectrum-button-accent-background-color-disabled", + "--system-spectrum-button-accent-background-color-down", + "--system-spectrum-button-accent-background-color-focus", + "--system-spectrum-button-accent-background-color-hover", + "--system-spectrum-button-accent-border-color-default", + "--system-spectrum-button-accent-border-color-disabled", + "--system-spectrum-button-accent-border-color-down", + "--system-spectrum-button-accent-border-color-focus", + "--system-spectrum-button-accent-border-color-hover", + "--system-spectrum-button-accent-content-color-default", + "--system-spectrum-button-accent-content-color-disabled", + "--system-spectrum-button-accent-content-color-down", + "--system-spectrum-button-accent-content-color-focus", + "--system-spectrum-button-accent-content-color-hover", + "--system-spectrum-button-accent-outline-background-color-default", + "--system-spectrum-button-accent-outline-background-color-disabled", + "--system-spectrum-button-accent-outline-background-color-down", + "--system-spectrum-button-accent-outline-background-color-focus", + "--system-spectrum-button-accent-outline-background-color-hover", + "--system-spectrum-button-accent-outline-border-color-default", + "--system-spectrum-button-accent-outline-border-color-disabled", + "--system-spectrum-button-accent-outline-border-color-down", + "--system-spectrum-button-accent-outline-border-color-focus", + "--system-spectrum-button-accent-outline-border-color-hover", + "--system-spectrum-button-accent-outline-content-color-default", + "--system-spectrum-button-accent-outline-content-color-disabled", + "--system-spectrum-button-accent-outline-content-color-down", + "--system-spectrum-button-accent-outline-content-color-focus", + "--system-spectrum-button-accent-outline-content-color-hover", + "--system-spectrum-button-background-color-default", + "--system-spectrum-button-background-color-disabled", + "--system-spectrum-button-background-color-down", + "--system-spectrum-button-background-color-focus", + "--system-spectrum-button-background-color-hover", + "--system-spectrum-button-border-color-default", + "--system-spectrum-button-border-color-disabled", + "--system-spectrum-button-border-color-down", + "--system-spectrum-button-border-color-focus", + "--system-spectrum-button-border-color-hover", + "--system-spectrum-button-content-color-default", + "--system-spectrum-button-content-color-disabled", + "--system-spectrum-button-content-color-down", + "--system-spectrum-button-content-color-focus", + "--system-spectrum-button-content-color-hover", + "--system-spectrum-button-negative-background-color-default", + "--system-spectrum-button-negative-background-color-disabled", + "--system-spectrum-button-negative-background-color-down", + "--system-spectrum-button-negative-background-color-focus", + "--system-spectrum-button-negative-background-color-hover", + "--system-spectrum-button-negative-border-color-default", + "--system-spectrum-button-negative-border-color-disabled", + "--system-spectrum-button-negative-border-color-down", + "--system-spectrum-button-negative-border-color-focus", + "--system-spectrum-button-negative-border-color-hover", + "--system-spectrum-button-negative-content-color-default", + "--system-spectrum-button-negative-content-color-disabled", + "--system-spectrum-button-negative-content-color-down", + "--system-spectrum-button-negative-content-color-focus", + "--system-spectrum-button-negative-content-color-hover", + "--system-spectrum-button-negative-outline-background-color-default", + "--system-spectrum-button-negative-outline-background-color-disabled", + "--system-spectrum-button-negative-outline-background-color-down", + "--system-spectrum-button-negative-outline-background-color-focus", + "--system-spectrum-button-negative-outline-background-color-hover", + "--system-spectrum-button-negative-outline-border-color-default", + "--system-spectrum-button-negative-outline-border-color-disabled", + "--system-spectrum-button-negative-outline-border-color-down", + "--system-spectrum-button-negative-outline-border-color-focus", + "--system-spectrum-button-negative-outline-border-color-hover", + "--system-spectrum-button-negative-outline-content-color-default", + "--system-spectrum-button-negative-outline-content-color-disabled", + "--system-spectrum-button-negative-outline-content-color-down", + "--system-spectrum-button-negative-outline-content-color-focus", + "--system-spectrum-button-negative-outline-content-color-hover", + "--system-spectrum-button-primary-background-color-default", + "--system-spectrum-button-primary-background-color-disabled", + "--system-spectrum-button-primary-background-color-down", + "--system-spectrum-button-primary-background-color-focus", + "--system-spectrum-button-primary-background-color-hover", + "--system-spectrum-button-primary-border-color-default", + "--system-spectrum-button-primary-border-color-disabled", + "--system-spectrum-button-primary-border-color-down", + "--system-spectrum-button-primary-border-color-focus", + "--system-spectrum-button-primary-border-color-hover", + "--system-spectrum-button-primary-content-color-default", + "--system-spectrum-button-primary-content-color-disabled", + "--system-spectrum-button-primary-content-color-down", + "--system-spectrum-button-primary-content-color-focus", + "--system-spectrum-button-primary-content-color-hover", + "--system-spectrum-button-primary-outline-background-color-default", + "--system-spectrum-button-primary-outline-background-color-disabled", + "--system-spectrum-button-primary-outline-background-color-down", + "--system-spectrum-button-primary-outline-background-color-focus", + "--system-spectrum-button-primary-outline-background-color-hover", + "--system-spectrum-button-primary-outline-border-color-default", + "--system-spectrum-button-primary-outline-border-color-disabled", + "--system-spectrum-button-primary-outline-border-color-down", + "--system-spectrum-button-primary-outline-border-color-focus", + "--system-spectrum-button-primary-outline-border-color-hover", + "--system-spectrum-button-primary-outline-content-color-default", + "--system-spectrum-button-primary-outline-content-color-disabled", + "--system-spectrum-button-primary-outline-content-color-down", + "--system-spectrum-button-primary-outline-content-color-focus", + "--system-spectrum-button-primary-outline-content-color-hover", + "--system-spectrum-button-quiet-background-color-default", + "--system-spectrum-button-quiet-background-color-disabled", + "--system-spectrum-button-quiet-background-color-down", + "--system-spectrum-button-quiet-background-color-focus", + "--system-spectrum-button-quiet-background-color-hover", + "--system-spectrum-button-quiet-border-color-default", + "--system-spectrum-button-quiet-border-color-disabled", + "--system-spectrum-button-quiet-border-color-down", + "--system-spectrum-button-quiet-border-color-focus", + "--system-spectrum-button-quiet-border-color-hover", + "--system-spectrum-button-secondary-background-color-default", + "--system-spectrum-button-secondary-background-color-disabled", + "--system-spectrum-button-secondary-background-color-down", + "--system-spectrum-button-secondary-background-color-focus", + "--system-spectrum-button-secondary-background-color-hover", + "--system-spectrum-button-secondary-border-color-default", + "--system-spectrum-button-secondary-border-color-disabled", + "--system-spectrum-button-secondary-border-color-down", + "--system-spectrum-button-secondary-border-color-focus", + "--system-spectrum-button-secondary-border-color-hover", + "--system-spectrum-button-secondary-content-color-default", + "--system-spectrum-button-secondary-content-color-disabled", + "--system-spectrum-button-secondary-content-color-down", + "--system-spectrum-button-secondary-content-color-focus", + "--system-spectrum-button-secondary-content-color-hover", + "--system-spectrum-button-secondary-outline-background-color-default", + "--system-spectrum-button-secondary-outline-background-color-disabled", + "--system-spectrum-button-secondary-outline-background-color-down", + "--system-spectrum-button-secondary-outline-background-color-focus", + "--system-spectrum-button-secondary-outline-background-color-hover", + "--system-spectrum-button-secondary-outline-border-color-default", + "--system-spectrum-button-secondary-outline-border-color-disabled", + "--system-spectrum-button-secondary-outline-border-color-down", + "--system-spectrum-button-secondary-outline-border-color-focus", + "--system-spectrum-button-secondary-outline-border-color-hover", + "--system-spectrum-button-secondary-outline-content-color-default", + "--system-spectrum-button-secondary-outline-content-color-disabled", + "--system-spectrum-button-secondary-outline-content-color-down", + "--system-spectrum-button-secondary-outline-content-color-focus", + "--system-spectrum-button-secondary-outline-content-color-hover", + "--system-spectrum-button-selected-background-color-default", + "--system-spectrum-button-selected-background-color-disabled", + "--system-spectrum-button-selected-background-color-down", + "--system-spectrum-button-selected-background-color-focus", + "--system-spectrum-button-selected-background-color-hover", + "--system-spectrum-button-selected-border-color-default", + "--system-spectrum-button-selected-border-color-disabled", + "--system-spectrum-button-selected-border-color-down", + "--system-spectrum-button-selected-border-color-focus", + "--system-spectrum-button-selected-border-color-hover", + "--system-spectrum-button-selected-content-color-default", + "--system-spectrum-button-selected-content-color-down", + "--system-spectrum-button-selected-content-color-focus", + "--system-spectrum-button-selected-content-color-hover", + "--system-spectrum-button-selected-emphasized-background-color-default", + "--system-spectrum-button-selected-emphasized-background-color-down", + "--system-spectrum-button-selected-emphasized-background-color-focus", + "--system-spectrum-button-selected-emphasized-background-color-hover", + "--system-spectrum-button-staticblack-background-color-default", + "--system-spectrum-button-staticblack-background-color-disabled", + "--system-spectrum-button-staticblack-background-color-down", + "--system-spectrum-button-staticblack-background-color-focus", + "--system-spectrum-button-staticblack-background-color-hover", + "--system-spectrum-button-staticblack-border-color-default", + "--system-spectrum-button-staticblack-border-color-disabled", + "--system-spectrum-button-staticblack-border-color-down", + "--system-spectrum-button-staticblack-border-color-focus", + "--system-spectrum-button-staticblack-border-color-hover", + "--system-spectrum-button-staticblack-content-color-default", + "--system-spectrum-button-staticblack-content-color-disabled", + "--system-spectrum-button-staticblack-content-color-down", + "--system-spectrum-button-staticblack-content-color-focus", + "--system-spectrum-button-staticblack-content-color-hover", + "--system-spectrum-button-staticblack-focus-indicator-color", + "--system-spectrum-button-staticblack-outline-background-color-default", + "--system-spectrum-button-staticblack-outline-background-color-disabled", + "--system-spectrum-button-staticblack-outline-background-color-down", + "--system-spectrum-button-staticblack-outline-background-color-focus", + "--system-spectrum-button-staticblack-outline-background-color-hover", + "--system-spectrum-button-staticblack-outline-border-color-default", + "--system-spectrum-button-staticblack-outline-border-color-disabled", + "--system-spectrum-button-staticblack-outline-border-color-down", + "--system-spectrum-button-staticblack-outline-border-color-focus", + "--system-spectrum-button-staticblack-outline-border-color-hover", + "--system-spectrum-button-staticblack-outline-content-color-default", + "--system-spectrum-button-staticblack-outline-content-color-disabled", + "--system-spectrum-button-staticblack-outline-content-color-down", + "--system-spectrum-button-staticblack-outline-content-color-focus", + "--system-spectrum-button-staticblack-outline-content-color-hover", + "--system-spectrum-button-staticblack-outline-focus-indicator-color", + "--system-spectrum-button-staticblack-quiet-border-color-default", + "--system-spectrum-button-staticblack-quiet-border-color-disabled", + "--system-spectrum-button-staticblack-quiet-border-color-down", + "--system-spectrum-button-staticblack-quiet-border-color-focus", + "--system-spectrum-button-staticblack-quiet-border-color-hover", + "--system-spectrum-button-staticblack-secondary-background-color-default", + "--system-spectrum-button-staticblack-secondary-background-color-disabled", + "--system-spectrum-button-staticblack-secondary-background-color-down", + "--system-spectrum-button-staticblack-secondary-background-color-focus", + "--system-spectrum-button-staticblack-secondary-background-color-hover", + "--system-spectrum-button-staticblack-secondary-border-color-default", + "--system-spectrum-button-staticblack-secondary-border-color-disabled", + "--system-spectrum-button-staticblack-secondary-border-color-down", + "--system-spectrum-button-staticblack-secondary-border-color-focus", + "--system-spectrum-button-staticblack-secondary-border-color-hover", + "--system-spectrum-button-staticblack-secondary-content-color-default", + "--system-spectrum-button-staticblack-secondary-content-color-disabled", + "--system-spectrum-button-staticblack-secondary-content-color-down", + "--system-spectrum-button-staticblack-secondary-content-color-focus", + "--system-spectrum-button-staticblack-secondary-content-color-hover", + "--system-spectrum-button-staticblack-secondary-focus-indicator-color", + "--system-spectrum-button-staticblack-secondary-outline-background-color-default", + "--system-spectrum-button-staticblack-secondary-outline-background-color-disabled", + "--system-spectrum-button-staticblack-secondary-outline-background-color-down", + "--system-spectrum-button-staticblack-secondary-outline-background-color-focus", + "--system-spectrum-button-staticblack-secondary-outline-background-color-hover", + "--system-spectrum-button-staticblack-secondary-outline-border-color-default", + "--system-spectrum-button-staticblack-secondary-outline-border-color-disabled", + "--system-spectrum-button-staticblack-secondary-outline-border-color-down", + "--system-spectrum-button-staticblack-secondary-outline-border-color-focus", + "--system-spectrum-button-staticblack-secondary-outline-border-color-hover", + "--system-spectrum-button-staticblack-secondary-outline-content-color-default", + "--system-spectrum-button-staticblack-secondary-outline-content-color-disabled", + "--system-spectrum-button-staticblack-secondary-outline-content-color-down", + "--system-spectrum-button-staticblack-secondary-outline-content-color-focus", + "--system-spectrum-button-staticblack-secondary-outline-content-color-hover", + "--system-spectrum-button-staticblack-secondary-outline-focus-indicator-color", + "--system-spectrum-button-staticwhite-background-color-default", + "--system-spectrum-button-staticwhite-background-color-disabled", + "--system-spectrum-button-staticwhite-background-color-down", + "--system-spectrum-button-staticwhite-background-color-focus", + "--system-spectrum-button-staticwhite-background-color-hover", + "--system-spectrum-button-staticwhite-border-color-default", + "--system-spectrum-button-staticwhite-border-color-disabled", + "--system-spectrum-button-staticwhite-border-color-down", + "--system-spectrum-button-staticwhite-border-color-focus", + "--system-spectrum-button-staticwhite-border-color-hover", + "--system-spectrum-button-staticwhite-content-color-default", + "--system-spectrum-button-staticwhite-content-color-disabled", + "--system-spectrum-button-staticwhite-content-color-down", + "--system-spectrum-button-staticwhite-content-color-focus", + "--system-spectrum-button-staticwhite-content-color-hover", + "--system-spectrum-button-staticwhite-focus-indicator-color", + "--system-spectrum-button-staticwhite-outline-background-color-default", + "--system-spectrum-button-staticwhite-outline-background-color-disabled", + "--system-spectrum-button-staticwhite-outline-background-color-down", + "--system-spectrum-button-staticwhite-outline-background-color-focus", + "--system-spectrum-button-staticwhite-outline-background-color-hover", + "--system-spectrum-button-staticwhite-outline-border-color-default", + "--system-spectrum-button-staticwhite-outline-border-color-disabled", + "--system-spectrum-button-staticwhite-outline-border-color-down", + "--system-spectrum-button-staticwhite-outline-border-color-focus", + "--system-spectrum-button-staticwhite-outline-border-color-hover", + "--system-spectrum-button-staticwhite-outline-content-color-default", + "--system-spectrum-button-staticwhite-outline-content-color-disabled", + "--system-spectrum-button-staticwhite-outline-content-color-down", + "--system-spectrum-button-staticwhite-outline-content-color-focus", + "--system-spectrum-button-staticwhite-outline-content-color-hover", + "--system-spectrum-button-staticwhite-outline-focus-indicator-color", + "--system-spectrum-button-staticwhite-quiet-border-color-default", + "--system-spectrum-button-staticwhite-quiet-border-color-disabled", + "--system-spectrum-button-staticwhite-quiet-border-color-down", + "--system-spectrum-button-staticwhite-quiet-border-color-focus", + "--system-spectrum-button-staticwhite-quiet-border-color-hover", + "--system-spectrum-button-staticwhite-secondary-background-color-default", + "--system-spectrum-button-staticwhite-secondary-background-color-disabled", + "--system-spectrum-button-staticwhite-secondary-background-color-down", + "--system-spectrum-button-staticwhite-secondary-background-color-focus", + "--system-spectrum-button-staticwhite-secondary-background-color-hover", + "--system-spectrum-button-staticwhite-secondary-border-color-default", + "--system-spectrum-button-staticwhite-secondary-border-color-disabled", + "--system-spectrum-button-staticwhite-secondary-border-color-down", + "--system-spectrum-button-staticwhite-secondary-border-color-focus", + "--system-spectrum-button-staticwhite-secondary-border-color-hover", + "--system-spectrum-button-staticwhite-secondary-content-color-default", + "--system-spectrum-button-staticwhite-secondary-content-color-disabled", + "--system-spectrum-button-staticwhite-secondary-content-color-down", + "--system-spectrum-button-staticwhite-secondary-content-color-focus", + "--system-spectrum-button-staticwhite-secondary-content-color-hover", + "--system-spectrum-button-staticwhite-secondary-focus-indicator-color", + "--system-spectrum-button-staticwhite-secondary-outline-background-color-default", + "--system-spectrum-button-staticwhite-secondary-outline-background-color-disabled", + "--system-spectrum-button-staticwhite-secondary-outline-background-color-down", + "--system-spectrum-button-staticwhite-secondary-outline-background-color-focus", + "--system-spectrum-button-staticwhite-secondary-outline-background-color-hover", + "--system-spectrum-button-staticwhite-secondary-outline-border-color-default", + "--system-spectrum-button-staticwhite-secondary-outline-border-color-disabled", + "--system-spectrum-button-staticwhite-secondary-outline-border-color-down", + "--system-spectrum-button-staticwhite-secondary-outline-border-color-focus", + "--system-spectrum-button-staticwhite-secondary-outline-border-color-hover", + "--system-spectrum-button-staticwhite-secondary-outline-content-color-default", + "--system-spectrum-button-staticwhite-secondary-outline-content-color-disabled", + "--system-spectrum-button-staticwhite-secondary-outline-content-color-down", + "--system-spectrum-button-staticwhite-secondary-outline-content-color-focus", + "--system-spectrum-button-staticwhite-secondary-outline-content-color-hover", + "--system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color", + "--system-spectrum-button-staticwhite-selected-background-color-default", + "--system-spectrum-button-staticwhite-selected-background-color-disabled", + "--system-spectrum-button-staticwhite-selected-background-color-down", + "--system-spectrum-button-staticwhite-selected-background-color-focus", + "--system-spectrum-button-staticwhite-selected-background-color-hover", + "--system-spectrum-button-staticwhite-selected-border-color-disabled", + "--system-spectrum-button-staticwhite-selected-content-color-default", + "--system-spectrum-button-staticwhite-selected-content-color-down", + "--system-spectrum-button-staticwhite-selected-content-color-focus", + "--system-spectrum-button-staticwhite-selected-content-color-hover" + ], + "a11y": [ + "--highcontrast-button-background-color-default", + "--highcontrast-button-background-color-disabled", + "--highcontrast-button-background-color-down", + "--highcontrast-button-background-color-focus", + "--highcontrast-button-background-color-hover", + "--highcontrast-button-border-color-default", + "--highcontrast-button-border-color-disabled", + "--highcontrast-button-border-color-down", + "--highcontrast-button-border-color-focus", + "--highcontrast-button-border-color-hover", + "--highcontrast-button-content-color-default", + "--highcontrast-button-content-color-disabled", + "--highcontrast-button-content-color-down", + "--highcontrast-button-content-color-focus", + "--highcontrast-button-content-color-hover", + "--highcontrast-button-focus-ring-color" + ] +} diff --git a/components/button/package.json b/components/button/package.json new file mode 100644 index 0000000000..af3d78c370 --- /dev/null +++ b/components/button/package.json @@ -0,0 +1,52 @@ +{ + "name": "@spectrum-css/button", + "version": "13.1.1", + "description": "The Spectrum CSS button component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/button-accent", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/button" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/progresscircle": ">=3", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/icon": { + "optional": true + }, + "@spectrum-css/progresscircle": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/commons": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/progresscircle": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/button/template.js b/components/button/template.js new file mode 100644 index 0000000000..44d1f059f6 --- /dev/null +++ b/components/button/template.js @@ -0,0 +1,206 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { Template as ProgressCircle } from "@spectrum-css/progresscircle/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; +import { capitalize, lowerCase } from "lodash-es"; + +import "../index.css"; + +export const Template = ( + { + rootClass = "spectrum-Button", + id, + testId, + customClasses = [], + customStyles = {}, + size = "m", + label, + hideLabel = false, + iconName, + iconAfterLabel = false, + variant, + staticColor, + treatment, + onclick, + isDisabled = false, + isHovered = false, + isFocused = false, + isActive = false, + isPending = false, + ariaExpanded, + ariaControls, + } = {}, + context = {} +) => { + const { updateArgs } = context; + + return html` + + `; +}; + +/** + * Multiple button variations displayed in one story template. + * Used as the base template for the stories. + */ +const CustomButton = ({ iconName, ...args }, context) => html` + ${Template( + { + ...args, + iconName: undefined, + }, + context + )} + ${Template( + { + ...args, + iconName: iconName ?? "Edit", + }, + context + )} + ${Template( + { + ...args, + hideLabel: true, + iconName: iconName ?? "Edit", + }, + context + )} +`; + +export const ButtonGroups = Variants({ + Template: CustomButton, + testData: [ + ...["accent", "negative", "primary", "secondary"].map((variant) => ({ + testHeading: capitalize(variant), + variant, + })), + ...["fill", "outline"].map((treatment) => ({ + testHeading: capitalize(treatment), + treatment, + })), + { + testHeading: "Text wrapping with workflow icon", + customStyles: { + "max-inline-size": "480px", + }, + iconName: "Edit", + label: + "An example of text overflow behavior within the button component. When the button text is too long for the horizontal space available, it wraps to form another line.", + withStates: false, + Template, + }, + { + testHeading: "Text wrapping with UI icon", + customStyles: { + "max-inline-size": "480px", + }, + // Uses a UI icon that is smaller than workflow sizing, to test alignment: + iconName: "Cross100", + label: + "An example of text overflow behavior within the button component. When the button text is too long for the horizontal space available, it wraps to form another line.", + withStates: false, + Template, + }, + { + testHeading: "Text wrapping with larger UI icon", + customStyles: { + "max-inline-size": "480px", + }, + // UI icon that is larger than workflow sizing: + iconName: "ArrowDown600", + label: + "An example of text overflow behavior within the button component. When the button text is too long for the horizontal space available, it wraps to form another line.", + withStates: false, + Template, + }, + ], + stateData: [ + { + testHeading: "Disabled", + isDisabled: true, + }, + { + testHeading: "Hovered", + isHovered: true, + }, + { + testHeading: "Focused", + isFocused: true, + }, + { + testHeading: "Active", + isActive: true, + }, + { + testHeading: "Pending", + isPending: true, + }, + ], + sizeDirection: "row", +}); diff --git a/components/button/themes/express.css b/components/button/themes/express.css new file mode 100644 index 0000000000..c8ae16f5cf --- /dev/null +++ b/components/button/themes/express.css @@ -0,0 +1,327 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-button-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-border-color-default: transparent; + --system-spectrum-button-border-color-hover: transparent; + --system-spectrum-button-border-color-down: transparent; + --system-spectrum-button-border-color-focus: transparent; + --system-spectrum-button-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-border-color-disabled: transparent; + --system-spectrum-button-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-accent-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-accent-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-accent-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-accent-border-color-default: transparent; + --system-spectrum-button-accent-border-color-hover: transparent; + --system-spectrum-button-accent-border-color-down: transparent; + --system-spectrum-button-accent-border-color-focus: transparent; + --system-spectrum-button-accent-content-color-default: var(--spectrum-white); + --system-spectrum-button-accent-content-color-hover: var(--spectrum-white); + --system-spectrum-button-accent-content-color-down: var(--spectrum-white); + --system-spectrum-button-accent-content-color-focus: var(--spectrum-white); + --system-spectrum-button-accent-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-accent-border-color-disabled: transparent; + --system-spectrum-button-accent-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-outline-background-color-default: transparent; + --system-spectrum-button-accent-outline-background-color-hover: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-background-color-down: var(--spectrum-accent-color-300); + --system-spectrum-button-accent-outline-background-color-focus: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-button-accent-outline-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-button-accent-outline-border-color-focus: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-content-color-default: var(--spectrum-accent-content-color-default); + --system-spectrum-button-accent-outline-content-color-hover: var(--spectrum-accent-content-color-hover); + --system-spectrum-button-accent-outline-content-color-down: var(--spectrum-accent-content-color-down); + --system-spectrum-button-accent-outline-content-color-focus: var(--spectrum-accent-content-color-key-focus); + --system-spectrum-button-accent-outline-background-color-disabled: transparent; + --system-spectrum-button-accent-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-accent-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-background-color-default: var(--spectrum-negative-background-color-default); + --system-spectrum-button-negative-background-color-hover: var(--spectrum-negative-background-color-hover); + --system-spectrum-button-negative-background-color-down: var(--spectrum-negative-background-color-down); + --system-spectrum-button-negative-background-color-focus: var(--spectrum-negative-background-color-key-focus); + --system-spectrum-button-negative-border-color-default: transparent; + --system-spectrum-button-negative-border-color-hover: transparent; + --system-spectrum-button-negative-border-color-down: transparent; + --system-spectrum-button-negative-border-color-focus: transparent; + --system-spectrum-button-negative-content-color-default: var(--spectrum-white); + --system-spectrum-button-negative-content-color-hover: var(--spectrum-white); + --system-spectrum-button-negative-content-color-down: var(--spectrum-white); + --system-spectrum-button-negative-content-color-focus: var(--spectrum-white); + --system-spectrum-button-negative-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-negative-border-color-disabled: transparent; + --system-spectrum-button-negative-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-outline-background-color-default: transparent; + --system-spectrum-button-negative-outline-background-color-hover: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-background-color-down: var(--spectrum-negative-color-300); + --system-spectrum-button-negative-outline-background-color-focus: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-border-color-default: var(--spectrum-negative-color-900); + --system-spectrum-button-negative-outline-border-color-hover: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-border-color-down: var(--spectrum-negative-color-1100); + --system-spectrum-button-negative-outline-border-color-focus: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-content-color-default: var(--spectrum-negative-content-color-default); + --system-spectrum-button-negative-outline-content-color-hover: var(--spectrum-negative-content-color-hover); + --system-spectrum-button-negative-outline-content-color-down: var(--spectrum-negative-content-color-down); + --system-spectrum-button-negative-outline-content-color-focus: var(--spectrum-negative-content-color-key-focus); + --system-spectrum-button-negative-outline-background-color-disabled: transparent; + --system-spectrum-button-negative-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-negative-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-primary-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-primary-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-primary-background-color-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-button-primary-border-color-default: transparent; + --system-spectrum-button-primary-border-color-hover: transparent; + --system-spectrum-button-primary-border-color-down: transparent; + --system-spectrum-button-primary-border-color-focus: transparent; + --system-spectrum-button-primary-content-color-default: var(--spectrum-white); + --system-spectrum-button-primary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-primary-content-color-down: var(--spectrum-white); + --system-spectrum-button-primary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-primary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-primary-border-color-disabled: transparent; + --system-spectrum-button-primary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-outline-background-color-default: transparent; + --system-spectrum-button-primary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-primary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-border-color-default: var(--spectrum-gray-800); + --system-spectrum-button-primary-outline-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-down: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-primary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-primary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-primary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-primary-outline-background-color-disabled: transparent; + --system-spectrum-button-primary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-primary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-secondary-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-border-color-default: transparent; + --system-spectrum-button-secondary-border-color-hover: transparent; + --system-spectrum-button-secondary-border-color-down: transparent; + --system-spectrum-button-secondary-border-color-focus: transparent; + --system-spectrum-button-secondary-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-secondary-border-color-disabled: transparent; + --system-spectrum-button-secondary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-outline-background-color-default: transparent; + --system-spectrum-button-secondary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-default: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-border-color-down: var(--spectrum-gray-500); + --system-spectrum-button-secondary-outline-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-secondary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-secondary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-quiet-background-color-default: transparent; + --system-spectrum-button-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-quiet-border-color-default: transparent; + --system-spectrum-button-quiet-border-color-hover: transparent; + --system-spectrum-button-quiet-border-color-down: transparent; + --system-spectrum-button-quiet-border-color-focus: transparent; + --system-spectrum-button-quiet-background-color-disabled: transparent; + --system-spectrum-button-quiet-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-button-selected-border-color-default: transparent; + --system-spectrum-button-selected-border-color-hover: transparent; + --system-spectrum-button-selected-border-color-down: transparent; + --system-spectrum-button-selected-border-color-focus: transparent; + --system-spectrum-button-selected-content-color-default: var(--spectrum-white); + --system-spectrum-button-selected-content-color-hover: var(--spectrum-white); + --system-spectrum-button-selected-content-color-down: var(--spectrum-white); + --system-spectrum-button-selected-content-color-focus: var(--spectrum-white); + --system-spectrum-button-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-selected-border-color-disabled: transparent; + --system-spectrum-button-selected-emphasized-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-selected-emphasized-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-selected-emphasized-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-selected-emphasized-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-staticblack-quiet-border-color-default: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-button-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-button-staticblack-quiet-border-color-down: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-button-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-button-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-border-color-default: transparent; + --system-spectrum-button-staticwhite-border-color-hover: transparent; + --system-spectrum-button-staticwhite-border-color-down: transparent; + --system-spectrum-button-staticwhite-border-color-focus: transparent; + --system-spectrum-button-staticwhite-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-border-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-outline-border-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-selected-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-selected-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-selected-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-button-staticwhite-secondary-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-border-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-hover: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-down: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-focus: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-default: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-hover: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-border-color-down: var(--spectrum-transparent-white-500); + --system-spectrum-button-staticwhite-secondary-outline-border-color-focus: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticblack-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-button-staticblack-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-border-color-default: transparent; + --system-spectrum-button-staticblack-border-color-hover: transparent; + --system-spectrum-button-staticblack-border-color-down: transparent; + --system-spectrum-button-staticblack-border-color-focus: transparent; + --system-spectrum-button-staticblack-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-border-color-disabled: transparent; + --system-spectrum-button-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-button-staticblack-outline-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-button-staticblack-secondary-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-border-color-default: transparent; + --system-spectrum-button-staticblack-secondary-border-color-hover: transparent; + --system-spectrum-button-staticblack-secondary-border-color-down: transparent; + --system-spectrum-button-staticblack-secondary-border-color-focus: transparent; + --system-spectrum-button-staticblack-secondary-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-secondary-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-default: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-hover: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-border-color-down: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-secondary-outline-border-color-focus: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); +} +/*# sourceMappingURL=components/button/themes/express.css.map */ diff --git a/components/button/themes/spectrum.css b/components/button/themes/spectrum.css new file mode 100644 index 0000000000..7fa71733b4 --- /dev/null +++ b/components/button/themes/spectrum.css @@ -0,0 +1,327 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-button-background-color-default: var(--spectrum-gray-75); + --system-spectrum-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-border-color-default: var(--spectrum-gray-400); + --system-spectrum-button-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-button-border-color-down: var(--spectrum-gray-600); + --system-spectrum-button-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-button-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-background-color-disabled: transparent; + --system-spectrum-button-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-accent-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-accent-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-accent-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-accent-border-color-default: transparent; + --system-spectrum-button-accent-border-color-hover: transparent; + --system-spectrum-button-accent-border-color-down: transparent; + --system-spectrum-button-accent-border-color-focus: transparent; + --system-spectrum-button-accent-content-color-default: var(--spectrum-white); + --system-spectrum-button-accent-content-color-hover: var(--spectrum-white); + --system-spectrum-button-accent-content-color-down: var(--spectrum-white); + --system-spectrum-button-accent-content-color-focus: var(--spectrum-white); + --system-spectrum-button-accent-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-accent-border-color-disabled: transparent; + --system-spectrum-button-accent-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-accent-outline-background-color-default: transparent; + --system-spectrum-button-accent-outline-background-color-hover: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-background-color-down: var(--spectrum-accent-color-300); + --system-spectrum-button-accent-outline-background-color-focus: var(--spectrum-accent-color-200); + --system-spectrum-button-accent-outline-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-button-accent-outline-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-button-accent-outline-border-color-focus: var(--spectrum-accent-color-1000); + --system-spectrum-button-accent-outline-content-color-default: var(--spectrum-accent-content-color-default); + --system-spectrum-button-accent-outline-content-color-hover: var(--spectrum-accent-content-color-hover); + --system-spectrum-button-accent-outline-content-color-down: var(--spectrum-accent-content-color-down); + --system-spectrum-button-accent-outline-content-color-focus: var(--spectrum-accent-content-color-key-focus); + --system-spectrum-button-accent-outline-background-color-disabled: transparent; + --system-spectrum-button-accent-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-accent-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-background-color-default: var(--spectrum-negative-background-color-default); + --system-spectrum-button-negative-background-color-hover: var(--spectrum-negative-background-color-hover); + --system-spectrum-button-negative-background-color-down: var(--spectrum-negative-background-color-down); + --system-spectrum-button-negative-background-color-focus: var(--spectrum-negative-background-color-key-focus); + --system-spectrum-button-negative-border-color-default: transparent; + --system-spectrum-button-negative-border-color-hover: transparent; + --system-spectrum-button-negative-border-color-down: transparent; + --system-spectrum-button-negative-border-color-focus: transparent; + --system-spectrum-button-negative-content-color-default: var(--spectrum-white); + --system-spectrum-button-negative-content-color-hover: var(--spectrum-white); + --system-spectrum-button-negative-content-color-down: var(--spectrum-white); + --system-spectrum-button-negative-content-color-focus: var(--spectrum-white); + --system-spectrum-button-negative-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-negative-border-color-disabled: transparent; + --system-spectrum-button-negative-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-negative-outline-background-color-default: transparent; + --system-spectrum-button-negative-outline-background-color-hover: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-background-color-down: var(--spectrum-negative-color-300); + --system-spectrum-button-negative-outline-background-color-focus: var(--spectrum-negative-color-200); + --system-spectrum-button-negative-outline-border-color-default: var(--spectrum-negative-color-900); + --system-spectrum-button-negative-outline-border-color-hover: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-border-color-down: var(--spectrum-negative-color-1100); + --system-spectrum-button-negative-outline-border-color-focus: var(--spectrum-negative-color-1000); + --system-spectrum-button-negative-outline-content-color-default: var(--spectrum-negative-content-color-default); + --system-spectrum-button-negative-outline-content-color-hover: var(--spectrum-negative-content-color-hover); + --system-spectrum-button-negative-outline-content-color-down: var(--spectrum-negative-content-color-down); + --system-spectrum-button-negative-outline-content-color-focus: var(--spectrum-negative-content-color-key-focus); + --system-spectrum-button-negative-outline-background-color-disabled: transparent; + --system-spectrum-button-negative-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-negative-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-background-color-default: var(--spectrum-neutral-background-color-default); + --system-spectrum-button-primary-background-color-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-button-primary-background-color-down: var(--spectrum-neutral-background-color-down); + --system-spectrum-button-primary-background-color-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-button-primary-border-color-default: transparent; + --system-spectrum-button-primary-border-color-hover: transparent; + --system-spectrum-button-primary-border-color-down: transparent; + --system-spectrum-button-primary-border-color-focus: transparent; + --system-spectrum-button-primary-content-color-default: var(--spectrum-white); + --system-spectrum-button-primary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-primary-content-color-down: var(--spectrum-white); + --system-spectrum-button-primary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-primary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-primary-border-color-disabled: transparent; + --system-spectrum-button-primary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-primary-outline-background-color-default: transparent; + --system-spectrum-button-primary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-primary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-primary-outline-border-color-default: var(--spectrum-gray-800); + --system-spectrum-button-primary-outline-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-down: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-button-primary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-primary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-primary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-primary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-primary-outline-background-color-disabled: transparent; + --system-spectrum-button-primary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-primary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-background-color-default: var(--spectrum-gray-200); + --system-spectrum-button-secondary-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-border-color-default: transparent; + --system-spectrum-button-secondary-border-color-hover: transparent; + --system-spectrum-button-secondary-border-color-down: transparent; + --system-spectrum-button-secondary-border-color-focus: transparent; + --system-spectrum-button-secondary-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-secondary-border-color-disabled: transparent; + --system-spectrum-button-secondary-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-secondary-outline-background-color-default: transparent; + --system-spectrum-button-secondary-outline-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-background-color-down: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-default: var(--spectrum-gray-300); + --system-spectrum-button-secondary-outline-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-border-color-down: var(--spectrum-gray-500); + --system-spectrum-button-secondary-outline-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-button-secondary-outline-content-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-button-secondary-outline-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-button-secondary-outline-content-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-button-secondary-outline-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-button-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-secondary-outline-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-button-secondary-outline-content-color-disabled: var(--spectrum-disabled-content-color); + --system-spectrum-button-quiet-background-color-default: transparent; + --system-spectrum-button-quiet-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-button-quiet-background-color-down: var(--spectrum-gray-300); + --system-spectrum-button-quiet-background-color-focus: var(--spectrum-gray-200); + --system-spectrum-button-quiet-border-color-default: transparent; + --system-spectrum-button-quiet-border-color-hover: transparent; + --system-spectrum-button-quiet-border-color-down: transparent; + --system-spectrum-button-quiet-border-color-focus: transparent; + --system-spectrum-button-quiet-background-color-disabled: transparent; + --system-spectrum-button-quiet-border-color-disabled: transparent; + --system-spectrum-button-selected-background-color-default: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-button-selected-background-color-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-button-selected-background-color-down: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-button-selected-background-color-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-button-selected-border-color-default: transparent; + --system-spectrum-button-selected-border-color-hover: transparent; + --system-spectrum-button-selected-border-color-down: transparent; + --system-spectrum-button-selected-border-color-focus: transparent; + --system-spectrum-button-selected-content-color-default: var(--spectrum-white); + --system-spectrum-button-selected-content-color-hover: var(--spectrum-white); + --system-spectrum-button-selected-content-color-down: var(--spectrum-white); + --system-spectrum-button-selected-content-color-focus: var(--spectrum-white); + --system-spectrum-button-selected-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-button-selected-border-color-disabled: transparent; + --system-spectrum-button-selected-emphasized-background-color-default: var(--spectrum-accent-background-color-default); + --system-spectrum-button-selected-emphasized-background-color-hover: var(--spectrum-accent-background-color-hover); + --system-spectrum-button-selected-emphasized-background-color-down: var(--spectrum-accent-background-color-down); + --system-spectrum-button-selected-emphasized-background-color-focus: var(--spectrum-accent-background-color-key-focus); + --system-spectrum-button-staticblack-quiet-border-color-default: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-default: transparent; + --system-spectrum-button-staticblack-quiet-border-color-hover: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-hover: transparent; + --system-spectrum-button-staticblack-quiet-border-color-down: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-down: transparent; + --system-spectrum-button-staticblack-quiet-border-color-focus: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-focus: transparent; + --system-spectrum-button-staticblack-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-quiet-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-border-color-default: transparent; + --system-spectrum-button-staticwhite-border-color-hover: transparent; + --system-spectrum-button-staticwhite-border-color-down: transparent; + --system-spectrum-button-staticwhite-border-color-focus: transparent; + --system-spectrum-button-staticwhite-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-outline-border-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-outline-border-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-border-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-selected-background-color-default: var(--spectrum-transparent-white-800); + --system-spectrum-button-staticwhite-selected-background-color-hover: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-down: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-background-color-focus: var(--spectrum-transparent-white-900); + --system-spectrum-button-staticwhite-selected-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticwhite-selected-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-selected-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-background-color-default: var(--spectrum-transparent-white-200); + --system-spectrum-button-staticwhite-secondary-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-border-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-hover: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-down: transparent; + --system-spectrum-button-staticwhite-secondary-border-color-focus: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-background-color-disabled: var(--spectrum-disabled-static-white-background-color); + --system-spectrum-button-staticwhite-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticwhite-secondary-outline-background-color-hover: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-background-color-down: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-background-color-focus: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-default: var(--spectrum-transparent-white-300); + --system-spectrum-button-staticwhite-secondary-outline-border-color-hover: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-border-color-down: var(--spectrum-transparent-white-500); + --system-spectrum-button-staticwhite-secondary-outline-border-color-focus: var(--spectrum-transparent-white-400); + --system-spectrum-button-staticwhite-secondary-outline-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticwhite-secondary-outline-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); + --system-spectrum-button-staticwhite-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticwhite-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-white-border-color); + --system-spectrum-button-staticwhite-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-white-content-color); + --system-spectrum-button-staticblack-background-color-default: var(--spectrum-transparent-black-800); + --system-spectrum-button-staticblack-background-color-hover: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-down: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-background-color-focus: var(--spectrum-transparent-black-900); + --system-spectrum-button-staticblack-border-color-default: transparent; + --system-spectrum-button-staticblack-border-color-hover: transparent; + --system-spectrum-button-staticblack-border-color-down: transparent; + --system-spectrum-button-staticblack-border-color-focus: transparent; + --system-spectrum-button-staticblack-content-color-default: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-hover: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-down: var(--spectrum-white); + --system-spectrum-button-staticblack-content-color-focus: var(--spectrum-white); + --system-spectrum-button-staticblack-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-border-color-disabled: transparent; + --system-spectrum-button-staticblack-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-outline-border-color-default: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-outline-border-color-hover: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-border-color-down: var(--spectrum-transparent-black-600); + --system-spectrum-button-staticblack-outline-border-color-focus: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-background-color-default: var(--spectrum-transparent-black-200); + --system-spectrum-button-staticblack-secondary-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-border-color-default: transparent; + --system-spectrum-button-staticblack-secondary-border-color-hover: transparent; + --system-spectrum-button-staticblack-secondary-border-color-down: transparent; + --system-spectrum-button-staticblack-secondary-border-color-focus: transparent; + --system-spectrum-button-staticblack-secondary-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-background-color-disabled: var(--spectrum-disabled-static-black-background-color); + --system-spectrum-button-staticblack-secondary-border-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-content-color-disabled: var(--spectrum-disabled-static-black-content-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-default: transparent; + --system-spectrum-button-staticblack-secondary-outline-background-color-hover: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-background-color-down: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-background-color-focus: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-default: var(--spectrum-transparent-black-300); + --system-spectrum-button-staticblack-secondary-outline-border-color-hover: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-border-color-down: var(--spectrum-transparent-black-500); + --system-spectrum-button-staticblack-secondary-outline-border-color-focus: var(--spectrum-transparent-black-400); + --system-spectrum-button-staticblack-secondary-outline-content-color-default: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-hover: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-down: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-content-color-focus: var(--spectrum-black); + --system-spectrum-button-staticblack-secondary-outline-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); + --system-spectrum-button-staticblack-secondary-outline-background-color-disabled: transparent; + --system-spectrum-button-staticblack-secondary-outline-border-color-disabled: var(--spectrum-disabled-static-black-border-color); + --system-spectrum-button-staticblack-secondary-outline-content-color-disabled: var(--spectrum-disabled-static-black-content-color); +} +/*# sourceMappingURL=components/button/themes/spectrum.css.map */ diff --git a/components/buttongroup/index-base.css b/components/buttongroup/index-base.css new file mode 100644 index 0000000000..069418d34d --- /dev/null +++ b/components/buttongroup/index-base.css @@ -0,0 +1,42 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ButtonGroup { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-300); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-300); +} +.spectrum-ButtonGroup--sizeS { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-200); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-200); +} +.spectrum-ButtonGroup--sizeL, +.spectrum-ButtonGroup--sizeM, +.spectrum-ButtonGroup--sizeXL { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-300); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-300); +} +.spectrum-ButtonGroup { + display: flex; + flex-wrap: wrap; + gap: var(--mod-buttongroup-spacing-horizontal, var(--spectrum-buttongroup-spacing-horizontal)); + justify-content: var(--mod-buttongroup-justify-content, normal); +} +.spectrum-ButtonGroup .spectrum-ButtonGroup-item { + flex-shrink: 0; +} +.spectrum-ButtonGroup--vertical { + display: inline-flex; + flex-direction: column; + gap: var(--mod-buttongroup-spacing-vertical, var(--spectrum-buttongroup-spacing-vertical)); +} +/*# sourceMappingURL=components/buttongroup/index.css.map */ diff --git a/components/buttongroup/index-vars.css b/components/buttongroup/index-vars.css new file mode 100644 index 0000000000..069418d34d --- /dev/null +++ b/components/buttongroup/index-vars.css @@ -0,0 +1,42 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ButtonGroup { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-300); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-300); +} +.spectrum-ButtonGroup--sizeS { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-200); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-200); +} +.spectrum-ButtonGroup--sizeL, +.spectrum-ButtonGroup--sizeM, +.spectrum-ButtonGroup--sizeXL { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-300); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-300); +} +.spectrum-ButtonGroup { + display: flex; + flex-wrap: wrap; + gap: var(--mod-buttongroup-spacing-horizontal, var(--spectrum-buttongroup-spacing-horizontal)); + justify-content: var(--mod-buttongroup-justify-content, normal); +} +.spectrum-ButtonGroup .spectrum-ButtonGroup-item { + flex-shrink: 0; +} +.spectrum-ButtonGroup--vertical { + display: inline-flex; + flex-direction: column; + gap: var(--mod-buttongroup-spacing-vertical, var(--spectrum-buttongroup-spacing-vertical)); +} +/*# sourceMappingURL=components/buttongroup/index.css.map */ diff --git a/components/buttongroup/index.css b/components/buttongroup/index.css new file mode 100644 index 0000000000..069418d34d --- /dev/null +++ b/components/buttongroup/index.css @@ -0,0 +1,42 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ButtonGroup { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-300); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-300); +} +.spectrum-ButtonGroup--sizeS { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-200); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-200); +} +.spectrum-ButtonGroup--sizeL, +.spectrum-ButtonGroup--sizeM, +.spectrum-ButtonGroup--sizeXL { + --spectrum-buttongroup-spacing-horizontal: var(--spectrum-spacing-300); + --spectrum-buttongroup-spacing-vertical: var(--spectrum-spacing-300); +} +.spectrum-ButtonGroup { + display: flex; + flex-wrap: wrap; + gap: var(--mod-buttongroup-spacing-horizontal, var(--spectrum-buttongroup-spacing-horizontal)); + justify-content: var(--mod-buttongroup-justify-content, normal); +} +.spectrum-ButtonGroup .spectrum-ButtonGroup-item { + flex-shrink: 0; +} +.spectrum-ButtonGroup--vertical { + display: inline-flex; + flex-direction: column; + gap: var(--mod-buttongroup-spacing-vertical, var(--spectrum-buttongroup-spacing-vertical)); +} +/*# sourceMappingURL=components/buttongroup/index.css.map */ diff --git a/components/buttongroup/metadata.json b/components/buttongroup/metadata.json new file mode 100644 index 0000000000..1a344d7eb3 --- /dev/null +++ b/components/buttongroup/metadata.json @@ -0,0 +1,22 @@ +{ + "selectors": [ + ".spectrum-ButtonGroup", + ".spectrum-ButtonGroup .spectrum-ButtonGroup-item", + ".spectrum-ButtonGroup--sizeL,\n.spectrum-ButtonGroup--sizeM,\n.spectrum-ButtonGroup--sizeXL", + ".spectrum-ButtonGroup--sizeS", + ".spectrum-ButtonGroup--vertical" + ], + "mods": [ + "--mod-buttongroup-justify-content", + "--mod-buttongroup-spacing-horizontal", + "--mod-buttongroup-spacing-vertical" + ], + "spectrum": [ + "--spectrum-buttongroup-spacing-horizontal", + "--spectrum-buttongroup-spacing-vertical", + "--spectrum-spacing-200", + "--spectrum-spacing-300" + ], + "system": [], + "a11y": [] +} diff --git a/components/buttongroup/package.json b/components/buttongroup/package.json new file mode 100644 index 0000000000..fc8864e0ea --- /dev/null +++ b/components/buttongroup/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/buttongroup", + "version": "7.1.1", + "description": "The Spectrum CSS buttongroup component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/buttongroup", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/buttongroup" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/button": ">=13", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/button": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/buttongroup/template.js b/components/buttongroup/template.js new file mode 100644 index 0000000000..c35719abf7 --- /dev/null +++ b/components/buttongroup/template.js @@ -0,0 +1,133 @@ +import { Template as Button } from "@spectrum-css/button/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ButtonGroup", + customClasses = [], + size = "m", + items = [], + vertical = false, +}) => html` +
    ({ ...a, [c]: true }), {}), + })} + > + ${items.map((item) => + Button({ + ...item, + size, + customClasses: [`${rootClass}-item`], + }) + )} +
    +`; + +const Sizes = (args, context) => ["s", "m", "l", "xl"].map((size) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [ + { + s: "Small", + m: "Medium", + l: "Large", + xl: "Extra-large", + }[size] + ], + customClasses: ["chromatic-ignore"], + }, context)} +
    + ${Template({...args, size}, context)} +
    +
    +`); + +export const ButtonGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[ + { + heading: "Default", + }, + { + heading: "Vertical", + vertical: true, + }, + ].map( + ({ heading, ...item }) => html` +
    + ${Typography( + { + semantics: "heading", + size: "s", + content: [heading], + }, + context, + )} +
    + ${Template( + { + ...args, + ...item, + }, + context, + )} +
    +
    + `, + )} +
    + ${Typography( + { + semantics: "heading", + size: "s", + content: ["Sizing"], + }, + context, + )} +
    + ${Sizes(args, context)} +
    +
    +
    +`; diff --git a/components/calendar/index-base.css b/components/calendar/index-base.css new file mode 100644 index 0000000000..5498cf0d7a --- /dev/null +++ b/components/calendar/index-base.css @@ -0,0 +1,362 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Calendar { + --spectrum-calendar-day-width: var(--spectrum-component-height-100); + --spectrum-calendar-day-height: var(--spectrum-component-height-100); + --spectrum-calendar-border-radius-reset: 0; + --spectrum-calendar-border-width-reset: 0; + --spectrum-calendar-day-border-size: var(--spectrum-border-width-200); + --spectrum-calendar-margin-y: 24px; + --spectrum-calendar-margin-x: 32px; + --spectrum-calendar-day-padding: 4px; + --spectrum-calendar-width: calc((var(--spectrum-calendar-day-width) + var(--spectrum-calendar-day-padding) * 2) * 7); + --spectrum-calendar-title-text-letter-spacing: 0.06em; + --spectrum-calendar-title-height: 32px; + --spectrum-calendar-title-text-size: var(--spectrum-font-size-300); + --spectrum-calendar-day-title-text-font-weight: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-title-text-color: var(--spectrum-gray-700); + --spectrum-calendar-day-title-text-size: var(--spectrum-font-size-50); + --spectrum-calendar-day-text-size-han: var(--spectrum-font-size-50); + --spectrum-calendar-day-text-size: var(--spectrum-font-size-100); + --spectrum-calendar-day-text-color-selected: var(--spectrum-gray-900); + --spectrum-calendar-day-text-color-hover: var(--spectrum-gray-900); + --spectrum-calendar-day-text-color-cap-selected: var(--spectrum-gray-900); + --spectrum-calendar-day-text-font-weight-selected: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-text-font-weight-cap-selected: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-today-text-color: var(--spectrum-gray-800); + --spectrum-calendar-day-today-text-font-weight: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-today-border-color: var(--spectrum-gray-800); + --spectrum-calendar-day-today-text-color-disabled: var(--spectrum-gray-500); + --spectrum-calendar-day-today-border-color-disabled: var(--spectrum-gray-400); + --spectrum-calendar-day-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-calendar-day-text-color-key-focus: var(--spectrum-gray-900); + --spectrum-calendar-button-icon-color: var(--spectrum-gray-700); +} +.spectrum-Calendar:dir(rtl), +[dir="rtl"] .spectrum-Calendar { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Calendar { + inline-size: var(--mod-calendar-width, var(--spectrum-calendar-width)); + display: inline-block; +} +.spectrum-Calendar--padded { + margin: var(--mod-calendar-margin-x, var(--spectrum-calendar-margin-x)) var(--mod-calendar-margin-y, var(--spectrum-calendar-margin-y)); +} +.spectrum-Calendar-header { + display: flex; + align-items: center; + inline-size: 100%; +} +.spectrum-Calendar-title { + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); + font-size: var(--mod-calendar-title-text-size, var(--spectrum-calendar-title-text-size)); + font-weight: 700; + line-height: var(--mod-calendar-title-height, var(--spectrum-calendar-title-height)); + margin: 0; + order: 1; + flex-grow: 1; + text-align: center; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.spectrum-Calendar-nextMonth, +.spectrum-Calendar-prevMonth { + transform: var(--spectrum-logical-rotation); +} +.spectrum-Calendar-nextMonth:not([disabled]), +.spectrum-Calendar-prevMonth:not([disabled]) { + color: var(--highcontrast-calendar-button-icon-color, var(--mod-calendar-button-icon-color, var(--spectrum-calendar-button-icon-color))); +} +.spectrum-Calendar-prevMonth { + order: 0; +} +.spectrum-Calendar-nextMonth { + order: 2; +} +.spectrum-Calendar-dayOfWeek { + display: flex; + flex-direction: column; + justify-content: flex-end; + block-size: 100%; + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-block-end: none !important; + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); + font-size: var(--mod-calendar-day-title-text-size, var(--spectrum-calendar-day-title-text-size)); + font-weight: var(--mod-calendar-day-title-text-font-weight, var(--spectrum-calendar-day-title-text-font-weight)); + text-transform: uppercase; + -webkit-text-decoration: none !important; + text-decoration: none !important; + cursor: default; +} +.spectrum-Calendar-dayOfWeek[title] { + border-block-end: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + letter-spacing: var(--mod-calendar-title-text-letter-spacing, var(--spectrum-calendar-title-text-letter-spacing)); +} +.spectrum-Calendar-body { + outline: none; +} +.spectrum-Calendar-table { + table-layout: fixed; + border-collapse: collapse; + border-spacing: 0; + -webkit-user-select: none; + user-select: none; +} +.spectrum-Calendar-tableCell { + text-align: center; + position: relative; + box-sizing: initial; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + padding: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); +} +.spectrum-Calendar-tableCell:focus { + outline: 0; +} +.spectrum-Calendar-date { + position: absolute; + display: block; + inset-block-start: 0; + inset-inline-start: 0; + box-sizing: border-box; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + margin: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border: var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) solid transparent; + font-size: var(--mod-calendar-day-text-size, var(--spectrum-calendar-day-text-size)); + line-height: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) - var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) * 2); + white-space: nowrap; + cursor: pointer; +} +.spectrum-Calendar-date:lang(ja), +.spectrum-Calendar-date:lang(ko), +.spectrum-Calendar-date:lang(zh) { + font-size: var(--mod-calendar-day-text-size-han, var(--spectrum-calendar-day-text-size-han)); +} +.spectrum-Calendar-date.is-disabled { + cursor: default; + pointer-events: none; +} +.spectrum-Calendar-date.is-outsideMonth { + display: none; +} +.spectrum-Calendar-date:before { + content: ""; + position: absolute; + inset-block-start: calc(50% - var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) / 2); + inset-inline-start: calc(50% - var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) / 2); + box-sizing: border-box; + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border: var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) solid transparent; +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection) { + font-weight: var(--mod-calendar-day-text-font-weight-selected, var(--spectrum-calendar-day-text-font-weight-selected)); +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection):before { + display: none; +} +.spectrum-Calendar-date.is-today { + font-weight: var(--mod-calendar-day-today-text-font-weight, var(--spectrum-calendar-day-today-text-font-weight)); +} +.spectrum-Calendar-date.is-range-selection { + margin: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)) 0; + border-width: var(--mod-calendar-border-width-reset, var(--spectrum-calendar-border-width-reset)); + line-height: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + border-radius: var(--mod-calendar-border-radius-reset, var(--spectrum-calendar-border-radius-reset)); + inline-size: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) + var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)) * 2); +} +.spectrum-Calendar-date.is-range-selection.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + inline-size: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) + var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding))); +} +.spectrum-Calendar-date.is-range-selection.is-selection-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + font-weight: var(--mod-calendar-day-text-font-weight-cap-selected, var(--spectrum-calendar-day-text-font-weight-cap-selected)); +} +.spectrum-Calendar-date.is-range-selection.is-selection-end:after, +.spectrum-Calendar-date.is-range-selection.is-selection-start:after { + position: absolute; + inset-block-start: 0; + display: block; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + content: ""; +} +.spectrum-Calendar-date.is-range-selection.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + padding-inline-end: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + margin-inline-start: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-start-start-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-end-start-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date.is-range-selection.is-range-start:after, +.spectrum-Calendar-date.is-range-selection.is-range-start:before, +.spectrum-Calendar-date.is-range-selection.is-selection-start:after, +.spectrum-Calendar-date.is-range-selection.is-selection-start:before { + inset-inline-start: 0; +} +.spectrum-Calendar-date.is-range-selection.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-end { + padding-inline-start: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + margin-inline-end: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-start-end-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-end-end-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date.is-range-selection.is-range-end:after, +.spectrum-Calendar-date.is-range-selection.is-range-end:before, +.spectrum-Calendar-date.is-range-selection.is-selection-end:after, +.spectrum-Calendar-date.is-range-selection.is-selection-end:before { + inset-inline-start: auto; + inset-inline-end: 0; +} +.spectrum-Calendar-date.is-range-selection.is-range-start.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-end.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-start.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start.is-selection-end { + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date { + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); +} +.spectrum-Calendar-date:active { + background-color: var(--highcontrast-calendar-day-background-color-down, var(--mod-calendar-day-background-color-down, var(--spectrum-calendar-day-background-color-down))); +} +.spectrum-Calendar-date.is-selected { + color: var(--highcontrast-calendar-day-text-color-selected, var(--mod-calendar-day-text-color-selected, var(--spectrum-calendar-day-text-color-selected))); + background: var(--highcontrast-calendar-day-background-color-selected, var(--mod-calendar-day-background-color-selected, var(--spectrum-calendar-day-background-color-selected))); +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection) { + background: var(--highcontrast-calendar-day-background-color-cap-selected, var(--mod-calendar-day-background-color-cap-selected, var(--spectrum-calendar-day-background-color-cap-selected))); +} +.spectrum-Calendar-date.is-today { + color: var(--highcontrast-calendar-day-today-text-color, var(--mod-calendar-day-today-text-color, var(--spectrum-calendar-day-today-text-color))); +} +.spectrum-Calendar-date.is-today, +.spectrum-Calendar-date.is-today:before { + border-color: var(--highcontrast-calendar-day-today-border-color, var(--mod-calendar-day-today-border-color, var(--spectrum-calendar-day-today-border-color))); +} +@media (hover: hover) { + .spectrum-Calendar-date:hover { + color: var(--highcontrast-calendar-day-text-color-hover, var(--mod-calendar-day-text-color-hover, var(--spectrum-calendar-day-text-color-hover))); + } + .spectrum-Calendar-date:hover:not(.is-selection-end, .is-selection-start):before { + background: var(--highcontrast-calendar-day-background-color-hover, var(--mod-calendar-day-background-color-hover, var(--spectrum-calendar-day-background-color-hover))); + } + .spectrum-Calendar-date.is-range-selection:hover:before, + .spectrum-Calendar-date.is-selected:hover:not(.is-selection-end, .is-selection-start):before { + background: var(--highcontrast-calendar-day-background-color-selected-hover, var(--mod-calendar-day-background-color-selected-hover, var(--spectrum-calendar-day-background-color-selected-hover))); + } + .spectrum-Calendar-date.is-today.is-selected:not(.is-range-selection):hover:before { + background: var(--highcontrast-calendar-day-today-background-color-selected-hover, var(--mod-calendar-day-today-background-color-selected-hover, var(--spectrum-calendar-day-today-background-color-selected-hover))); + } +} +.spectrum-Calendar-date.is-today.is-disabled { + color: var(--highcontrast-calendar-day-today-text-color-disabled, var(--mod-calendar-day-today-text-color-disabled, var(--spectrum-calendar-day-today-text-color-disabled))); +} +.spectrum-Calendar-date.is-today.is-disabled, +.spectrum-Calendar-date.is-today.is-disabled:before { + border-color: var(--highcontrast-calendar-day-today-border-color-disabled, var(--mod-calendar-day-today-border-color-disabled, var(--spectrum-calendar-day-today-border-color-disabled))); +} +.spectrum-Calendar-date.is-focused:not(.is-range-selection) { + background: var(--highcontrast-calendar-day-background-color-key-focus, var(--mod-calendar-day-background-color-key-focus, var(--spectrum-calendar-day-background-color-key-focus))); + color: var(--highcontrast-calendar-day-text-color-key-focus, var(--mod-calendar-day-text-color-key-focus, var(--spectrum-calendar-day-text-color-key-focus))); +} +.spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection), +.spectrum-Calendar-date.is-focused.is-today:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection):active { + border-color: var(--highcontrast-calendar-day-border-color-key-focus, var(--mod-calendar-day-border-color-key-focus, var(--spectrum-calendar-day-border-color-key-focus))); +} +.spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection):active { + color: var(--highcontrast-calendar-day-text-color-selected, var(--mod-calendar-day-text-color-selected, var(--spectrum-calendar-day-text-color-selected))); + background: var(--highcontrast-calendar-day-background-color-cap-selected, var(--mod-calendar-day-background-color-cap-selected, var(--spectrum-calendar-day-background-color-cap-selected))); +} +.spectrum-Calendar-date.is-focused.is-range-selection:before, +.spectrum-Calendar-date.is-focused.is-selected:before { + background: var(--highcontrast-calendar-day-background-color-selected-hover, var(--mod-calendar-day-background-color-selected-hover, var(--spectrum-calendar-day-background-color-selected-hover))); +} +.spectrum-Calendar-date.is-focused:before { + border-color: var(--highcontrast-calendar-day-border-color-key-focus, var(--mod-calendar-day-border-color-key-focus, var(--spectrum-calendar-day-border-color-key-focus))); +} +.spectrum-Calendar-date.is-disabled { + color: var(--highcontrast-calendar-day-text-color-disabled, var(--mod-calendar-day-text-color-disabled, var(--spectrum-calendar-day-text-color-disabled))); +} +.spectrum-Calendar-date.is-selection-end, +.spectrum-Calendar-date.is-selection-start { + color: var(--highcontrast-calendar-day-text-color-cap-selected, var(--mod-calendar-day-text-color-cap-selected, var(--spectrum-calendar-day-text-color-cap-selected))); +} +.spectrum-Calendar-date.is-selection-end:after, +.spectrum-Calendar-date.is-selection-start:after { + background-color: var(--highcontrast-calendar-day-background-color-selected, var(--mod-calendar-day-background-color-selected, var(--spectrum-calendar-day-background-color-selected))); +} +.spectrum-Calendar-date.is-selection-end.is-disabled, +.spectrum-Calendar-date.is-selection-start.is-disabled { + color: var(--highcontrast-calendar-day-text-color-disabled, var(--mod-calendar-day-text-color-disabled, var(--spectrum-calendar-day-text-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Calendar-nextMonth, + .spectrum-Calendar-prevMonth { + --highcontrast-calendar-button-icon-color-disabled: GrayText; + --highcontrast-calendar-button-icon-color: ButtonText; + } + .spectrum-Calendar-date { + color: initial; + forced-color-adjust: none; + --highcontrast-calendar-day-background-color-cap-selected: Highlight; + --highcontrast-calendar-day-background-color-down: ButtonFace; + --highcontrast-calendar-day-background-color-hover: Transparent; + --highcontrast-calendar-day-background-color-key-focus: ButtonFace; + --highcontrast-calendar-day-background-color-selected-hover: Transparent; + --highcontrast-calendar-day-background-color-selected: Highlight; + --highcontrast-calendar-day-border-color-key-focus: ButtonText; + --highcontrast-calendar-day-text-color-cap-selected: HighlightText; + --highcontrast-calendar-day-text-color-disabled: GrayText; + --highcontrast-calendar-day-text-color-hover: ButtonText; + --highcontrast-calendar-day-text-color-key-focus: ButtonText; + --highcontrast-calendar-day-text-color-selected-hover: HighlightText; + --highcontrast-calendar-day-text-color-selected: HighlightText; + --highcontrast-calendar-day-title-text-color: CanvasText; + --highcontrast-calendar-day-today-background-color-selected-hover: Highlight; + --highcontrast-calendar-day-today-border-color-disabled: GrayText; + --highcontrast-calendar-day-today-border-color: ButtonText; + --highcontrast-calendar-day-today-text-color-disabled: GrayText; + --highcontrast-calendar-day-today-text-color: ButtonText; + } + .spectrum-Calendar-date.is-range-selection.is-today { + color: HighlightText; + } + .spectrum-Calendar-date.is-range-selection.is-selection-end:after, + .spectrum-Calendar-date.is-range-selection.is-selection-start:after { + content: none; + } + .spectrum-Calendar-date.is-disabled.is-range-selection, + .spectrum-Calendar-date.is-disabled.is-selected { + background: Highlight; + color: HighlightText; + } +} +/*# sourceMappingURL=components/calendar/index.css.map */ diff --git a/components/calendar/index-vars.css b/components/calendar/index-vars.css new file mode 100644 index 0000000000..5498cf0d7a --- /dev/null +++ b/components/calendar/index-vars.css @@ -0,0 +1,362 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Calendar { + --spectrum-calendar-day-width: var(--spectrum-component-height-100); + --spectrum-calendar-day-height: var(--spectrum-component-height-100); + --spectrum-calendar-border-radius-reset: 0; + --spectrum-calendar-border-width-reset: 0; + --spectrum-calendar-day-border-size: var(--spectrum-border-width-200); + --spectrum-calendar-margin-y: 24px; + --spectrum-calendar-margin-x: 32px; + --spectrum-calendar-day-padding: 4px; + --spectrum-calendar-width: calc((var(--spectrum-calendar-day-width) + var(--spectrum-calendar-day-padding) * 2) * 7); + --spectrum-calendar-title-text-letter-spacing: 0.06em; + --spectrum-calendar-title-height: 32px; + --spectrum-calendar-title-text-size: var(--spectrum-font-size-300); + --spectrum-calendar-day-title-text-font-weight: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-title-text-color: var(--spectrum-gray-700); + --spectrum-calendar-day-title-text-size: var(--spectrum-font-size-50); + --spectrum-calendar-day-text-size-han: var(--spectrum-font-size-50); + --spectrum-calendar-day-text-size: var(--spectrum-font-size-100); + --spectrum-calendar-day-text-color-selected: var(--spectrum-gray-900); + --spectrum-calendar-day-text-color-hover: var(--spectrum-gray-900); + --spectrum-calendar-day-text-color-cap-selected: var(--spectrum-gray-900); + --spectrum-calendar-day-text-font-weight-selected: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-text-font-weight-cap-selected: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-today-text-color: var(--spectrum-gray-800); + --spectrum-calendar-day-today-text-font-weight: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-today-border-color: var(--spectrum-gray-800); + --spectrum-calendar-day-today-text-color-disabled: var(--spectrum-gray-500); + --spectrum-calendar-day-today-border-color-disabled: var(--spectrum-gray-400); + --spectrum-calendar-day-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-calendar-day-text-color-key-focus: var(--spectrum-gray-900); + --spectrum-calendar-button-icon-color: var(--spectrum-gray-700); +} +.spectrum-Calendar:dir(rtl), +[dir="rtl"] .spectrum-Calendar { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Calendar { + inline-size: var(--mod-calendar-width, var(--spectrum-calendar-width)); + display: inline-block; +} +.spectrum-Calendar--padded { + margin: var(--mod-calendar-margin-x, var(--spectrum-calendar-margin-x)) var(--mod-calendar-margin-y, var(--spectrum-calendar-margin-y)); +} +.spectrum-Calendar-header { + display: flex; + align-items: center; + inline-size: 100%; +} +.spectrum-Calendar-title { + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); + font-size: var(--mod-calendar-title-text-size, var(--spectrum-calendar-title-text-size)); + font-weight: 700; + line-height: var(--mod-calendar-title-height, var(--spectrum-calendar-title-height)); + margin: 0; + order: 1; + flex-grow: 1; + text-align: center; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.spectrum-Calendar-nextMonth, +.spectrum-Calendar-prevMonth { + transform: var(--spectrum-logical-rotation); +} +.spectrum-Calendar-nextMonth:not([disabled]), +.spectrum-Calendar-prevMonth:not([disabled]) { + color: var(--highcontrast-calendar-button-icon-color, var(--mod-calendar-button-icon-color, var(--spectrum-calendar-button-icon-color))); +} +.spectrum-Calendar-prevMonth { + order: 0; +} +.spectrum-Calendar-nextMonth { + order: 2; +} +.spectrum-Calendar-dayOfWeek { + display: flex; + flex-direction: column; + justify-content: flex-end; + block-size: 100%; + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-block-end: none !important; + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); + font-size: var(--mod-calendar-day-title-text-size, var(--spectrum-calendar-day-title-text-size)); + font-weight: var(--mod-calendar-day-title-text-font-weight, var(--spectrum-calendar-day-title-text-font-weight)); + text-transform: uppercase; + -webkit-text-decoration: none !important; + text-decoration: none !important; + cursor: default; +} +.spectrum-Calendar-dayOfWeek[title] { + border-block-end: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + letter-spacing: var(--mod-calendar-title-text-letter-spacing, var(--spectrum-calendar-title-text-letter-spacing)); +} +.spectrum-Calendar-body { + outline: none; +} +.spectrum-Calendar-table { + table-layout: fixed; + border-collapse: collapse; + border-spacing: 0; + -webkit-user-select: none; + user-select: none; +} +.spectrum-Calendar-tableCell { + text-align: center; + position: relative; + box-sizing: initial; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + padding: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); +} +.spectrum-Calendar-tableCell:focus { + outline: 0; +} +.spectrum-Calendar-date { + position: absolute; + display: block; + inset-block-start: 0; + inset-inline-start: 0; + box-sizing: border-box; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + margin: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border: var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) solid transparent; + font-size: var(--mod-calendar-day-text-size, var(--spectrum-calendar-day-text-size)); + line-height: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) - var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) * 2); + white-space: nowrap; + cursor: pointer; +} +.spectrum-Calendar-date:lang(ja), +.spectrum-Calendar-date:lang(ko), +.spectrum-Calendar-date:lang(zh) { + font-size: var(--mod-calendar-day-text-size-han, var(--spectrum-calendar-day-text-size-han)); +} +.spectrum-Calendar-date.is-disabled { + cursor: default; + pointer-events: none; +} +.spectrum-Calendar-date.is-outsideMonth { + display: none; +} +.spectrum-Calendar-date:before { + content: ""; + position: absolute; + inset-block-start: calc(50% - var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) / 2); + inset-inline-start: calc(50% - var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) / 2); + box-sizing: border-box; + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border: var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) solid transparent; +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection) { + font-weight: var(--mod-calendar-day-text-font-weight-selected, var(--spectrum-calendar-day-text-font-weight-selected)); +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection):before { + display: none; +} +.spectrum-Calendar-date.is-today { + font-weight: var(--mod-calendar-day-today-text-font-weight, var(--spectrum-calendar-day-today-text-font-weight)); +} +.spectrum-Calendar-date.is-range-selection { + margin: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)) 0; + border-width: var(--mod-calendar-border-width-reset, var(--spectrum-calendar-border-width-reset)); + line-height: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + border-radius: var(--mod-calendar-border-radius-reset, var(--spectrum-calendar-border-radius-reset)); + inline-size: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) + var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)) * 2); +} +.spectrum-Calendar-date.is-range-selection.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + inline-size: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) + var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding))); +} +.spectrum-Calendar-date.is-range-selection.is-selection-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + font-weight: var(--mod-calendar-day-text-font-weight-cap-selected, var(--spectrum-calendar-day-text-font-weight-cap-selected)); +} +.spectrum-Calendar-date.is-range-selection.is-selection-end:after, +.spectrum-Calendar-date.is-range-selection.is-selection-start:after { + position: absolute; + inset-block-start: 0; + display: block; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + content: ""; +} +.spectrum-Calendar-date.is-range-selection.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + padding-inline-end: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + margin-inline-start: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-start-start-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-end-start-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date.is-range-selection.is-range-start:after, +.spectrum-Calendar-date.is-range-selection.is-range-start:before, +.spectrum-Calendar-date.is-range-selection.is-selection-start:after, +.spectrum-Calendar-date.is-range-selection.is-selection-start:before { + inset-inline-start: 0; +} +.spectrum-Calendar-date.is-range-selection.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-end { + padding-inline-start: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + margin-inline-end: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-start-end-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-end-end-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date.is-range-selection.is-range-end:after, +.spectrum-Calendar-date.is-range-selection.is-range-end:before, +.spectrum-Calendar-date.is-range-selection.is-selection-end:after, +.spectrum-Calendar-date.is-range-selection.is-selection-end:before { + inset-inline-start: auto; + inset-inline-end: 0; +} +.spectrum-Calendar-date.is-range-selection.is-range-start.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-end.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-start.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start.is-selection-end { + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date { + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); +} +.spectrum-Calendar-date:active { + background-color: var(--highcontrast-calendar-day-background-color-down, var(--mod-calendar-day-background-color-down, var(--spectrum-calendar-day-background-color-down))); +} +.spectrum-Calendar-date.is-selected { + color: var(--highcontrast-calendar-day-text-color-selected, var(--mod-calendar-day-text-color-selected, var(--spectrum-calendar-day-text-color-selected))); + background: var(--highcontrast-calendar-day-background-color-selected, var(--mod-calendar-day-background-color-selected, var(--spectrum-calendar-day-background-color-selected))); +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection) { + background: var(--highcontrast-calendar-day-background-color-cap-selected, var(--mod-calendar-day-background-color-cap-selected, var(--spectrum-calendar-day-background-color-cap-selected))); +} +.spectrum-Calendar-date.is-today { + color: var(--highcontrast-calendar-day-today-text-color, var(--mod-calendar-day-today-text-color, var(--spectrum-calendar-day-today-text-color))); +} +.spectrum-Calendar-date.is-today, +.spectrum-Calendar-date.is-today:before { + border-color: var(--highcontrast-calendar-day-today-border-color, var(--mod-calendar-day-today-border-color, var(--spectrum-calendar-day-today-border-color))); +} +@media (hover: hover) { + .spectrum-Calendar-date:hover { + color: var(--highcontrast-calendar-day-text-color-hover, var(--mod-calendar-day-text-color-hover, var(--spectrum-calendar-day-text-color-hover))); + } + .spectrum-Calendar-date:hover:not(.is-selection-end, .is-selection-start):before { + background: var(--highcontrast-calendar-day-background-color-hover, var(--mod-calendar-day-background-color-hover, var(--spectrum-calendar-day-background-color-hover))); + } + .spectrum-Calendar-date.is-range-selection:hover:before, + .spectrum-Calendar-date.is-selected:hover:not(.is-selection-end, .is-selection-start):before { + background: var(--highcontrast-calendar-day-background-color-selected-hover, var(--mod-calendar-day-background-color-selected-hover, var(--spectrum-calendar-day-background-color-selected-hover))); + } + .spectrum-Calendar-date.is-today.is-selected:not(.is-range-selection):hover:before { + background: var(--highcontrast-calendar-day-today-background-color-selected-hover, var(--mod-calendar-day-today-background-color-selected-hover, var(--spectrum-calendar-day-today-background-color-selected-hover))); + } +} +.spectrum-Calendar-date.is-today.is-disabled { + color: var(--highcontrast-calendar-day-today-text-color-disabled, var(--mod-calendar-day-today-text-color-disabled, var(--spectrum-calendar-day-today-text-color-disabled))); +} +.spectrum-Calendar-date.is-today.is-disabled, +.spectrum-Calendar-date.is-today.is-disabled:before { + border-color: var(--highcontrast-calendar-day-today-border-color-disabled, var(--mod-calendar-day-today-border-color-disabled, var(--spectrum-calendar-day-today-border-color-disabled))); +} +.spectrum-Calendar-date.is-focused:not(.is-range-selection) { + background: var(--highcontrast-calendar-day-background-color-key-focus, var(--mod-calendar-day-background-color-key-focus, var(--spectrum-calendar-day-background-color-key-focus))); + color: var(--highcontrast-calendar-day-text-color-key-focus, var(--mod-calendar-day-text-color-key-focus, var(--spectrum-calendar-day-text-color-key-focus))); +} +.spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection), +.spectrum-Calendar-date.is-focused.is-today:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection):active { + border-color: var(--highcontrast-calendar-day-border-color-key-focus, var(--mod-calendar-day-border-color-key-focus, var(--spectrum-calendar-day-border-color-key-focus))); +} +.spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection):active { + color: var(--highcontrast-calendar-day-text-color-selected, var(--mod-calendar-day-text-color-selected, var(--spectrum-calendar-day-text-color-selected))); + background: var(--highcontrast-calendar-day-background-color-cap-selected, var(--mod-calendar-day-background-color-cap-selected, var(--spectrum-calendar-day-background-color-cap-selected))); +} +.spectrum-Calendar-date.is-focused.is-range-selection:before, +.spectrum-Calendar-date.is-focused.is-selected:before { + background: var(--highcontrast-calendar-day-background-color-selected-hover, var(--mod-calendar-day-background-color-selected-hover, var(--spectrum-calendar-day-background-color-selected-hover))); +} +.spectrum-Calendar-date.is-focused:before { + border-color: var(--highcontrast-calendar-day-border-color-key-focus, var(--mod-calendar-day-border-color-key-focus, var(--spectrum-calendar-day-border-color-key-focus))); +} +.spectrum-Calendar-date.is-disabled { + color: var(--highcontrast-calendar-day-text-color-disabled, var(--mod-calendar-day-text-color-disabled, var(--spectrum-calendar-day-text-color-disabled))); +} +.spectrum-Calendar-date.is-selection-end, +.spectrum-Calendar-date.is-selection-start { + color: var(--highcontrast-calendar-day-text-color-cap-selected, var(--mod-calendar-day-text-color-cap-selected, var(--spectrum-calendar-day-text-color-cap-selected))); +} +.spectrum-Calendar-date.is-selection-end:after, +.spectrum-Calendar-date.is-selection-start:after { + background-color: var(--highcontrast-calendar-day-background-color-selected, var(--mod-calendar-day-background-color-selected, var(--spectrum-calendar-day-background-color-selected))); +} +.spectrum-Calendar-date.is-selection-end.is-disabled, +.spectrum-Calendar-date.is-selection-start.is-disabled { + color: var(--highcontrast-calendar-day-text-color-disabled, var(--mod-calendar-day-text-color-disabled, var(--spectrum-calendar-day-text-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Calendar-nextMonth, + .spectrum-Calendar-prevMonth { + --highcontrast-calendar-button-icon-color-disabled: GrayText; + --highcontrast-calendar-button-icon-color: ButtonText; + } + .spectrum-Calendar-date { + color: initial; + forced-color-adjust: none; + --highcontrast-calendar-day-background-color-cap-selected: Highlight; + --highcontrast-calendar-day-background-color-down: ButtonFace; + --highcontrast-calendar-day-background-color-hover: Transparent; + --highcontrast-calendar-day-background-color-key-focus: ButtonFace; + --highcontrast-calendar-day-background-color-selected-hover: Transparent; + --highcontrast-calendar-day-background-color-selected: Highlight; + --highcontrast-calendar-day-border-color-key-focus: ButtonText; + --highcontrast-calendar-day-text-color-cap-selected: HighlightText; + --highcontrast-calendar-day-text-color-disabled: GrayText; + --highcontrast-calendar-day-text-color-hover: ButtonText; + --highcontrast-calendar-day-text-color-key-focus: ButtonText; + --highcontrast-calendar-day-text-color-selected-hover: HighlightText; + --highcontrast-calendar-day-text-color-selected: HighlightText; + --highcontrast-calendar-day-title-text-color: CanvasText; + --highcontrast-calendar-day-today-background-color-selected-hover: Highlight; + --highcontrast-calendar-day-today-border-color-disabled: GrayText; + --highcontrast-calendar-day-today-border-color: ButtonText; + --highcontrast-calendar-day-today-text-color-disabled: GrayText; + --highcontrast-calendar-day-today-text-color: ButtonText; + } + .spectrum-Calendar-date.is-range-selection.is-today { + color: HighlightText; + } + .spectrum-Calendar-date.is-range-selection.is-selection-end:after, + .spectrum-Calendar-date.is-range-selection.is-selection-start:after { + content: none; + } + .spectrum-Calendar-date.is-disabled.is-range-selection, + .spectrum-Calendar-date.is-disabled.is-selected { + background: Highlight; + color: HighlightText; + } +} +/*# sourceMappingURL=components/calendar/index.css.map */ diff --git a/components/calendar/index.css b/components/calendar/index.css new file mode 100644 index 0000000000..5498cf0d7a --- /dev/null +++ b/components/calendar/index.css @@ -0,0 +1,362 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Calendar { + --spectrum-calendar-day-width: var(--spectrum-component-height-100); + --spectrum-calendar-day-height: var(--spectrum-component-height-100); + --spectrum-calendar-border-radius-reset: 0; + --spectrum-calendar-border-width-reset: 0; + --spectrum-calendar-day-border-size: var(--spectrum-border-width-200); + --spectrum-calendar-margin-y: 24px; + --spectrum-calendar-margin-x: 32px; + --spectrum-calendar-day-padding: 4px; + --spectrum-calendar-width: calc((var(--spectrum-calendar-day-width) + var(--spectrum-calendar-day-padding) * 2) * 7); + --spectrum-calendar-title-text-letter-spacing: 0.06em; + --spectrum-calendar-title-height: 32px; + --spectrum-calendar-title-text-size: var(--spectrum-font-size-300); + --spectrum-calendar-day-title-text-font-weight: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-title-text-color: var(--spectrum-gray-700); + --spectrum-calendar-day-title-text-size: var(--spectrum-font-size-50); + --spectrum-calendar-day-text-size-han: var(--spectrum-font-size-50); + --spectrum-calendar-day-text-size: var(--spectrum-font-size-100); + --spectrum-calendar-day-text-color-selected: var(--spectrum-gray-900); + --spectrum-calendar-day-text-color-hover: var(--spectrum-gray-900); + --spectrum-calendar-day-text-color-cap-selected: var(--spectrum-gray-900); + --spectrum-calendar-day-text-font-weight-selected: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-text-font-weight-cap-selected: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-today-text-color: var(--spectrum-gray-800); + --spectrum-calendar-day-today-text-font-weight: var(--spectrum-bold-font-weight); + --spectrum-calendar-day-today-border-color: var(--spectrum-gray-800); + --spectrum-calendar-day-today-text-color-disabled: var(--spectrum-gray-500); + --spectrum-calendar-day-today-border-color-disabled: var(--spectrum-gray-400); + --spectrum-calendar-day-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-calendar-day-text-color-key-focus: var(--spectrum-gray-900); + --spectrum-calendar-button-icon-color: var(--spectrum-gray-700); +} +.spectrum-Calendar:dir(rtl), +[dir="rtl"] .spectrum-Calendar { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Calendar { + inline-size: var(--mod-calendar-width, var(--spectrum-calendar-width)); + display: inline-block; +} +.spectrum-Calendar--padded { + margin: var(--mod-calendar-margin-x, var(--spectrum-calendar-margin-x)) var(--mod-calendar-margin-y, var(--spectrum-calendar-margin-y)); +} +.spectrum-Calendar-header { + display: flex; + align-items: center; + inline-size: 100%; +} +.spectrum-Calendar-title { + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); + font-size: var(--mod-calendar-title-text-size, var(--spectrum-calendar-title-text-size)); + font-weight: 700; + line-height: var(--mod-calendar-title-height, var(--spectrum-calendar-title-height)); + margin: 0; + order: 1; + flex-grow: 1; + text-align: center; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.spectrum-Calendar-nextMonth, +.spectrum-Calendar-prevMonth { + transform: var(--spectrum-logical-rotation); +} +.spectrum-Calendar-nextMonth:not([disabled]), +.spectrum-Calendar-prevMonth:not([disabled]) { + color: var(--highcontrast-calendar-button-icon-color, var(--mod-calendar-button-icon-color, var(--spectrum-calendar-button-icon-color))); +} +.spectrum-Calendar-prevMonth { + order: 0; +} +.spectrum-Calendar-nextMonth { + order: 2; +} +.spectrum-Calendar-dayOfWeek { + display: flex; + flex-direction: column; + justify-content: flex-end; + block-size: 100%; + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-block-end: none !important; + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); + font-size: var(--mod-calendar-day-title-text-size, var(--spectrum-calendar-day-title-text-size)); + font-weight: var(--mod-calendar-day-title-text-font-weight, var(--spectrum-calendar-day-title-text-font-weight)); + text-transform: uppercase; + -webkit-text-decoration: none !important; + text-decoration: none !important; + cursor: default; +} +.spectrum-Calendar-dayOfWeek[title] { + border-block-end: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + letter-spacing: var(--mod-calendar-title-text-letter-spacing, var(--spectrum-calendar-title-text-letter-spacing)); +} +.spectrum-Calendar-body { + outline: none; +} +.spectrum-Calendar-table { + table-layout: fixed; + border-collapse: collapse; + border-spacing: 0; + -webkit-user-select: none; + user-select: none; +} +.spectrum-Calendar-tableCell { + text-align: center; + position: relative; + box-sizing: initial; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + padding: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); +} +.spectrum-Calendar-tableCell:focus { + outline: 0; +} +.spectrum-Calendar-date { + position: absolute; + display: block; + inset-block-start: 0; + inset-inline-start: 0; + box-sizing: border-box; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + margin: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border: var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) solid transparent; + font-size: var(--mod-calendar-day-text-size, var(--spectrum-calendar-day-text-size)); + line-height: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) - var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) * 2); + white-space: nowrap; + cursor: pointer; +} +.spectrum-Calendar-date:lang(ja), +.spectrum-Calendar-date:lang(ko), +.spectrum-Calendar-date:lang(zh) { + font-size: var(--mod-calendar-day-text-size-han, var(--spectrum-calendar-day-text-size-han)); +} +.spectrum-Calendar-date.is-disabled { + cursor: default; + pointer-events: none; +} +.spectrum-Calendar-date.is-outsideMonth { + display: none; +} +.spectrum-Calendar-date:before { + content: ""; + position: absolute; + inset-block-start: calc(50% - var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) / 2); + inset-inline-start: calc(50% - var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) / 2); + box-sizing: border-box; + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border: var(--mod-calendar-day-border-size, var(--spectrum-calendar-day-border-size)) solid transparent; +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection) { + font-weight: var(--mod-calendar-day-text-font-weight-selected, var(--spectrum-calendar-day-text-font-weight-selected)); +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection):before { + display: none; +} +.spectrum-Calendar-date.is-today { + font-weight: var(--mod-calendar-day-today-text-font-weight, var(--spectrum-calendar-day-today-text-font-weight)); +} +.spectrum-Calendar-date.is-range-selection { + margin: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)) 0; + border-width: var(--mod-calendar-border-width-reset, var(--spectrum-calendar-border-width-reset)); + line-height: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + border-radius: var(--mod-calendar-border-radius-reset, var(--spectrum-calendar-border-radius-reset)); + inline-size: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) + var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)) * 2); +} +.spectrum-Calendar-date.is-range-selection.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + inline-size: calc(var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)) + var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding))); +} +.spectrum-Calendar-date.is-range-selection.is-selection-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + font-weight: var(--mod-calendar-day-text-font-weight-cap-selected, var(--spectrum-calendar-day-text-font-weight-cap-selected)); +} +.spectrum-Calendar-date.is-range-selection.is-selection-end:after, +.spectrum-Calendar-date.is-range-selection.is-selection-start:after { + position: absolute; + inset-block-start: 0; + display: block; + block-size: var(--mod-calendar-day-height, var(--spectrum-calendar-day-height)); + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + content: ""; +} +.spectrum-Calendar-date.is-range-selection.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-start { + padding-inline-end: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + margin-inline-start: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-start-start-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-end-start-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date.is-range-selection.is-range-start:after, +.spectrum-Calendar-date.is-range-selection.is-range-start:before, +.spectrum-Calendar-date.is-range-selection.is-selection-start:after, +.spectrum-Calendar-date.is-range-selection.is-selection-start:before { + inset-inline-start: 0; +} +.spectrum-Calendar-date.is-range-selection.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-end { + padding-inline-start: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + margin-inline-end: var(--mod-calendar-day-padding, var(--spectrum-calendar-day-padding)); + border-start-end-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-end-end-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date.is-range-selection.is-range-end:after, +.spectrum-Calendar-date.is-range-selection.is-range-end:before, +.spectrum-Calendar-date.is-range-selection.is-selection-end:after, +.spectrum-Calendar-date.is-range-selection.is-selection-end:before { + inset-inline-start: auto; + inset-inline-end: 0; +} +.spectrum-Calendar-date.is-range-selection.is-range-start.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-end.is-range-start, +.spectrum-Calendar-date.is-range-selection.is-selection-start.is-range-end, +.spectrum-Calendar-date.is-range-selection.is-selection-start.is-selection-end { + inline-size: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); + border-radius: var(--mod-calendar-day-width, var(--spectrum-calendar-day-width)); +} +.spectrum-Calendar-date { + color: var(--highcontrast-calendar-day-title-text-color, var(--mod-calendar-day-title-text-color, var(--spectrum-calendar-day-title-text-color))); +} +.spectrum-Calendar-date:active { + background-color: var(--highcontrast-calendar-day-background-color-down, var(--mod-calendar-day-background-color-down, var(--spectrum-calendar-day-background-color-down))); +} +.spectrum-Calendar-date.is-selected { + color: var(--highcontrast-calendar-day-text-color-selected, var(--mod-calendar-day-text-color-selected, var(--spectrum-calendar-day-text-color-selected))); + background: var(--highcontrast-calendar-day-background-color-selected, var(--mod-calendar-day-background-color-selected, var(--spectrum-calendar-day-background-color-selected))); +} +.spectrum-Calendar-date.is-selected:not(.is-range-selection) { + background: var(--highcontrast-calendar-day-background-color-cap-selected, var(--mod-calendar-day-background-color-cap-selected, var(--spectrum-calendar-day-background-color-cap-selected))); +} +.spectrum-Calendar-date.is-today { + color: var(--highcontrast-calendar-day-today-text-color, var(--mod-calendar-day-today-text-color, var(--spectrum-calendar-day-today-text-color))); +} +.spectrum-Calendar-date.is-today, +.spectrum-Calendar-date.is-today:before { + border-color: var(--highcontrast-calendar-day-today-border-color, var(--mod-calendar-day-today-border-color, var(--spectrum-calendar-day-today-border-color))); +} +@media (hover: hover) { + .spectrum-Calendar-date:hover { + color: var(--highcontrast-calendar-day-text-color-hover, var(--mod-calendar-day-text-color-hover, var(--spectrum-calendar-day-text-color-hover))); + } + .spectrum-Calendar-date:hover:not(.is-selection-end, .is-selection-start):before { + background: var(--highcontrast-calendar-day-background-color-hover, var(--mod-calendar-day-background-color-hover, var(--spectrum-calendar-day-background-color-hover))); + } + .spectrum-Calendar-date.is-range-selection:hover:before, + .spectrum-Calendar-date.is-selected:hover:not(.is-selection-end, .is-selection-start):before { + background: var(--highcontrast-calendar-day-background-color-selected-hover, var(--mod-calendar-day-background-color-selected-hover, var(--spectrum-calendar-day-background-color-selected-hover))); + } + .spectrum-Calendar-date.is-today.is-selected:not(.is-range-selection):hover:before { + background: var(--highcontrast-calendar-day-today-background-color-selected-hover, var(--mod-calendar-day-today-background-color-selected-hover, var(--spectrum-calendar-day-today-background-color-selected-hover))); + } +} +.spectrum-Calendar-date.is-today.is-disabled { + color: var(--highcontrast-calendar-day-today-text-color-disabled, var(--mod-calendar-day-today-text-color-disabled, var(--spectrum-calendar-day-today-text-color-disabled))); +} +.spectrum-Calendar-date.is-today.is-disabled, +.spectrum-Calendar-date.is-today.is-disabled:before { + border-color: var(--highcontrast-calendar-day-today-border-color-disabled, var(--mod-calendar-day-today-border-color-disabled, var(--spectrum-calendar-day-today-border-color-disabled))); +} +.spectrum-Calendar-date.is-focused:not(.is-range-selection) { + background: var(--highcontrast-calendar-day-background-color-key-focus, var(--mod-calendar-day-background-color-key-focus, var(--spectrum-calendar-day-background-color-key-focus))); + color: var(--highcontrast-calendar-day-text-color-key-focus, var(--mod-calendar-day-text-color-key-focus, var(--spectrum-calendar-day-text-color-key-focus))); +} +.spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection), +.spectrum-Calendar-date.is-focused.is-today:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection):active { + border-color: var(--highcontrast-calendar-day-border-color-key-focus, var(--mod-calendar-day-border-color-key-focus, var(--spectrum-calendar-day-border-color-key-focus))); +} +.spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection), +.spectrum-Calendar-date.is-focused:not(.is-range-selection):active { + color: var(--highcontrast-calendar-day-text-color-selected, var(--mod-calendar-day-text-color-selected, var(--spectrum-calendar-day-text-color-selected))); + background: var(--highcontrast-calendar-day-background-color-cap-selected, var(--mod-calendar-day-background-color-cap-selected, var(--spectrum-calendar-day-background-color-cap-selected))); +} +.spectrum-Calendar-date.is-focused.is-range-selection:before, +.spectrum-Calendar-date.is-focused.is-selected:before { + background: var(--highcontrast-calendar-day-background-color-selected-hover, var(--mod-calendar-day-background-color-selected-hover, var(--spectrum-calendar-day-background-color-selected-hover))); +} +.spectrum-Calendar-date.is-focused:before { + border-color: var(--highcontrast-calendar-day-border-color-key-focus, var(--mod-calendar-day-border-color-key-focus, var(--spectrum-calendar-day-border-color-key-focus))); +} +.spectrum-Calendar-date.is-disabled { + color: var(--highcontrast-calendar-day-text-color-disabled, var(--mod-calendar-day-text-color-disabled, var(--spectrum-calendar-day-text-color-disabled))); +} +.spectrum-Calendar-date.is-selection-end, +.spectrum-Calendar-date.is-selection-start { + color: var(--highcontrast-calendar-day-text-color-cap-selected, var(--mod-calendar-day-text-color-cap-selected, var(--spectrum-calendar-day-text-color-cap-selected))); +} +.spectrum-Calendar-date.is-selection-end:after, +.spectrum-Calendar-date.is-selection-start:after { + background-color: var(--highcontrast-calendar-day-background-color-selected, var(--mod-calendar-day-background-color-selected, var(--spectrum-calendar-day-background-color-selected))); +} +.spectrum-Calendar-date.is-selection-end.is-disabled, +.spectrum-Calendar-date.is-selection-start.is-disabled { + color: var(--highcontrast-calendar-day-text-color-disabled, var(--mod-calendar-day-text-color-disabled, var(--spectrum-calendar-day-text-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Calendar-nextMonth, + .spectrum-Calendar-prevMonth { + --highcontrast-calendar-button-icon-color-disabled: GrayText; + --highcontrast-calendar-button-icon-color: ButtonText; + } + .spectrum-Calendar-date { + color: initial; + forced-color-adjust: none; + --highcontrast-calendar-day-background-color-cap-selected: Highlight; + --highcontrast-calendar-day-background-color-down: ButtonFace; + --highcontrast-calendar-day-background-color-hover: Transparent; + --highcontrast-calendar-day-background-color-key-focus: ButtonFace; + --highcontrast-calendar-day-background-color-selected-hover: Transparent; + --highcontrast-calendar-day-background-color-selected: Highlight; + --highcontrast-calendar-day-border-color-key-focus: ButtonText; + --highcontrast-calendar-day-text-color-cap-selected: HighlightText; + --highcontrast-calendar-day-text-color-disabled: GrayText; + --highcontrast-calendar-day-text-color-hover: ButtonText; + --highcontrast-calendar-day-text-color-key-focus: ButtonText; + --highcontrast-calendar-day-text-color-selected-hover: HighlightText; + --highcontrast-calendar-day-text-color-selected: HighlightText; + --highcontrast-calendar-day-title-text-color: CanvasText; + --highcontrast-calendar-day-today-background-color-selected-hover: Highlight; + --highcontrast-calendar-day-today-border-color-disabled: GrayText; + --highcontrast-calendar-day-today-border-color: ButtonText; + --highcontrast-calendar-day-today-text-color-disabled: GrayText; + --highcontrast-calendar-day-today-text-color: ButtonText; + } + .spectrum-Calendar-date.is-range-selection.is-today { + color: HighlightText; + } + .spectrum-Calendar-date.is-range-selection.is-selection-end:after, + .spectrum-Calendar-date.is-range-selection.is-selection-start:after { + content: none; + } + .spectrum-Calendar-date.is-disabled.is-range-selection, + .spectrum-Calendar-date.is-disabled.is-selected { + background: Highlight; + color: HighlightText; + } +} +/*# sourceMappingURL=components/calendar/index.css.map */ diff --git a/components/calendar/metadata.json b/components/calendar/metadata.json new file mode 100644 index 0000000000..56346d39db --- /dev/null +++ b/components/calendar/metadata.json @@ -0,0 +1,172 @@ +{ + "selectors": [ + ".spectrum-Calendar", + ".spectrum-Calendar--padded", + ".spectrum-Calendar-body", + ".spectrum-Calendar-date", + ".spectrum-Calendar-date.is-disabled", + ".spectrum-Calendar-date.is-disabled.is-range-selection,\n\t.spectrum-Calendar-date.is-disabled.is-selected", + ".spectrum-Calendar-date.is-focused.is-range-selection:before,\n.spectrum-Calendar-date.is-focused.is-selected:before", + ".spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection),\n.spectrum-Calendar-date.is-focused.is-today:not(.is-range-selection),\n.spectrum-Calendar-date.is-focused:not(.is-range-selection),\n.spectrum-Calendar-date.is-focused:not(.is-range-selection):active", + ".spectrum-Calendar-date.is-focused.is-selected:not(.is-range-selection),\n.spectrum-Calendar-date.is-focused:not(.is-range-selection):active", + ".spectrum-Calendar-date.is-focused:before", + ".spectrum-Calendar-date.is-focused:not(.is-range-selection)", + ".spectrum-Calendar-date.is-outsideMonth", + ".spectrum-Calendar-date.is-range-selection", + ".spectrum-Calendar-date.is-range-selection.is-range-end,\n.spectrum-Calendar-date.is-range-selection.is-range-start,\n.spectrum-Calendar-date.is-range-selection.is-selection-end,\n.spectrum-Calendar-date.is-range-selection.is-selection-start", + ".spectrum-Calendar-date.is-range-selection.is-range-end,\n.spectrum-Calendar-date.is-range-selection.is-selection-end", + ".spectrum-Calendar-date.is-range-selection.is-range-end:after,\n.spectrum-Calendar-date.is-range-selection.is-range-end:before,\n.spectrum-Calendar-date.is-range-selection.is-selection-end:after,\n.spectrum-Calendar-date.is-range-selection.is-selection-end:before", + ".spectrum-Calendar-date.is-range-selection.is-range-start,\n.spectrum-Calendar-date.is-range-selection.is-selection-start", + ".spectrum-Calendar-date.is-range-selection.is-range-start.is-range-end,\n.spectrum-Calendar-date.is-range-selection.is-selection-end.is-range-start,\n.spectrum-Calendar-date.is-range-selection.is-selection-start.is-range-end,\n.spectrum-Calendar-date.is-range-selection.is-selection-start.is-selection-end", + ".spectrum-Calendar-date.is-range-selection.is-range-start:after,\n.spectrum-Calendar-date.is-range-selection.is-range-start:before,\n.spectrum-Calendar-date.is-range-selection.is-selection-start:after,\n.spectrum-Calendar-date.is-range-selection.is-selection-start:before", + ".spectrum-Calendar-date.is-range-selection.is-selection-end,\n.spectrum-Calendar-date.is-range-selection.is-selection-start", + ".spectrum-Calendar-date.is-range-selection.is-selection-end:after,\n\t.spectrum-Calendar-date.is-range-selection.is-selection-start:after", + ".spectrum-Calendar-date.is-range-selection.is-selection-end:after,\n.spectrum-Calendar-date.is-range-selection.is-selection-start:after", + ".spectrum-Calendar-date.is-range-selection.is-today", + ".spectrum-Calendar-date.is-range-selection:hover:before,\n\t.spectrum-Calendar-date.is-selected:hover:not(.is-selection-end, .is-selection-start):before", + ".spectrum-Calendar-date.is-selected", + ".spectrum-Calendar-date.is-selected:not(.is-range-selection)", + ".spectrum-Calendar-date.is-selected:not(.is-range-selection):before", + ".spectrum-Calendar-date.is-selection-end,\n.spectrum-Calendar-date.is-selection-start", + ".spectrum-Calendar-date.is-selection-end.is-disabled,\n.spectrum-Calendar-date.is-selection-start.is-disabled", + ".spectrum-Calendar-date.is-selection-end:after,\n.spectrum-Calendar-date.is-selection-start:after", + ".spectrum-Calendar-date.is-today", + ".spectrum-Calendar-date.is-today,\n.spectrum-Calendar-date.is-today:before", + ".spectrum-Calendar-date.is-today.is-disabled", + ".spectrum-Calendar-date.is-today.is-disabled,\n.spectrum-Calendar-date.is-today.is-disabled:before", + ".spectrum-Calendar-date.is-today.is-selected:not(.is-range-selection):hover:before", + ".spectrum-Calendar-date:active", + ".spectrum-Calendar-date:before", + ".spectrum-Calendar-date:hover", + ".spectrum-Calendar-date:hover:not(.is-selection-end, .is-selection-start):before", + ".spectrum-Calendar-date:lang(ja),\n.spectrum-Calendar-date:lang(ko),\n.spectrum-Calendar-date:lang(zh)", + ".spectrum-Calendar-dayOfWeek", + ".spectrum-Calendar-dayOfWeek[title]", + ".spectrum-Calendar-header", + ".spectrum-Calendar-nextMonth", + ".spectrum-Calendar-nextMonth,\n\t.spectrum-Calendar-prevMonth", + ".spectrum-Calendar-nextMonth,\n.spectrum-Calendar-prevMonth", + ".spectrum-Calendar-nextMonth:not([disabled]),\n.spectrum-Calendar-prevMonth:not([disabled])", + ".spectrum-Calendar-prevMonth", + ".spectrum-Calendar-table", + ".spectrum-Calendar-tableCell", + ".spectrum-Calendar-tableCell:focus", + ".spectrum-Calendar-title", + ".spectrum-Calendar:dir(rtl),\n[dir=\"rtl\"] .spectrum-Calendar" + ], + "mods": [ + "--mod-calendar-border-radius-reset", + "--mod-calendar-border-width-reset", + "--mod-calendar-button-icon-color", + "--mod-calendar-day-background-color-cap-selected", + "--mod-calendar-day-background-color-down", + "--mod-calendar-day-background-color-hover", + "--mod-calendar-day-background-color-key-focus", + "--mod-calendar-day-background-color-selected", + "--mod-calendar-day-background-color-selected-hover", + "--mod-calendar-day-border-color-key-focus", + "--mod-calendar-day-border-size", + "--mod-calendar-day-height", + "--mod-calendar-day-padding", + "--mod-calendar-day-text-color-cap-selected", + "--mod-calendar-day-text-color-disabled", + "--mod-calendar-day-text-color-hover", + "--mod-calendar-day-text-color-key-focus", + "--mod-calendar-day-text-color-selected", + "--mod-calendar-day-text-font-weight-cap-selected", + "--mod-calendar-day-text-font-weight-selected", + "--mod-calendar-day-text-size", + "--mod-calendar-day-text-size-han", + "--mod-calendar-day-title-text-color", + "--mod-calendar-day-title-text-font-weight", + "--mod-calendar-day-title-text-size", + "--mod-calendar-day-today-background-color-selected-hover", + "--mod-calendar-day-today-border-color", + "--mod-calendar-day-today-border-color-disabled", + "--mod-calendar-day-today-text-color", + "--mod-calendar-day-today-text-color-disabled", + "--mod-calendar-day-today-text-font-weight", + "--mod-calendar-day-width", + "--mod-calendar-margin-x", + "--mod-calendar-margin-y", + "--mod-calendar-title-height", + "--mod-calendar-title-text-letter-spacing", + "--mod-calendar-title-text-size", + "--mod-calendar-width" + ], + "spectrum": [ + "--spectrum-bold-font-weight", + "--spectrum-border-width-200", + "--spectrum-calendar-border-radius-reset", + "--spectrum-calendar-border-width-reset", + "--spectrum-calendar-button-icon-color", + "--spectrum-calendar-day-background-color-cap-selected", + "--spectrum-calendar-day-background-color-down", + "--spectrum-calendar-day-background-color-hover", + "--spectrum-calendar-day-background-color-key-focus", + "--spectrum-calendar-day-background-color-selected", + "--spectrum-calendar-day-background-color-selected-hover", + "--spectrum-calendar-day-border-color-key-focus", + "--spectrum-calendar-day-border-size", + "--spectrum-calendar-day-height", + "--spectrum-calendar-day-padding", + "--spectrum-calendar-day-text-color-cap-selected", + "--spectrum-calendar-day-text-color-disabled", + "--spectrum-calendar-day-text-color-hover", + "--spectrum-calendar-day-text-color-key-focus", + "--spectrum-calendar-day-text-color-selected", + "--spectrum-calendar-day-text-font-weight-cap-selected", + "--spectrum-calendar-day-text-font-weight-selected", + "--spectrum-calendar-day-text-size", + "--spectrum-calendar-day-text-size-han", + "--spectrum-calendar-day-title-text-color", + "--spectrum-calendar-day-title-text-font-weight", + "--spectrum-calendar-day-title-text-size", + "--spectrum-calendar-day-today-background-color-selected-hover", + "--spectrum-calendar-day-today-border-color", + "--spectrum-calendar-day-today-border-color-disabled", + "--spectrum-calendar-day-today-text-color", + "--spectrum-calendar-day-today-text-color-disabled", + "--spectrum-calendar-day-today-text-font-weight", + "--spectrum-calendar-day-width", + "--spectrum-calendar-margin-x", + "--spectrum-calendar-margin-y", + "--spectrum-calendar-title-height", + "--spectrum-calendar-title-text-letter-spacing", + "--spectrum-calendar-title-text-size", + "--spectrum-calendar-width", + "--spectrum-component-height-100", + "--spectrum-disabled-content-color", + "--spectrum-font-size-100", + "--spectrum-font-size-300", + "--spectrum-font-size-50", + "--spectrum-gray-400", + "--spectrum-gray-500", + "--spectrum-gray-700", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-logical-rotation" + ], + "system": [], + "a11y": [ + "--highcontrast-calendar-button-icon-color", + "--highcontrast-calendar-day-background-color-cap-selected", + "--highcontrast-calendar-day-background-color-down", + "--highcontrast-calendar-day-background-color-hover", + "--highcontrast-calendar-day-background-color-key-focus", + "--highcontrast-calendar-day-background-color-selected", + "--highcontrast-calendar-day-background-color-selected-hover", + "--highcontrast-calendar-day-border-color-key-focus", + "--highcontrast-calendar-day-text-color-cap-selected", + "--highcontrast-calendar-day-text-color-disabled", + "--highcontrast-calendar-day-text-color-hover", + "--highcontrast-calendar-day-text-color-key-focus", + "--highcontrast-calendar-day-text-color-selected", + "--highcontrast-calendar-day-title-text-color", + "--highcontrast-calendar-day-today-background-color-selected-hover", + "--highcontrast-calendar-day-today-border-color", + "--highcontrast-calendar-day-today-border-color-disabled", + "--highcontrast-calendar-day-today-text-color", + "--highcontrast-calendar-day-today-text-color-disabled" + ] +} diff --git a/components/calendar/package.json b/components/calendar/package.json new file mode 100644 index 0000000000..9d5734221c --- /dev/null +++ b/components/calendar/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/calendar", + "version": "5.1.2", + "description": "The Spectrum CSS calendar component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/calendar", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/calendar" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/calendar/template.js b/components/calendar/template.js new file mode 100644 index 0000000000..47604e0eda --- /dev/null +++ b/components/calendar/template.js @@ -0,0 +1,434 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { action } from "@storybook/addon-actions"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +const months = [...Array(12).keys()].map((key) => + new Date(0, key).toLocaleString("en", { month: "long" }) +); + +export const Template = ({ + rootClass = "spectrum-Calendar", + month, + selectedDay, + lastDay, + year, + padded, + isDisabled = false, + isFocused = false, + useDOWAbbrev = false, + buttonSize = "s", + customClasses = [], + customStyles = { + "--mod-actionbutton-icon-size": "10px", + }, + onDateClick, + previousHandler, + nextHandler, + id, +} = {}, context = {}) => { + const { globals = {}, updateArgs } = context; + + const lang = globals.lang ?? "en-US"; + + const DOW = [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + ]; + + const printTitleFormat = { + weekday: "long", + month: "long", + day: "numeric", + year: "numeric", + }; + + const getMonthName = (dateOrIndex, format = "long") => { + let date; + if (typeof dateOrIndex === "number") { + date = new Date().setMonth(dateOrIndex - 1); + } + else if (dateOrIndex instanceof Date) { + date = dateOrIndex; + } + else { + console.warn( + "Calendar: getMonthName() requires a date object or a number." + ); + return; + } + + return date.toLocaleString(lang ?? "default", { month: format }); + }; + + let today = new Date(); + if (window.isChromatic()) { + today = new Date(`${month ?? "January"} 1, ${year ?? "2021"}`); + } + + if (today) { + month = month ?? getMonthName(today); + year = year ?? today.getFullYear(); + } + + const displayedDate = new Date(`${month} 1, ${year}`); + const displayedMonth = displayedDate.getMonth(); + const displayedYear = displayedDate.getFullYear(); + + /** + * @typedef {{ date: Date, dateClassList: import('lit').ClassInfo, isSelected: boolean, isToday: boolean, isOutsideMonth: boolean }} DateMetadata + **/ + + /** + * + * @param {object} config + * @param {Date} config.selectedDate + * @param {Date} config.lastSelectedDate + * @returns {DateMetadata[]} + */ + const generateMonthArray = ({ selectedDate, lastSelectedDate }) => { + /* Fetch a clean (time-free) version of today's date */ + today.setHours(0, 0, 0, 0); + const todayDatetime = today.getTime(); + + let selectedDatetime; + let lastSelectedDatetime; + + if (selectedDate && typeof selectedDate.setHours === "function") { + selectedDate.setHours(0, 0, 0, 0); + selectedDatetime = selectedDate ? selectedDate.getTime() : selectedDate; + } + + if (lastSelectedDate && typeof lastSelectedDate.setHours === "function") { + lastSelectedDate.setHours(0, 0, 0, 0); + lastSelectedDatetime = lastSelectedDate + ? lastSelectedDate.getTime() + : lastSelectedDate; + } + + if ( + lastSelectedDatetime && + selectedDatetime && + lastSelectedDatetime < selectedDatetime + ) { + lastSelectedDatetime = undefined; + console.warn( + "Calendar: last selected date must occur after the selected date." + ); + } + + const lastDateInMonth = new Date( + displayedYear, + displayedMonth + 1, + 0 + ).getDate(); + + const firstDOWInMonth = new Date(displayedYear, displayedMonth, 1).getDay(); // 0 = Sunday + + let weeksInMonth = Math.ceil(lastDateInMonth / DOW.length); + const orphanedDays = lastDateInMonth % DOW.length; + + if (firstDOWInMonth > DOW.length - orphanedDays) { + weeksInMonth++; + } + if (displayedMonth === 1 && firstDOWInMonth > 0) { // accounts for Feburary + weeksInMonth++; + } + + /* This is generating a nested array with the */ + return new Array(Math.ceil(weeksInMonth)) + .fill(0) + .map((_val, idx) => + new Array(DOW.length).fill(0).map((_v, i) => { + const thisDay = idx * DOW.length + i + 1 - firstDOWInMonth; + const isOutsideMonth = + thisDay < 1 || + thisDay > lastDateInMonth; + /* Determine if this entry exists within this month or the next or prev month */ + let thisMonth = !isOutsideMonth + ? displayedMonth + : displayedMonth + (thisDay < 1 ? -1 : 1); + /* Determine if the displayed date is in this year or the previous one */ + let thisYear = displayedYear; + + if (isOutsideMonth) { + if (thisMonth < 0) { + thisMonth = 11; + thisYear -= 1; + } + else if (thisMonth > 11) { + thisMonth = 0; + thisYear += 1; + } + } + const thisDate = new Date( + thisYear, + displayedMonth, + thisDay, + 0, + 0, + 0, + 0 + ); + const thisDatetime = thisDate.getTime(); + + /* Compare the rendered date against the clean date stamp for today */ + const isToday = !!(thisDatetime === todayDatetime); + const isInRange = !!( + thisDatetime && + selectedDatetime && + lastSelectedDatetime && + thisDatetime >= selectedDatetime && + thisDatetime <= lastSelectedDatetime + ); + const isSelected = !!( + (selectedDate && selectedDatetime === thisDatetime) || + isInRange + ); + const isFocused = thisDay === 5; + + + return { + date: thisDate, + isSelected, + isToday, + isOutsideMonth, + isInRange, + isRangeStart: !!(isInRange && thisDatetime === selectedDatetime), + isRangeEnd: !!(isInRange && thisDatetime === lastSelectedDatetime), + isFocused, + }; + }) + ); + }; + if (!onDateClick || typeof onDateClick !== "function") { + /** + * @param {DateMetadata} thisDay + * @param {Event} evt + * @returns {void} + */ + onDateClick = (thisDay, evt) => { + if (!thisDay || thisDay.isDisabled || !thisDay.date) return; + + updateArgs({ selectedDay: thisDay.date }); + action(`click .${rootClass}-date`)(evt); + }; + } + + if (!previousHandler || typeof previousHandler !== "function") { + previousHandler = ({ displayedMonth, displayedYear }) => { + if ( + typeof displayedMonth === "undefined" || + typeof displayedYear === "undefined" + ) { + console.warn("Calendar: No month or year could be determined."); + return; + } + return updateArgs({ + month: getMonthName(displayedMonth < 1 ? 12 : displayedMonth), + year: displayedMonth === 0 ? displayedYear - 1 : displayedYear, + }); + }; + } + + if (!nextHandler || typeof nextHandler !== "function") { + nextHandler = ({ displayedMonth, displayedYear }) => { + if ( + typeof displayedMonth === "undefined" || + typeof displayedYear === "undefined" + ) { + console.warn("Calendar: No month or year could be determined."); + return; + } + return updateArgs({ + month: getMonthName(displayedMonth > 10 ? 1 : displayedMonth + 2), + year: displayedMonth === 11 ? displayedYear + 1 : displayedYear, + }); + }; + } + + return html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + id=${ifDefined(id)} + > +
    +
    + ${displayedDate.toLocaleString(lang ?? "default", { + month: "long", + year: "numeric", + })} +
    + ${ActionButton({ + label: "Previous", + hideLabel: true, + isQuiet: true, + isDisabled, + size: buttonSize, + iconName: "ChevronLeft100", + customClasses: [`${rootClass}-prevMonth`], + onclick: previousHandler.bind(null, { + displayedMonth, + displayedYear, + }), + }, context)} + ${ActionButton({ + label: "Next", + hideLabel: true, + isQuiet: true, + isDisabled, + size: buttonSize, + iconName: "ChevronRight100", + customClasses: [`${rootClass}-nextMonth`], + onclick: nextHandler.bind(null, { + displayedMonth, + displayedYear, + }), + }, context)} +
    +
    + + + + ${repeat( + DOW, + (day) => html` ` + )} + + + + ${repeat( + generateMonthArray({ + selectedDate: selectedDay, + lastSelectedDate: lastDay, + }), + (thisWeek) => html` + ${repeat( + thisWeek, + (thisDay) => html` ` + )} + ` + )} + + +
    +
    + `; +}; + +export const CalendarGroup = Variants({ + Template, + testData: [ + { + testHeading: "Default", + }, + { + testHeading: "Padded", + padded: true, + }, + { + testHeading: "Abbreviated days of the week", + useDOWAbbrev: true, + }, + { + testHeading: "Range selection", + month: months[6], + selectedDay: new Date(2023, 6, 3), + year: 2023, + lastDay: new Date(2023, 6, 7), + useDOWAbbrev: true, + padded: true, + }, + { + testHeading: "Today highlighted", + month: undefined, + selectedDay: undefined, + year: undefined, + }, + ], + stateData: [ + { + testHeading: "Disabled", + isDisabled: true, + }, + { + testHeading: "Focused", + isFocused: true, + }, + ] +}); diff --git a/components/card/index-base.css b/components/card/index-base.css new file mode 100644 index 0000000000..e01269f2ea --- /dev/null +++ b/components/card/index-base.css @@ -0,0 +1,405 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Card { + --spectrum-card-background-color: var(--spectrum-background-layer-2-color); + --spectrum-card-body-spacing: var(--spectrum-spacing-400); + --spectrum-card-title-padding-top: var(--spectrum-spacing-300); + --spectrum-card-title-padding-right: var(--spectrum-spacing-400); + --spectrum-card-content-margin-top: var(--spectrum-spacing-100); + --spectrum-card-content-margin-bottom: var(--spectrum-spacing-300); + --spectrum-card-footer-padding-top: var(--spectrum-spacing-100); + --spectrum-card-subtitle-padding-right: var(--spectrum-spacing-100); + --spectrum-card-border-width: var(--spectrum-border-width-100); + --spectrum-card-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-card-border-color: var(--spectrum-gray-200); + --spectrum-card-border-color-hover: var(--spectrum-gray-300); + --spectrum-card-border-color-selected: var(--spectrum-blue-700); + --spectrum-card-divider-color: var(--spectrum-gray-300); + --spectrum-card-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-card-title-font-size: var(--spectrum-heading-size-xxs); + --spectrum-card-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-card-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-card-title-line-height: var(--spectrum-heading-line-height); + --spectrum-card-title-font-color: var(--spectrum-heading-color); + --spectrum-card-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-card-body-font-size: var(--spectrum-body-size-s); + --spectrum-card-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-card-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-card-body-line-height: var(--spectrum-body-line-height); + --spectrum-card-body-font-color: var(--spectrum-body-color); + --spectrum-card-actions-spacing: var(--spectrum-spacing-300); + --spectrum-card-actions-size: var(--spectrum-card-selection-background-size); + --spectrum-card-actions-border-radius: var(--spectrum-corner-radius-100); + --spectrum-card-actions-background-color-rgb: var(--spectrum-gray-100-rgb); + --spectrum-card-actions-background-color-opacity: var(--spectrum-card-selection-background-color-opacity); + --spectrum-card-actions-drop-shadow-color: var(--spectrum-drop-shadow-color); + --spectrum-card-actions-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-card-actions-drop-shadow-y: var(--spectrum-drop-shadow-y); + --spectrum-card-actions-drop-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-card-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-card-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-card-selected-background-opacity: 0.1; + --spectrum-card-preview-border-width-selected: var(--spectrum-border-width-100); + --spectrum-card-preview-background-color: var(--spectrum-background-base-color); + --spectrum-card-preview-background-color-hover: var(--spectrum-gray-300); + --spectrum-card-horizontal-body-padding: var(--spectrum-spacing-300); + --spectrum-card-horizontal-preview-padding: var(--spectrum-spacing-200); +} +.spectrum--light .spectrum-Card, +.spectrum--lightest .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-900-rgb); +} +.spectrum--dark .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-500-rgb); +} +.spectrum--darkest .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-600-rgb); +} +.spectrum-Card--gallery, +.spectrum-Card--quiet { + --mod-card-content-margin-top: var(--mod-card-content-margin-top-quiet, var(--spectrum-spacing-100)); + --mod-card-minimum-width: var(--mod-card-minimum-width-quiet, var(--spectrum-card-minimum-width)); +} +.spectrum-Card { + position: relative; + display: inline-flex; + flex-direction: column; + box-sizing: border-box; + -webkit-text-decoration: none; + text-decoration: none; + min-inline-size: var(--mod-card-minimum-width, var(--spectrum-card-minimum-width)); + border: var(--mod-card-border-width, var(--spectrum-card-border-width)) solid transparent; + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-color: var(--highcontrast-card-border-color, var(--mod-card-border-color, var(--spectrum-card-border-color))); + background-color: var(--highcontrast-card-background-color, var(--mod-card-background-color, var(--mod-spectrum-card-background-color, var(--spectrum-card-background-color)))); +} +.spectrum-Card:after, +.spectrum-Card:before { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Card:after { + inset-inline-end: 0; + border: 0 solid transparent; + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + margin-block-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); + margin-inline-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); +} +.spectrum-Card:focus-visible { + outline: none; +} +.spectrum-Card:focus-visible:after { + border-width: var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)); + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card:focus-visible .spectrum-Card-coverPhoto, +.spectrum-Card:focus-visible .spectrum-Card-preview { + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); + border-start-end-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); +} +.spectrum-Card.is-selected { + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); +} +.spectrum-Card.is-selected:before { + background-color: rgba(var(--mod-card-selected-background-color-rgb, var(--spectrum-card-selected-background-color-rgb)), var(--mod-card-selected-background-opacity, var(--spectrum-card-selected-background-opacity))); +} +.spectrum-Card.is-drop-target { + --mod-card-background-color: var(--spectrum-card-background-color-quiet, var(--spectrum-background-base-color)); + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); + box-shadow: 0 0 0 1px var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); + background-color: var(--mod-card-background-color, var(--spectrum-card-background-color)); +} +.spectrum-Card.is-focused .spectrum-Card-actions, +.spectrum-Card.is-focused .spectrum-Card-quickActions, +.spectrum-Card.is-selected .spectrum-Card-actions, +.spectrum-Card.is-selected .spectrum-Card-quickActions, +.spectrum-Card:focus .spectrum-Card-actions, +.spectrum-Card:focus .spectrum-Card-quickActions { + visibility: visible; + opacity: 1; + pointer-events: all; +} +.spectrum-Card-quickActions { + position: absolute; + visibility: hidden; + box-shadow: var(--mod-card-actions-drop-shadow-x, var(--spectrum-card-actions-drop-shadow-x)) var(--mod-card-actions-drop-shadow-y, var(--spectrum-card-actions-drop-shadow-y)) var(--mod-card-actions-drop-shadow-blur, var(--spectrum-card-actions-drop-shadow-blur)) var(--mod-card-actions-drop-shadow-color, var(--spectrum-card-actions-drop-shadow-color)); + inline-size: var(--mod-card-actions-size, var(--spectrum-card-actions-size)); + block-size: var(--mod-card-actions-size, var(--spectrum-card-actions-size)); + border-radius: var(--mod-card-actions-border-radius, var(--spectrum-card-actions-border-radius)); + background-color: rgba(var(--mod-card-actions-background-color-rgb, var(--spectrum-card-actions-background-color-rgb)), var(--mod-card-actions-background-color-opacity, var(--spectrum-card-actions-background-color-opacity))); + inset-inline-start: calc(var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + inset-block-start: calc(var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); +} +.spectrum-Card-actions { + inset-block-start: var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)); + inset-inline-end: var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)); +} +.spectrum-Card-coverPhoto { + position: relative; + block-size: var(--mod-card-preview-minimum-height, var(--spectrum-card-preview-minimum-height)); + box-sizing: border-box; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-start-end-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-end-end-radius: 0; + border-end-start-radius: 0; + background-size: cover; + background-position: 50%; + background-color: var(--mod-card-background-color, var(--spectrum-card-background-color)); + border-block-end-color: var(--mod-card-border-color, var(--spectrum-card-border-color)); +} +.spectrum-Card .spectrum-Divider { + margin: 0; +} +.spectrum-Card-content { + display: flex; + align-items: center; + margin-block-start: var(--mod-card-content-margin-top, var(--spectrum-card-content-margin-top)); +} +.spectrum-Card-body { + padding-block-start: var(--mod-card-body-padding-block-start, var(--mod-card-title-padding-top, var(--spectrum-card-title-padding-top))); + padding-inline-end: var(--mod-card-body-padding-inline-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-inline-start: var(--mod-card-body-padding-inline-start, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-block-end: var(--mod-card-body-padding-block-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); +} +.spectrum-Card-preview { + overflow: hidden; + border-start-start-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-start-end-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-end-end-radius: 0; + border-end-start-radius: 0; + display: flex; + align-items: center; + color: var(--highcontrast-card-body-font-color, var(--mod-card-body-font-color, var(--spectrum-card-body-font-color))); +} +.spectrum-Card-title { + padding-inline-end: var(--mod-card-title-padding-right, var(--spectrum-card-title-padding-right)); + font-family: var(--mod-card-title-font-family, var(--spectrum-card-title-font-family)); + font-size: var(--mod-card-title-font-size, var(--spectrum-card-title-font-size)); + font-weight: var(--mod-card-title-font-weight, var(--spectrum-card-title-font-weight)); + font-style: var(--mod-card-title-font-style, var(--spectrum-card-title-font-style)); + line-height: var(--mod-card-title-line-height, var(--spectrum-card-title-line-height)); +} +.spectrum-Card-subtitle, +.spectrum-Card-title { + color: var(--highcontrast-card-title-font-color, var(--mod-card-title-font-color, var(--spectrum-card-title-font-color))); +} +.spectrum-Card-subtitle { + text-transform: none; +} +.spectrum-Card-subtitle, +.spectrum-Card-subtitle + .spectrum-Card-description:before { + padding-inline-end: var(--mod-card-subtitle-padding-right, var(--spectrum-card-subtitle-padding-right)); +} +.spectrum-Card-subtitle + .spectrum-Card-description:before { + content: "•"; +} +.spectrum-Card-description { + font-family: var(--mod-card-body-font-family, var(--spectrum-card-body-font-family)); + font-size: var(--mod-card-body-font-size, var(--spectrum-card-body-font-size)); + font-weight: var(--mod-card-body-font-weight, var(--spectrum-card-body-font-weight)); + font-style: var(--mod-card-body-font-style, var(--spectrum-card-body-font-style)); +} +.spectrum-Card-description, +.spectrum-Card-footer { + line-height: var(--mod-card-body-line-height, var(--spectrum-card-body-line-height)); + color: var(--highcontrast-card-body-font-color, var(--mod-card-body-font-color, var(--spectrum-card-body-font-color))); +} +.spectrum-Card-footer { + margin-block-start: var(--mod-card-footer-margin-block-start, calc((var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-content-margin-bottom, var(--spectrum-card-content-margin-bottom))) * -1)); + margin-inline-start: var(--mod-card-footer-margin-inline-start, var(--mod-card-body-spacing, var(--spectrum-card-body-spacing))); + margin-inline-end: var(--mod-card-footer-margin-inline-end, var(--mod-card-body-spacing, var(--spectrum-card-body-spacing))); + padding-block-end: var(--mod-card-footer-padding-block-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-block-start: var(--mod-card-footer-padding-block-start, var(--mod-card-footer-margin-top, var(--spectrum-card-footer-padding-top))); + border-block-start: var(--mod-card-border-width, var(--spectrum-card-border-width)) solid var(--mod-card-divider-color, var(--spectrum-card-divider-color)); +} +.spectrum-Card-header { + display: flex; + align-items: center; +} +.spectrum-Card-actionButton { + flex: 1; + align-self: center; + display: flex; + justify-content: flex-end; + z-index: 1; +} +.spectrum-Card--quiet .spectrum-Card-preview { + border: var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) solid transparent; +} +.spectrum-Card--quiet.is-focused:after, +.spectrum-Card--quiet:focus:after { + border-width: 0; +} +.spectrum-Card--quiet.is-focused .spectrum-Card-preview:after, +.spectrum-Card--quiet:focus .spectrum-Card-preview:after { + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card--quiet.is-selected .spectrum-Card-preview { + border: var(--mod-card-preview-border-width-selected, var(--mod-card-preview-border-width, var(--spectrum-card-preview-border-width-selected))) solid; + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); +} +.spectrum-Card--gallery, +.spectrum-Card--quiet { + block-size: 100%; + min-inline-size: var(--mod-card-minimum-width, var(--spectrum-card-minimum-width)); + border-width: 0; + border-radius: 0; + overflow: visible; + border-color: transparent; + background-color: initial; +} +.spectrum-Card--gallery:before, +.spectrum-Card--quiet:before { + display: none; +} +.spectrum-Card--gallery .spectrum-Card-preview, +.spectrum-Card--quiet .spectrum-Card-preview { + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + background-color: var(--mod-card-preview-background-color, var(--mod-card-background-color, var(--spectrum-card-preview-background-color))); + min-block-size: var(--mod-card-preview-minimum-height, var(--spectrum-card-preview-minimum-height)); + inline-size: 100%; + flex: 1; + margin: 0 auto; + box-sizing: border-box; + position: relative; + transition: background-color var(--mod-card-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))); + overflow: visible; +} +.spectrum-Card--gallery .spectrum-Card-preview:before, +.spectrum-Card--quiet .spectrum-Card-preview:before { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Card--gallery .spectrum-Card-preview:after, +.spectrum-Card--quiet .spectrum-Card-preview:after { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-start: 0; + border: 0 solid transparent; + border-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) + var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); + margin-block-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); + margin-inline-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); +} +.spectrum-Card--gallery.is-drop-target, +.spectrum-Card--quiet.is-drop-target { + border-color: transparent; + background-color: initial; + box-shadow: none; +} +.spectrum-Card--gallery.is-drop-target .spectrum-Card-preview, +.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview { + transition: none; + background-color: var(--mod-card-preview-background-color, var(--mod-card-background-color, var(--spectrum-card-preview-background-color))); +} +.spectrum-Card--gallery.is-drop-target .spectrum-Card-preview:before, +.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview:before { + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); + box-shadow: 0 0 0 1px var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card--gallery.is-selected .spectrum-Card-preview:before, +.spectrum-Card--quiet.is-selected .spectrum-Card-preview:before { + background-color: rgba(var(--mod-card-selected-background-color-rgb, var(--spectrum-card-selected-background-color-rgb)), var(--mod-card-selected-background-opacity, var(--spectrum-card-selected-background-opacity))); +} +.spectrum-Card--gallery .spectrum-Card-body, +.spectrum-Card--quiet .spectrum-Card-body { + margin-block-start: var(--mod-card-content-margin-top, var(--spectrum-card-content-margin-top)); + padding: 0; +} +.spectrum-Card--gallery .spectrum-Card-footer, +.spectrum-Card--quiet .spectrum-Card-footer { + margin-inline-end: 0; + margin-inline-start: 0; +} +.spectrum-Card--horizontal { + flex-direction: row; +} +@media (hover: hover) { + .spectrum-Card:hover { + border-color: var(--highcontrast-card-border-color-hover, var(--mod-card-border-color-hover, var(--spectrum-card-border-color-hover))); + } + .spectrum-Card:hover .spectrum-Card-actions, + .spectrum-Card:hover .spectrum-Card-quickActions { + visibility: visible; + opacity: 1; + pointer-events: all; + } + .spectrum-Card--gallery:hover, + .spectrum-Card--quiet:hover { + border-color: transparent; + } + .spectrum-Card--gallery:hover .spectrum-Card-preview, + .spectrum-Card--quiet:hover .spectrum-Card-preview { + background-color: var(--mod-card-preview-background-color-hover, var(--mod-card-background-color-hover, var(--spectrum-card-preview-background-color-hover))); + } + .spectrum-Card--horizontal:hover .spectrum-Card-preview { + border-color: var(--mod-card-border-color-hover, var(--spectrum-card-border-color-hover)); + } +} +.spectrum-Card--horizontal .spectrum-Card-preview { + flex-shrink: 0; + min-block-size: 0; + display: flex; + align-items: center; + justify-content: center; + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-start-end-radius: 0; + border-end-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-end-end-radius: 0; + padding: var(--mod-card-horizontal-preview-padding, var(--spectrum-card-horizontal-preview-padding)); + background-color: var(--mod-card-preview-background-color, var(--spectrum-card-preview-background-color)); + border-color: var(--mod-card-border-color, var(--spectrum-card-border-color)); +} +.spectrum-Card--horizontal .spectrum-Card-content, +.spectrum-Card--horizontal .spectrum-Card-header { + margin-block-start: 0; + block-size: auto; +} +.spectrum-Card--horizontal .spectrum-Card-content { + margin-block-end: 0; +} +.spectrum-Card--horizontal .spectrum-Card-title { + padding-inline-end: 0; +} +.spectrum-Card--horizontal .spectrum-Card-body { + flex-shrink: 0; + display: flex; + justify-content: center; + flex-direction: column; + padding-block: 0; + padding-inline: var(--mod-card-horizontal-body-padding, var(--spectrum-card-horizontal-body-padding)); +} +.spectrum-Card--gallery { + min-inline-size: 0; +} +.spectrum-Card--gallery .spectrum-Card-preview { + padding: 0; + border-radius: 0; +} +/*# sourceMappingURL=components/card/index.css.map */ diff --git a/components/card/index-vars.css b/components/card/index-vars.css new file mode 100644 index 0000000000..e01269f2ea --- /dev/null +++ b/components/card/index-vars.css @@ -0,0 +1,405 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Card { + --spectrum-card-background-color: var(--spectrum-background-layer-2-color); + --spectrum-card-body-spacing: var(--spectrum-spacing-400); + --spectrum-card-title-padding-top: var(--spectrum-spacing-300); + --spectrum-card-title-padding-right: var(--spectrum-spacing-400); + --spectrum-card-content-margin-top: var(--spectrum-spacing-100); + --spectrum-card-content-margin-bottom: var(--spectrum-spacing-300); + --spectrum-card-footer-padding-top: var(--spectrum-spacing-100); + --spectrum-card-subtitle-padding-right: var(--spectrum-spacing-100); + --spectrum-card-border-width: var(--spectrum-border-width-100); + --spectrum-card-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-card-border-color: var(--spectrum-gray-200); + --spectrum-card-border-color-hover: var(--spectrum-gray-300); + --spectrum-card-border-color-selected: var(--spectrum-blue-700); + --spectrum-card-divider-color: var(--spectrum-gray-300); + --spectrum-card-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-card-title-font-size: var(--spectrum-heading-size-xxs); + --spectrum-card-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-card-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-card-title-line-height: var(--spectrum-heading-line-height); + --spectrum-card-title-font-color: var(--spectrum-heading-color); + --spectrum-card-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-card-body-font-size: var(--spectrum-body-size-s); + --spectrum-card-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-card-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-card-body-line-height: var(--spectrum-body-line-height); + --spectrum-card-body-font-color: var(--spectrum-body-color); + --spectrum-card-actions-spacing: var(--spectrum-spacing-300); + --spectrum-card-actions-size: var(--spectrum-card-selection-background-size); + --spectrum-card-actions-border-radius: var(--spectrum-corner-radius-100); + --spectrum-card-actions-background-color-rgb: var(--spectrum-gray-100-rgb); + --spectrum-card-actions-background-color-opacity: var(--spectrum-card-selection-background-color-opacity); + --spectrum-card-actions-drop-shadow-color: var(--spectrum-drop-shadow-color); + --spectrum-card-actions-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-card-actions-drop-shadow-y: var(--spectrum-drop-shadow-y); + --spectrum-card-actions-drop-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-card-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-card-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-card-selected-background-opacity: 0.1; + --spectrum-card-preview-border-width-selected: var(--spectrum-border-width-100); + --spectrum-card-preview-background-color: var(--spectrum-background-base-color); + --spectrum-card-preview-background-color-hover: var(--spectrum-gray-300); + --spectrum-card-horizontal-body-padding: var(--spectrum-spacing-300); + --spectrum-card-horizontal-preview-padding: var(--spectrum-spacing-200); +} +.spectrum--light .spectrum-Card, +.spectrum--lightest .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-900-rgb); +} +.spectrum--dark .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-500-rgb); +} +.spectrum--darkest .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-600-rgb); +} +.spectrum-Card--gallery, +.spectrum-Card--quiet { + --mod-card-content-margin-top: var(--mod-card-content-margin-top-quiet, var(--spectrum-spacing-100)); + --mod-card-minimum-width: var(--mod-card-minimum-width-quiet, var(--spectrum-card-minimum-width)); +} +.spectrum-Card { + position: relative; + display: inline-flex; + flex-direction: column; + box-sizing: border-box; + -webkit-text-decoration: none; + text-decoration: none; + min-inline-size: var(--mod-card-minimum-width, var(--spectrum-card-minimum-width)); + border: var(--mod-card-border-width, var(--spectrum-card-border-width)) solid transparent; + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-color: var(--highcontrast-card-border-color, var(--mod-card-border-color, var(--spectrum-card-border-color))); + background-color: var(--highcontrast-card-background-color, var(--mod-card-background-color, var(--mod-spectrum-card-background-color, var(--spectrum-card-background-color)))); +} +.spectrum-Card:after, +.spectrum-Card:before { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Card:after { + inset-inline-end: 0; + border: 0 solid transparent; + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + margin-block-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); + margin-inline-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); +} +.spectrum-Card:focus-visible { + outline: none; +} +.spectrum-Card:focus-visible:after { + border-width: var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)); + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card:focus-visible .spectrum-Card-coverPhoto, +.spectrum-Card:focus-visible .spectrum-Card-preview { + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); + border-start-end-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); +} +.spectrum-Card.is-selected { + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); +} +.spectrum-Card.is-selected:before { + background-color: rgba(var(--mod-card-selected-background-color-rgb, var(--spectrum-card-selected-background-color-rgb)), var(--mod-card-selected-background-opacity, var(--spectrum-card-selected-background-opacity))); +} +.spectrum-Card.is-drop-target { + --mod-card-background-color: var(--spectrum-card-background-color-quiet, var(--spectrum-background-base-color)); + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); + box-shadow: 0 0 0 1px var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); + background-color: var(--mod-card-background-color, var(--spectrum-card-background-color)); +} +.spectrum-Card.is-focused .spectrum-Card-actions, +.spectrum-Card.is-focused .spectrum-Card-quickActions, +.spectrum-Card.is-selected .spectrum-Card-actions, +.spectrum-Card.is-selected .spectrum-Card-quickActions, +.spectrum-Card:focus .spectrum-Card-actions, +.spectrum-Card:focus .spectrum-Card-quickActions { + visibility: visible; + opacity: 1; + pointer-events: all; +} +.spectrum-Card-quickActions { + position: absolute; + visibility: hidden; + box-shadow: var(--mod-card-actions-drop-shadow-x, var(--spectrum-card-actions-drop-shadow-x)) var(--mod-card-actions-drop-shadow-y, var(--spectrum-card-actions-drop-shadow-y)) var(--mod-card-actions-drop-shadow-blur, var(--spectrum-card-actions-drop-shadow-blur)) var(--mod-card-actions-drop-shadow-color, var(--spectrum-card-actions-drop-shadow-color)); + inline-size: var(--mod-card-actions-size, var(--spectrum-card-actions-size)); + block-size: var(--mod-card-actions-size, var(--spectrum-card-actions-size)); + border-radius: var(--mod-card-actions-border-radius, var(--spectrum-card-actions-border-radius)); + background-color: rgba(var(--mod-card-actions-background-color-rgb, var(--spectrum-card-actions-background-color-rgb)), var(--mod-card-actions-background-color-opacity, var(--spectrum-card-actions-background-color-opacity))); + inset-inline-start: calc(var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + inset-block-start: calc(var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); +} +.spectrum-Card-actions { + inset-block-start: var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)); + inset-inline-end: var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)); +} +.spectrum-Card-coverPhoto { + position: relative; + block-size: var(--mod-card-preview-minimum-height, var(--spectrum-card-preview-minimum-height)); + box-sizing: border-box; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-start-end-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-end-end-radius: 0; + border-end-start-radius: 0; + background-size: cover; + background-position: 50%; + background-color: var(--mod-card-background-color, var(--spectrum-card-background-color)); + border-block-end-color: var(--mod-card-border-color, var(--spectrum-card-border-color)); +} +.spectrum-Card .spectrum-Divider { + margin: 0; +} +.spectrum-Card-content { + display: flex; + align-items: center; + margin-block-start: var(--mod-card-content-margin-top, var(--spectrum-card-content-margin-top)); +} +.spectrum-Card-body { + padding-block-start: var(--mod-card-body-padding-block-start, var(--mod-card-title-padding-top, var(--spectrum-card-title-padding-top))); + padding-inline-end: var(--mod-card-body-padding-inline-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-inline-start: var(--mod-card-body-padding-inline-start, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-block-end: var(--mod-card-body-padding-block-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); +} +.spectrum-Card-preview { + overflow: hidden; + border-start-start-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-start-end-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-end-end-radius: 0; + border-end-start-radius: 0; + display: flex; + align-items: center; + color: var(--highcontrast-card-body-font-color, var(--mod-card-body-font-color, var(--spectrum-card-body-font-color))); +} +.spectrum-Card-title { + padding-inline-end: var(--mod-card-title-padding-right, var(--spectrum-card-title-padding-right)); + font-family: var(--mod-card-title-font-family, var(--spectrum-card-title-font-family)); + font-size: var(--mod-card-title-font-size, var(--spectrum-card-title-font-size)); + font-weight: var(--mod-card-title-font-weight, var(--spectrum-card-title-font-weight)); + font-style: var(--mod-card-title-font-style, var(--spectrum-card-title-font-style)); + line-height: var(--mod-card-title-line-height, var(--spectrum-card-title-line-height)); +} +.spectrum-Card-subtitle, +.spectrum-Card-title { + color: var(--highcontrast-card-title-font-color, var(--mod-card-title-font-color, var(--spectrum-card-title-font-color))); +} +.spectrum-Card-subtitle { + text-transform: none; +} +.spectrum-Card-subtitle, +.spectrum-Card-subtitle + .spectrum-Card-description:before { + padding-inline-end: var(--mod-card-subtitle-padding-right, var(--spectrum-card-subtitle-padding-right)); +} +.spectrum-Card-subtitle + .spectrum-Card-description:before { + content: "•"; +} +.spectrum-Card-description { + font-family: var(--mod-card-body-font-family, var(--spectrum-card-body-font-family)); + font-size: var(--mod-card-body-font-size, var(--spectrum-card-body-font-size)); + font-weight: var(--mod-card-body-font-weight, var(--spectrum-card-body-font-weight)); + font-style: var(--mod-card-body-font-style, var(--spectrum-card-body-font-style)); +} +.spectrum-Card-description, +.spectrum-Card-footer { + line-height: var(--mod-card-body-line-height, var(--spectrum-card-body-line-height)); + color: var(--highcontrast-card-body-font-color, var(--mod-card-body-font-color, var(--spectrum-card-body-font-color))); +} +.spectrum-Card-footer { + margin-block-start: var(--mod-card-footer-margin-block-start, calc((var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-content-margin-bottom, var(--spectrum-card-content-margin-bottom))) * -1)); + margin-inline-start: var(--mod-card-footer-margin-inline-start, var(--mod-card-body-spacing, var(--spectrum-card-body-spacing))); + margin-inline-end: var(--mod-card-footer-margin-inline-end, var(--mod-card-body-spacing, var(--spectrum-card-body-spacing))); + padding-block-end: var(--mod-card-footer-padding-block-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-block-start: var(--mod-card-footer-padding-block-start, var(--mod-card-footer-margin-top, var(--spectrum-card-footer-padding-top))); + border-block-start: var(--mod-card-border-width, var(--spectrum-card-border-width)) solid var(--mod-card-divider-color, var(--spectrum-card-divider-color)); +} +.spectrum-Card-header { + display: flex; + align-items: center; +} +.spectrum-Card-actionButton { + flex: 1; + align-self: center; + display: flex; + justify-content: flex-end; + z-index: 1; +} +.spectrum-Card--quiet .spectrum-Card-preview { + border: var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) solid transparent; +} +.spectrum-Card--quiet.is-focused:after, +.spectrum-Card--quiet:focus:after { + border-width: 0; +} +.spectrum-Card--quiet.is-focused .spectrum-Card-preview:after, +.spectrum-Card--quiet:focus .spectrum-Card-preview:after { + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card--quiet.is-selected .spectrum-Card-preview { + border: var(--mod-card-preview-border-width-selected, var(--mod-card-preview-border-width, var(--spectrum-card-preview-border-width-selected))) solid; + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); +} +.spectrum-Card--gallery, +.spectrum-Card--quiet { + block-size: 100%; + min-inline-size: var(--mod-card-minimum-width, var(--spectrum-card-minimum-width)); + border-width: 0; + border-radius: 0; + overflow: visible; + border-color: transparent; + background-color: initial; +} +.spectrum-Card--gallery:before, +.spectrum-Card--quiet:before { + display: none; +} +.spectrum-Card--gallery .spectrum-Card-preview, +.spectrum-Card--quiet .spectrum-Card-preview { + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + background-color: var(--mod-card-preview-background-color, var(--mod-card-background-color, var(--spectrum-card-preview-background-color))); + min-block-size: var(--mod-card-preview-minimum-height, var(--spectrum-card-preview-minimum-height)); + inline-size: 100%; + flex: 1; + margin: 0 auto; + box-sizing: border-box; + position: relative; + transition: background-color var(--mod-card-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))); + overflow: visible; +} +.spectrum-Card--gallery .spectrum-Card-preview:before, +.spectrum-Card--quiet .spectrum-Card-preview:before { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Card--gallery .spectrum-Card-preview:after, +.spectrum-Card--quiet .spectrum-Card-preview:after { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-start: 0; + border: 0 solid transparent; + border-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) + var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); + margin-block-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); + margin-inline-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); +} +.spectrum-Card--gallery.is-drop-target, +.spectrum-Card--quiet.is-drop-target { + border-color: transparent; + background-color: initial; + box-shadow: none; +} +.spectrum-Card--gallery.is-drop-target .spectrum-Card-preview, +.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview { + transition: none; + background-color: var(--mod-card-preview-background-color, var(--mod-card-background-color, var(--spectrum-card-preview-background-color))); +} +.spectrum-Card--gallery.is-drop-target .spectrum-Card-preview:before, +.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview:before { + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); + box-shadow: 0 0 0 1px var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card--gallery.is-selected .spectrum-Card-preview:before, +.spectrum-Card--quiet.is-selected .spectrum-Card-preview:before { + background-color: rgba(var(--mod-card-selected-background-color-rgb, var(--spectrum-card-selected-background-color-rgb)), var(--mod-card-selected-background-opacity, var(--spectrum-card-selected-background-opacity))); +} +.spectrum-Card--gallery .spectrum-Card-body, +.spectrum-Card--quiet .spectrum-Card-body { + margin-block-start: var(--mod-card-content-margin-top, var(--spectrum-card-content-margin-top)); + padding: 0; +} +.spectrum-Card--gallery .spectrum-Card-footer, +.spectrum-Card--quiet .spectrum-Card-footer { + margin-inline-end: 0; + margin-inline-start: 0; +} +.spectrum-Card--horizontal { + flex-direction: row; +} +@media (hover: hover) { + .spectrum-Card:hover { + border-color: var(--highcontrast-card-border-color-hover, var(--mod-card-border-color-hover, var(--spectrum-card-border-color-hover))); + } + .spectrum-Card:hover .spectrum-Card-actions, + .spectrum-Card:hover .spectrum-Card-quickActions { + visibility: visible; + opacity: 1; + pointer-events: all; + } + .spectrum-Card--gallery:hover, + .spectrum-Card--quiet:hover { + border-color: transparent; + } + .spectrum-Card--gallery:hover .spectrum-Card-preview, + .spectrum-Card--quiet:hover .spectrum-Card-preview { + background-color: var(--mod-card-preview-background-color-hover, var(--mod-card-background-color-hover, var(--spectrum-card-preview-background-color-hover))); + } + .spectrum-Card--horizontal:hover .spectrum-Card-preview { + border-color: var(--mod-card-border-color-hover, var(--spectrum-card-border-color-hover)); + } +} +.spectrum-Card--horizontal .spectrum-Card-preview { + flex-shrink: 0; + min-block-size: 0; + display: flex; + align-items: center; + justify-content: center; + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-start-end-radius: 0; + border-end-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-end-end-radius: 0; + padding: var(--mod-card-horizontal-preview-padding, var(--spectrum-card-horizontal-preview-padding)); + background-color: var(--mod-card-preview-background-color, var(--spectrum-card-preview-background-color)); + border-color: var(--mod-card-border-color, var(--spectrum-card-border-color)); +} +.spectrum-Card--horizontal .spectrum-Card-content, +.spectrum-Card--horizontal .spectrum-Card-header { + margin-block-start: 0; + block-size: auto; +} +.spectrum-Card--horizontal .spectrum-Card-content { + margin-block-end: 0; +} +.spectrum-Card--horizontal .spectrum-Card-title { + padding-inline-end: 0; +} +.spectrum-Card--horizontal .spectrum-Card-body { + flex-shrink: 0; + display: flex; + justify-content: center; + flex-direction: column; + padding-block: 0; + padding-inline: var(--mod-card-horizontal-body-padding, var(--spectrum-card-horizontal-body-padding)); +} +.spectrum-Card--gallery { + min-inline-size: 0; +} +.spectrum-Card--gallery .spectrum-Card-preview { + padding: 0; + border-radius: 0; +} +/*# sourceMappingURL=components/card/index.css.map */ diff --git a/components/card/index.css b/components/card/index.css new file mode 100644 index 0000000000..e01269f2ea --- /dev/null +++ b/components/card/index.css @@ -0,0 +1,405 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Card { + --spectrum-card-background-color: var(--spectrum-background-layer-2-color); + --spectrum-card-body-spacing: var(--spectrum-spacing-400); + --spectrum-card-title-padding-top: var(--spectrum-spacing-300); + --spectrum-card-title-padding-right: var(--spectrum-spacing-400); + --spectrum-card-content-margin-top: var(--spectrum-spacing-100); + --spectrum-card-content-margin-bottom: var(--spectrum-spacing-300); + --spectrum-card-footer-padding-top: var(--spectrum-spacing-100); + --spectrum-card-subtitle-padding-right: var(--spectrum-spacing-100); + --spectrum-card-border-width: var(--spectrum-border-width-100); + --spectrum-card-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-card-border-color: var(--spectrum-gray-200); + --spectrum-card-border-color-hover: var(--spectrum-gray-300); + --spectrum-card-border-color-selected: var(--spectrum-blue-700); + --spectrum-card-divider-color: var(--spectrum-gray-300); + --spectrum-card-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-card-title-font-size: var(--spectrum-heading-size-xxs); + --spectrum-card-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-card-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-card-title-line-height: var(--spectrum-heading-line-height); + --spectrum-card-title-font-color: var(--spectrum-heading-color); + --spectrum-card-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-card-body-font-size: var(--spectrum-body-size-s); + --spectrum-card-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-card-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-card-body-line-height: var(--spectrum-body-line-height); + --spectrum-card-body-font-color: var(--spectrum-body-color); + --spectrum-card-actions-spacing: var(--spectrum-spacing-300); + --spectrum-card-actions-size: var(--spectrum-card-selection-background-size); + --spectrum-card-actions-border-radius: var(--spectrum-corner-radius-100); + --spectrum-card-actions-background-color-rgb: var(--spectrum-gray-100-rgb); + --spectrum-card-actions-background-color-opacity: var(--spectrum-card-selection-background-color-opacity); + --spectrum-card-actions-drop-shadow-color: var(--spectrum-drop-shadow-color); + --spectrum-card-actions-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-card-actions-drop-shadow-y: var(--spectrum-drop-shadow-y); + --spectrum-card-actions-drop-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-card-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-card-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-card-selected-background-opacity: 0.1; + --spectrum-card-preview-border-width-selected: var(--spectrum-border-width-100); + --spectrum-card-preview-background-color: var(--spectrum-background-base-color); + --spectrum-card-preview-background-color-hover: var(--spectrum-gray-300); + --spectrum-card-horizontal-body-padding: var(--spectrum-spacing-300); + --spectrum-card-horizontal-preview-padding: var(--spectrum-spacing-200); +} +.spectrum--light .spectrum-Card, +.spectrum--lightest .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-900-rgb); +} +.spectrum--dark .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-500-rgb); +} +.spectrum--darkest .spectrum-Card { + --spectrum-card-selected-background-color-rgb: var(--spectrum-blue-600-rgb); +} +.spectrum-Card--gallery, +.spectrum-Card--quiet { + --mod-card-content-margin-top: var(--mod-card-content-margin-top-quiet, var(--spectrum-spacing-100)); + --mod-card-minimum-width: var(--mod-card-minimum-width-quiet, var(--spectrum-card-minimum-width)); +} +.spectrum-Card { + position: relative; + display: inline-flex; + flex-direction: column; + box-sizing: border-box; + -webkit-text-decoration: none; + text-decoration: none; + min-inline-size: var(--mod-card-minimum-width, var(--spectrum-card-minimum-width)); + border: var(--mod-card-border-width, var(--spectrum-card-border-width)) solid transparent; + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-color: var(--highcontrast-card-border-color, var(--mod-card-border-color, var(--spectrum-card-border-color))); + background-color: var(--highcontrast-card-background-color, var(--mod-card-background-color, var(--mod-spectrum-card-background-color, var(--spectrum-card-background-color)))); +} +.spectrum-Card:after, +.spectrum-Card:before { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Card:after { + inset-inline-end: 0; + border: 0 solid transparent; + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + margin-block-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); + margin-inline-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); +} +.spectrum-Card:focus-visible { + outline: none; +} +.spectrum-Card:focus-visible:after { + border-width: var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)); + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card:focus-visible .spectrum-Card-coverPhoto, +.spectrum-Card:focus-visible .spectrum-Card-preview { + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); + border-start-end-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); +} +.spectrum-Card.is-selected { + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); +} +.spectrum-Card.is-selected:before { + background-color: rgba(var(--mod-card-selected-background-color-rgb, var(--spectrum-card-selected-background-color-rgb)), var(--mod-card-selected-background-opacity, var(--spectrum-card-selected-background-opacity))); +} +.spectrum-Card.is-drop-target { + --mod-card-background-color: var(--spectrum-card-background-color-quiet, var(--spectrum-background-base-color)); + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); + box-shadow: 0 0 0 1px var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); + background-color: var(--mod-card-background-color, var(--spectrum-card-background-color)); +} +.spectrum-Card.is-focused .spectrum-Card-actions, +.spectrum-Card.is-focused .spectrum-Card-quickActions, +.spectrum-Card.is-selected .spectrum-Card-actions, +.spectrum-Card.is-selected .spectrum-Card-quickActions, +.spectrum-Card:focus .spectrum-Card-actions, +.spectrum-Card:focus .spectrum-Card-quickActions { + visibility: visible; + opacity: 1; + pointer-events: all; +} +.spectrum-Card-quickActions { + position: absolute; + visibility: hidden; + box-shadow: var(--mod-card-actions-drop-shadow-x, var(--spectrum-card-actions-drop-shadow-x)) var(--mod-card-actions-drop-shadow-y, var(--spectrum-card-actions-drop-shadow-y)) var(--mod-card-actions-drop-shadow-blur, var(--spectrum-card-actions-drop-shadow-blur)) var(--mod-card-actions-drop-shadow-color, var(--spectrum-card-actions-drop-shadow-color)); + inline-size: var(--mod-card-actions-size, var(--spectrum-card-actions-size)); + block-size: var(--mod-card-actions-size, var(--spectrum-card-actions-size)); + border-radius: var(--mod-card-actions-border-radius, var(--spectrum-card-actions-border-radius)); + background-color: rgba(var(--mod-card-actions-background-color-rgb, var(--spectrum-card-actions-background-color-rgb)), var(--mod-card-actions-background-color-opacity, var(--spectrum-card-actions-background-color-opacity))); + inset-inline-start: calc(var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + inset-block-start: calc(var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); +} +.spectrum-Card-actions { + inset-block-start: var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)); + inset-inline-end: var(--mod-card-actions-spacing, var(--spectrum-card-actions-spacing)); +} +.spectrum-Card-coverPhoto { + position: relative; + block-size: var(--mod-card-preview-minimum-height, var(--spectrum-card-preview-minimum-height)); + box-sizing: border-box; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-start-end-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-end-end-radius: 0; + border-end-start-radius: 0; + background-size: cover; + background-position: 50%; + background-color: var(--mod-card-background-color, var(--spectrum-card-background-color)); + border-block-end-color: var(--mod-card-border-color, var(--spectrum-card-border-color)); +} +.spectrum-Card .spectrum-Divider { + margin: 0; +} +.spectrum-Card-content { + display: flex; + align-items: center; + margin-block-start: var(--mod-card-content-margin-top, var(--spectrum-card-content-margin-top)); +} +.spectrum-Card-body { + padding-block-start: var(--mod-card-body-padding-block-start, var(--mod-card-title-padding-top, var(--spectrum-card-title-padding-top))); + padding-inline-end: var(--mod-card-body-padding-inline-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-inline-start: var(--mod-card-body-padding-inline-start, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-block-end: var(--mod-card-body-padding-block-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); +} +.spectrum-Card-preview { + overflow: hidden; + border-start-start-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-start-end-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + border-end-end-radius: 0; + border-end-start-radius: 0; + display: flex; + align-items: center; + color: var(--highcontrast-card-body-font-color, var(--mod-card-body-font-color, var(--spectrum-card-body-font-color))); +} +.spectrum-Card-title { + padding-inline-end: var(--mod-card-title-padding-right, var(--spectrum-card-title-padding-right)); + font-family: var(--mod-card-title-font-family, var(--spectrum-card-title-font-family)); + font-size: var(--mod-card-title-font-size, var(--spectrum-card-title-font-size)); + font-weight: var(--mod-card-title-font-weight, var(--spectrum-card-title-font-weight)); + font-style: var(--mod-card-title-font-style, var(--spectrum-card-title-font-style)); + line-height: var(--mod-card-title-line-height, var(--spectrum-card-title-line-height)); +} +.spectrum-Card-subtitle, +.spectrum-Card-title { + color: var(--highcontrast-card-title-font-color, var(--mod-card-title-font-color, var(--spectrum-card-title-font-color))); +} +.spectrum-Card-subtitle { + text-transform: none; +} +.spectrum-Card-subtitle, +.spectrum-Card-subtitle + .spectrum-Card-description:before { + padding-inline-end: var(--mod-card-subtitle-padding-right, var(--spectrum-card-subtitle-padding-right)); +} +.spectrum-Card-subtitle + .spectrum-Card-description:before { + content: "•"; +} +.spectrum-Card-description { + font-family: var(--mod-card-body-font-family, var(--spectrum-card-body-font-family)); + font-size: var(--mod-card-body-font-size, var(--spectrum-card-body-font-size)); + font-weight: var(--mod-card-body-font-weight, var(--spectrum-card-body-font-weight)); + font-style: var(--mod-card-body-font-style, var(--spectrum-card-body-font-style)); +} +.spectrum-Card-description, +.spectrum-Card-footer { + line-height: var(--mod-card-body-line-height, var(--spectrum-card-body-line-height)); + color: var(--highcontrast-card-body-font-color, var(--mod-card-body-font-color, var(--spectrum-card-body-font-color))); +} +.spectrum-Card-footer { + margin-block-start: var(--mod-card-footer-margin-block-start, calc((var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-content-margin-bottom, var(--spectrum-card-content-margin-bottom))) * -1)); + margin-inline-start: var(--mod-card-footer-margin-inline-start, var(--mod-card-body-spacing, var(--spectrum-card-body-spacing))); + margin-inline-end: var(--mod-card-footer-margin-inline-end, var(--mod-card-body-spacing, var(--spectrum-card-body-spacing))); + padding-block-end: var(--mod-card-footer-padding-block-end, calc(var(--mod-card-body-spacing, var(--spectrum-card-body-spacing)) - var(--mod-card-border-width, var(--spectrum-card-border-width)))); + padding-block-start: var(--mod-card-footer-padding-block-start, var(--mod-card-footer-margin-top, var(--spectrum-card-footer-padding-top))); + border-block-start: var(--mod-card-border-width, var(--spectrum-card-border-width)) solid var(--mod-card-divider-color, var(--spectrum-card-divider-color)); +} +.spectrum-Card-header { + display: flex; + align-items: center; +} +.spectrum-Card-actionButton { + flex: 1; + align-self: center; + display: flex; + justify-content: flex-end; + z-index: 1; +} +.spectrum-Card--quiet .spectrum-Card-preview { + border: var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) solid transparent; +} +.spectrum-Card--quiet.is-focused:after, +.spectrum-Card--quiet:focus:after { + border-width: 0; +} +.spectrum-Card--quiet.is-focused .spectrum-Card-preview:after, +.spectrum-Card--quiet:focus .spectrum-Card-preview:after { + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card--quiet.is-selected .spectrum-Card-preview { + border: var(--mod-card-preview-border-width-selected, var(--mod-card-preview-border-width, var(--spectrum-card-preview-border-width-selected))) solid; + border-color: var(--highcontrast-card-border-color-selected, var(--mod-card-border-color-selected, var(--spectrum-card-border-color-selected))); +} +.spectrum-Card--gallery, +.spectrum-Card--quiet { + block-size: 100%; + min-inline-size: var(--mod-card-minimum-width, var(--spectrum-card-minimum-width)); + border-width: 0; + border-radius: 0; + overflow: visible; + border-color: transparent; + background-color: initial; +} +.spectrum-Card--gallery:before, +.spectrum-Card--quiet:before { + display: none; +} +.spectrum-Card--gallery .spectrum-Card-preview, +.spectrum-Card--quiet .spectrum-Card-preview { + border-radius: var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)); + background-color: var(--mod-card-preview-background-color, var(--mod-card-background-color, var(--spectrum-card-preview-background-color))); + min-block-size: var(--mod-card-preview-minimum-height, var(--spectrum-card-preview-minimum-height)); + inline-size: 100%; + flex: 1; + margin: 0 auto; + box-sizing: border-box; + position: relative; + transition: background-color var(--mod-card-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))); + overflow: visible; +} +.spectrum-Card--gallery .spectrum-Card-preview:before, +.spectrum-Card--quiet .spectrum-Card-preview:before { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Card--gallery .spectrum-Card-preview:after, +.spectrum-Card--quiet .spectrum-Card-preview:after { + content: ""; + block-size: 100%; + inline-size: 100%; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-start: 0; + border: 0 solid transparent; + border-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) + var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width))); + margin-block-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); + margin-inline-start: calc(var(--mod-card-focus-indicator-width, var(--spectrum-card-focus-indicator-width)) * -1); +} +.spectrum-Card--gallery.is-drop-target, +.spectrum-Card--quiet.is-drop-target { + border-color: transparent; + background-color: initial; + box-shadow: none; +} +.spectrum-Card--gallery.is-drop-target .spectrum-Card-preview, +.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview { + transition: none; + background-color: var(--mod-card-preview-background-color, var(--mod-card-background-color, var(--spectrum-card-preview-background-color))); +} +.spectrum-Card--gallery.is-drop-target .spectrum-Card-preview:before, +.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview:before { + border-color: var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); + box-shadow: 0 0 0 1px var(--mod-card-focus-indicator-color, var(--spectrum-card-focus-indicator-color)); +} +.spectrum-Card--gallery.is-selected .spectrum-Card-preview:before, +.spectrum-Card--quiet.is-selected .spectrum-Card-preview:before { + background-color: rgba(var(--mod-card-selected-background-color-rgb, var(--spectrum-card-selected-background-color-rgb)), var(--mod-card-selected-background-opacity, var(--spectrum-card-selected-background-opacity))); +} +.spectrum-Card--gallery .spectrum-Card-body, +.spectrum-Card--quiet .spectrum-Card-body { + margin-block-start: var(--mod-card-content-margin-top, var(--spectrum-card-content-margin-top)); + padding: 0; +} +.spectrum-Card--gallery .spectrum-Card-footer, +.spectrum-Card--quiet .spectrum-Card-footer { + margin-inline-end: 0; + margin-inline-start: 0; +} +.spectrum-Card--horizontal { + flex-direction: row; +} +@media (hover: hover) { + .spectrum-Card:hover { + border-color: var(--highcontrast-card-border-color-hover, var(--mod-card-border-color-hover, var(--spectrum-card-border-color-hover))); + } + .spectrum-Card:hover .spectrum-Card-actions, + .spectrum-Card:hover .spectrum-Card-quickActions { + visibility: visible; + opacity: 1; + pointer-events: all; + } + .spectrum-Card--gallery:hover, + .spectrum-Card--quiet:hover { + border-color: transparent; + } + .spectrum-Card--gallery:hover .spectrum-Card-preview, + .spectrum-Card--quiet:hover .spectrum-Card-preview { + background-color: var(--mod-card-preview-background-color-hover, var(--mod-card-background-color-hover, var(--spectrum-card-preview-background-color-hover))); + } + .spectrum-Card--horizontal:hover .spectrum-Card-preview { + border-color: var(--mod-card-border-color-hover, var(--spectrum-card-border-color-hover)); + } +} +.spectrum-Card--horizontal .spectrum-Card-preview { + flex-shrink: 0; + min-block-size: 0; + display: flex; + align-items: center; + justify-content: center; + border-start-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-start-end-radius: 0; + border-end-start-radius: calc(var(--mod-card-corner-radius, var(--spectrum-card-corner-radius)) - var(--mod-card-border-width, var(--spectrum-card-border-width))); + border-end-end-radius: 0; + padding: var(--mod-card-horizontal-preview-padding, var(--spectrum-card-horizontal-preview-padding)); + background-color: var(--mod-card-preview-background-color, var(--spectrum-card-preview-background-color)); + border-color: var(--mod-card-border-color, var(--spectrum-card-border-color)); +} +.spectrum-Card--horizontal .spectrum-Card-content, +.spectrum-Card--horizontal .spectrum-Card-header { + margin-block-start: 0; + block-size: auto; +} +.spectrum-Card--horizontal .spectrum-Card-content { + margin-block-end: 0; +} +.spectrum-Card--horizontal .spectrum-Card-title { + padding-inline-end: 0; +} +.spectrum-Card--horizontal .spectrum-Card-body { + flex-shrink: 0; + display: flex; + justify-content: center; + flex-direction: column; + padding-block: 0; + padding-inline: var(--mod-card-horizontal-body-padding, var(--spectrum-card-horizontal-body-padding)); +} +.spectrum-Card--gallery { + min-inline-size: 0; +} +.spectrum-Card--gallery .spectrum-Card-preview { + padding: 0; + border-radius: 0; +} +/*# sourceMappingURL=components/card/index.css.map */ diff --git a/components/card/metadata.json b/components/card/metadata.json new file mode 100644 index 0000000000..dfc231ea49 --- /dev/null +++ b/components/card/metadata.json @@ -0,0 +1,219 @@ +{ + "selectors": [ + ".spectrum--dark .spectrum-Card", + ".spectrum--darkest .spectrum-Card", + ".spectrum--light .spectrum-Card,\n.spectrum--lightest .spectrum-Card", + ".spectrum-Card", + ".spectrum-Card .spectrum-Divider", + ".spectrum-Card--gallery", + ".spectrum-Card--gallery .spectrum-Card-body,\n.spectrum-Card--quiet .spectrum-Card-body", + ".spectrum-Card--gallery .spectrum-Card-footer,\n.spectrum-Card--quiet .spectrum-Card-footer", + ".spectrum-Card--gallery .spectrum-Card-preview", + ".spectrum-Card--gallery .spectrum-Card-preview,\n.spectrum-Card--quiet .spectrum-Card-preview", + ".spectrum-Card--gallery .spectrum-Card-preview:after,\n.spectrum-Card--quiet .spectrum-Card-preview:after", + ".spectrum-Card--gallery .spectrum-Card-preview:before,\n.spectrum-Card--quiet .spectrum-Card-preview:before", + ".spectrum-Card--gallery,\n.spectrum-Card--quiet", + ".spectrum-Card--gallery.is-drop-target .spectrum-Card-preview,\n.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview", + ".spectrum-Card--gallery.is-drop-target .spectrum-Card-preview:before,\n.spectrum-Card--quiet.is-drop-target .spectrum-Card-preview:before", + ".spectrum-Card--gallery.is-drop-target,\n.spectrum-Card--quiet.is-drop-target", + ".spectrum-Card--gallery.is-selected .spectrum-Card-preview:before,\n.spectrum-Card--quiet.is-selected .spectrum-Card-preview:before", + ".spectrum-Card--gallery:before,\n.spectrum-Card--quiet:before", + ".spectrum-Card--gallery:hover .spectrum-Card-preview,\n\t.spectrum-Card--quiet:hover .spectrum-Card-preview", + ".spectrum-Card--gallery:hover,\n\t.spectrum-Card--quiet:hover", + ".spectrum-Card--horizontal", + ".spectrum-Card--horizontal .spectrum-Card-body", + ".spectrum-Card--horizontal .spectrum-Card-content", + ".spectrum-Card--horizontal .spectrum-Card-content,\n.spectrum-Card--horizontal .spectrum-Card-header", + ".spectrum-Card--horizontal .spectrum-Card-preview", + ".spectrum-Card--horizontal .spectrum-Card-title", + ".spectrum-Card--horizontal:hover .spectrum-Card-preview", + ".spectrum-Card--quiet .spectrum-Card-preview", + ".spectrum-Card--quiet.is-focused .spectrum-Card-preview:after,\n.spectrum-Card--quiet:focus .spectrum-Card-preview:after", + ".spectrum-Card--quiet.is-focused:after,\n.spectrum-Card--quiet:focus:after", + ".spectrum-Card--quiet.is-selected .spectrum-Card-preview", + ".spectrum-Card-actionButton", + ".spectrum-Card-actions", + ".spectrum-Card-body", + ".spectrum-Card-content", + ".spectrum-Card-coverPhoto", + ".spectrum-Card-description", + ".spectrum-Card-description,\n.spectrum-Card-footer", + ".spectrum-Card-footer", + ".spectrum-Card-header", + ".spectrum-Card-preview", + ".spectrum-Card-quickActions", + ".spectrum-Card-subtitle", + ".spectrum-Card-subtitle + .spectrum-Card-description:before", + ".spectrum-Card-subtitle,\n.spectrum-Card-subtitle + .spectrum-Card-description:before", + ".spectrum-Card-subtitle,\n.spectrum-Card-title", + ".spectrum-Card-title", + ".spectrum-Card.is-drop-target", + ".spectrum-Card.is-focused .spectrum-Card-actions,\n.spectrum-Card.is-focused .spectrum-Card-quickActions,\n.spectrum-Card.is-selected .spectrum-Card-actions,\n.spectrum-Card.is-selected .spectrum-Card-quickActions,\n.spectrum-Card:focus .spectrum-Card-actions,\n.spectrum-Card:focus .spectrum-Card-quickActions", + ".spectrum-Card.is-selected", + ".spectrum-Card.is-selected:before", + ".spectrum-Card:after", + ".spectrum-Card:after,\n.spectrum-Card:before", + ".spectrum-Card:focus-visible", + ".spectrum-Card:focus-visible .spectrum-Card-coverPhoto,\n.spectrum-Card:focus-visible .spectrum-Card-preview", + ".spectrum-Card:focus-visible:after", + ".spectrum-Card:hover", + ".spectrum-Card:hover .spectrum-Card-actions,\n\t.spectrum-Card:hover .spectrum-Card-quickActions" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-card-actions-background-color-opacity", + "--mod-card-actions-background-color-rgb", + "--mod-card-actions-border-radius", + "--mod-card-actions-drop-shadow-blur", + "--mod-card-actions-drop-shadow-color", + "--mod-card-actions-drop-shadow-x", + "--mod-card-actions-drop-shadow-y", + "--mod-card-actions-size", + "--mod-card-actions-spacing", + "--mod-card-animation-duration", + "--mod-card-background-color", + "--mod-card-background-color-hover", + "--mod-card-body-font-color", + "--mod-card-body-font-family", + "--mod-card-body-font-size", + "--mod-card-body-font-style", + "--mod-card-body-font-weight", + "--mod-card-body-line-height", + "--mod-card-body-padding-block-end", + "--mod-card-body-padding-block-start", + "--mod-card-body-padding-inline-end", + "--mod-card-body-padding-inline-start", + "--mod-card-body-spacing", + "--mod-card-border-color", + "--mod-card-border-color-hover", + "--mod-card-border-color-selected", + "--mod-card-border-width", + "--mod-card-content-margin-bottom", + "--mod-card-content-margin-top", + "--mod-card-content-margin-top-quiet", + "--mod-card-corner-radius", + "--mod-card-divider-color", + "--mod-card-focus-indicator-color", + "--mod-card-focus-indicator-width", + "--mod-card-footer-margin-block-start", + "--mod-card-footer-margin-inline-end", + "--mod-card-footer-margin-inline-start", + "--mod-card-footer-margin-top", + "--mod-card-footer-padding-block-end", + "--mod-card-footer-padding-block-start", + "--mod-card-horizontal-body-padding", + "--mod-card-horizontal-preview-padding", + "--mod-card-minimum-width", + "--mod-card-minimum-width-quiet", + "--mod-card-preview-background-color", + "--mod-card-preview-background-color-hover", + "--mod-card-preview-border-width", + "--mod-card-preview-border-width-selected", + "--mod-card-preview-minimum-height", + "--mod-card-selected-background-color-rgb", + "--mod-card-selected-background-opacity", + "--mod-card-subtitle-padding-right", + "--mod-card-title-font-color", + "--mod-card-title-font-family", + "--mod-card-title-font-size", + "--mod-card-title-font-style", + "--mod-card-title-font-weight", + "--mod-card-title-line-height", + "--mod-card-title-padding-right", + "--mod-card-title-padding-top", + "--mod-spectrum-card-background-color" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-background-base-color", + "--spectrum-background-layer-2-color", + "--spectrum-blue-500-rgb", + "--spectrum-blue-600-rgb", + "--spectrum-blue-700", + "--spectrum-blue-900-rgb", + "--spectrum-body-color", + "--spectrum-body-line-height", + "--spectrum-body-sans-serif-font-style", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-body-size-s", + "--spectrum-border-width-100", + "--spectrum-card-actions-background-color-opacity", + "--spectrum-card-actions-background-color-rgb", + "--spectrum-card-actions-border-radius", + "--spectrum-card-actions-drop-shadow-blur", + "--spectrum-card-actions-drop-shadow-color", + "--spectrum-card-actions-drop-shadow-x", + "--spectrum-card-actions-drop-shadow-y", + "--spectrum-card-actions-size", + "--spectrum-card-actions-spacing", + "--spectrum-card-background-color", + "--spectrum-card-background-color-quiet", + "--spectrum-card-body-font-color", + "--spectrum-card-body-font-family", + "--spectrum-card-body-font-size", + "--spectrum-card-body-font-style", + "--spectrum-card-body-font-weight", + "--spectrum-card-body-line-height", + "--spectrum-card-body-spacing", + "--spectrum-card-border-color", + "--spectrum-card-border-color-hover", + "--spectrum-card-border-color-selected", + "--spectrum-card-border-width", + "--spectrum-card-content-margin-bottom", + "--spectrum-card-content-margin-top", + "--spectrum-card-corner-radius", + "--spectrum-card-divider-color", + "--spectrum-card-focus-indicator-color", + "--spectrum-card-focus-indicator-width", + "--spectrum-card-footer-padding-top", + "--spectrum-card-horizontal-body-padding", + "--spectrum-card-horizontal-preview-padding", + "--spectrum-card-minimum-width", + "--spectrum-card-preview-background-color", + "--spectrum-card-preview-background-color-hover", + "--spectrum-card-preview-border-width-selected", + "--spectrum-card-preview-minimum-height", + "--spectrum-card-selected-background-color-rgb", + "--spectrum-card-selected-background-opacity", + "--spectrum-card-selection-background-color-opacity", + "--spectrum-card-selection-background-size", + "--spectrum-card-subtitle-padding-right", + "--spectrum-card-title-font-color", + "--spectrum-card-title-font-family", + "--spectrum-card-title-font-size", + "--spectrum-card-title-font-style", + "--spectrum-card-title-font-weight", + "--spectrum-card-title-line-height", + "--spectrum-card-title-padding-right", + "--spectrum-card-title-padding-top", + "--spectrum-corner-radius-100", + "--spectrum-drop-shadow-blur", + "--spectrum-drop-shadow-color", + "--spectrum-drop-shadow-x", + "--spectrum-drop-shadow-y", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-thickness", + "--spectrum-gray-100-rgb", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-heading-color", + "--spectrum-heading-line-height", + "--spectrum-heading-sans-serif-font-style", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-heading-size-xxs", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-100", + "--spectrum-spacing-200", + "--spectrum-spacing-300", + "--spectrum-spacing-400" + ], + "system": [], + "a11y": [ + "--highcontrast-card-background-color", + "--highcontrast-card-body-font-color", + "--highcontrast-card-border-color", + "--highcontrast-card-border-color-hover", + "--highcontrast-card-border-color-selected", + "--highcontrast-card-title-font-color" + ] +} diff --git a/components/card/package.json b/components/card/package.json new file mode 100644 index 0000000000..4f15eb00c4 --- /dev/null +++ b/components/card/package.json @@ -0,0 +1,71 @@ +{ + "name": "@spectrum-css/card", + "version": "8.1.1", + "description": "The Spectrum CSS card component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/card", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/card" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/asset": ">=5", + "@spectrum-css/checkbox": ">=9", + "@spectrum-css/icon": ">=7", + "@spectrum-css/quickaction": ">=3", + "@spectrum-css/tokens": ">=14", + "@spectrum-css/typography": ">=6" + }, + "peerDependenciesMeta": { + "@spectrum-css/actionbutton": { + "optional": true + }, + "@spectrum-css/asset": { + "optional": true + }, + "@spectrum-css/checkbox": { + "optional": true + }, + "@spectrum-css/icon": { + "optional": true + }, + "@spectrum-css/quickaction": { + "optional": true + }, + "@spectrum-css/typography": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/asset": "workspace:^", + "@spectrum-css/checkbox": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/quickaction": "^3.1.1", + "@spectrum-css/tokens": "workspace:^", + "@spectrum-css/typography": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/card/template.js b/components/card/template.js new file mode 100644 index 0000000000..b0ee1c4db8 --- /dev/null +++ b/components/card/template.js @@ -0,0 +1,400 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Template as Asset } from "@spectrum-css/asset/stories/template.js"; +import { Template as Checkbox } from "@spectrum-css/checkbox/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as QuickAction } from "@spectrum-css/quickaction/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ( + { + rootClass = "spectrum-Card", + image, + title, + subtitle, + description, + footer, + isFocused = false, + isSelected = false, + isHorizontal = false, + isQuiet = false, + isGallery = false, + isCardAssetOverride = false, + isGrid = false, + hasQuickAction = false, + hasActions = false, + showAsset, + customStyles = {}, + customClasses = [], + id, + role, + }, + context +) => { + const { updateArgs } = context; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + tabindex="0" + role=${ifDefined( + image || showAsset ? "figure" : isGrid ? "rowheader" : role + )} + @focusin=${() => { + updateArgs({ isFocused: true }); + }} + @focusout=${() => { + updateArgs({ isFocused: false }); + }} + > + ${when(image || showAsset, () => + when( + showAsset || (isGallery && image), + () => html` +
    + ${when( + !isHorizontal, + () => + Asset( + { + image, + preset: !image ? showAsset : undefined, + isCardAssetOverride, + }, + context + ), + () => + Icon( + { + size: "xxl", + iconName: showAsset === "folder" ? "File" : "Document", + }, + context + ) + )} +
    + `, + () => html` +
    + ` + ) + )} + ${when( + title || subtitle, + () => + html`
    + ${when( + title || hasActions, + () => html` +
    + ${when( + title, + () => html` +
    + ${title} +
    + ` + )} + ${when(hasActions && !isHorizontal, () => + ActionButton( + { + iconName: "More", + size: "m", + isQuiet: true, + customClasses: [`${rootClass}-actionButton`], + }, + context + ) + )} +
    + ` + )} + ${when( + subtitle || description, + () => html` +
    + ${when( + subtitle, + () => html` +
    + ${subtitle} +
    + ` + )} + ${when( + description, + () => html` +
    + ${description} +
    + ` + )} +
    + ` + )} +
    ` + )} + ${when( + footer, + () => html` +
    + ${footer} +
    + ` + )} + ${when(hasQuickAction && !isHorizontal, () => + QuickAction( + { + noOverlay: true, + content: [ + Checkbox( + { + isChecked: isSelected, + title: "Select", + }, + context + ), + ], + onclick: () => { + updateArgs({ isSelected: !isSelected }); + }, + customClasses: [`${rootClass}-quickActions`], + }, + context + ) + )} +
    + `; +}; + +const States = (args, context) => html` +
    + ${[ + {}, + { + heading: "Selected", + isSelected: true, + }, + { + heading: "Focused", + isFocused: true, + }, + ].map( + ({ heading, ...item }) => html` +
    + ${Typography( + { + semantics: "heading", + size: "m", + weight: "light", + // this whitespace helps the boxes align better when there's not a headings + content: [heading ?? html` `], + customClasses: ["chromatic-ignore"], + }, + context + )} +
    + ${Template( + { + ...args, + ...item, + }, + context + )} +
    +
    + ` + )} +
    +`; + +export const CardGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[ + { + heading: "Default", + }, + { + heading: "No image", + title: "Card title", + description: "Optional description that should be one or two lines", + footer: undefined, + image: undefined, + }, + { + heading: "Horizontal", + title: "Card title", + description: "jpg", + showAsset: "file", + isQuiet: false, + isHorizontal: true, + hasActions: false, + hasQuickAction: false, + footer: undefined, + }, + { + heading: "Quiet", + title: "Name", + showAsset: "image", + image: "example-ava@2x.png", + description: "10/15/18", + isQuiet: true, + footer: undefined, + }, + { + heading: "Quiet file", + title: "FileName", + description: "PDF", + showAsset: "file", + image: undefined, + isQuiet: true, + footer: undefined, + }, + { + heading: "Quiet folder", + title: "Name", + showAsset: "folder", + description: "10/15/18", + isQuiet: true, + image: undefined, + footer: undefined, + }, + { + heading: "Asset preview", + title: "Card title", + showAsset: "image", + image: "example-card-portrait.png", + description: "jpg", + hasActions: false, + isCardAssetOverride: true, + customStyles: { + width: "200px", + }, + footer: undefined, + }, + { + heading: "Gallery", + title: "Card title", + showAsset: "image", + image: "example-card-landscape.png", + description: "jpg", + isGallery: true, + isCardAssetOverride: true, + customStyles: { + width: "700px", + }, + footer: undefined, + }, + { + heading: "Text wrap", + title: "Card title that is longer and should wrap", + customStyles: { "max-inline-size": "205px" }, + footer: undefined, + withStates: false, + }, + ].map( + ({ heading, withStates = true, ...item }) => html` +
    + ${when(heading, () => + Typography( + { + semantics: "heading", + size: "l", + content: [heading], + customClasses: ["chromatic-ignore"], + }, + context + ) + )} +
    + ${when( + withStates, + () => States({ ...args, ...item }, context), + () => Template({ ...args, ...item }, context) + )} +
    +
    + ` + )} +
    +`; diff --git a/components/checkbox/index-base.css b/components/checkbox/index-base.css new file mode 100644 index 0000000000..fb1cf139f7 --- /dev/null +++ b/components/checkbox/index-base.css @@ -0,0 +1,367 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Checkbox { + --spectrum-checkbox-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-checkbox-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-checkbox-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-checkbox-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-checkbox-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-checkbox-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-checkbox-control-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-checkbox-checkmark-color: var(--spectrum-gray-75); + --spectrum-checkbox-invalid-color-default: var(--spectrum-negative-color-900); + --spectrum-checkbox-invalid-color-hover: var(--spectrum-negative-color-1000); + --spectrum-checkbox-invalid-color-down: var(--spectrum-negative-color-1100); + --spectrum-checkbox-invalid-color-focus: var(--spectrum-negative-color-1000); + --spectrum-checkbox-emphasized-color-default: var(--spectrum-accent-color-900); + --spectrum-checkbox-emphasized-color-hover: var(--spectrum-accent-color-1000); + --spectrum-checkbox-emphasized-color-down: var(--spectrum-accent-color-1100); + --spectrum-checkbox-emphasized-color-focus: var(--spectrum-accent-color-1000); + --spectrum-checkbox-control-selected-color-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-checkbox-control-selected-color-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-checkbox-control-selected-color-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-checkbox-control-selected-color-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-checkbox-font-size: var(--spectrum-font-size-100); + --spectrum-checkbox-line-height: var(--spectrum-line-height-100); + --spectrum-checkbox-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-checkbox-height: var(--spectrum-component-height-100); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-medium); + --spectrum-checkbox-control-corner-radius: var(--spectrum-corner-radius-75); + --spectrum-checkbox-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-checkbox-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-checkbox-border-width: var(--spectrum-border-width-200); + --spectrum-checkbox-selected-border-width: calc(var(--spectrum-checkbox-control-size) / 2); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-checkbox-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Checkbox--sizeS { + --spectrum-checkbox-font-size: var(--spectrum-font-size-75); + --spectrum-checkbox-height: var(--spectrum-component-height-75); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-small); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-75); +} +.spectrum-Checkbox--sizeM { + --spectrum-checkbox-font-size: var(--spectrum-font-size-100); + --spectrum-checkbox-height: var(--spectrum-component-height-100); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-medium); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-100); +} +.spectrum-Checkbox--sizeL { + --spectrum-checkbox-font-size: var(--spectrum-font-size-200); + --spectrum-checkbox-height: var(--spectrum-component-height-200); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-large); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-200); +} +.spectrum-Checkbox--sizeXL { + --spectrum-checkbox-font-size: var(--spectrum-font-size-300); + --spectrum-checkbox-height: var(--spectrum-component-height-300); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-extra-large); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-300); +} +.spectrum-Checkbox { + color: var(--highcontrast-checkbox-content-color-default, var(--mod-checkbox-content-color-default, var(--spectrum-checkbox-content-color-default))); + display: inline-flex; + align-items: flex-start; + position: relative; + min-block-size: var(--mod-checkbox-height, var(--spectrum-checkbox-height)); + max-inline-size: 100%; + vertical-align: top; +} +.spectrum-Checkbox:active .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-down, var(--mod-checkbox-control-color-down, var(--spectrum-checkbox-control-color-down))); +} +.spectrum-Checkbox:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-down, var(--mod-checkbox-control-selected-color-down, var(--spectrum-checkbox-control-selected-color-down))); +} +.spectrum-Checkbox:active .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-down, var(--mod-checkbox-content-color-down, var(--spectrum-checkbox-content-color-down))); +} +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-default, var(--spectrum-checkbox-invalid-color-default))); +} +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); +} +.spectrum-Checkbox.is-readOnly { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); +} +.spectrum-Checkbox.is-readOnly:active .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-selected-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); +} +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + background-color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); +} +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label, +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label { + forced-color-adjust: none; + color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-content-color-default, var(--spectrum-checkbox-content-color-default))); +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-checkmark, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark { + display: none; +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark { + display: block; + transform: scale(1); + opacity: 1; +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-control-selected-color-focus, var(--spectrum-checkbox-control-selected-color-focus))); +} +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-default, var(--spectrum-checkbox-invalid-color-default))); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox--emphasized .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-emphasized-color-default, var(--spectrum-checkbox-emphasized-color-default))); +} +.spectrum-Checkbox--emphasized .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-emphasized-color-focus, var(--spectrum-checkbox-emphasized-color-focus))); +} +.spectrum-Checkbox--emphasized.is-invalid .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-focus, var(--spectrum-checkbox-invalid-color-focus))); +} +@media (hover: hover) { + .spectrum-Checkbox:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-color-hover, var(--spectrum-checkbox-control-color-hover))); + } + .spectrum-Checkbox:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-selected-color-hover, var(--spectrum-checkbox-control-selected-color-hover))); + } + .spectrum-Checkbox:hover .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-hover, var(--mod-checkbox-content-color-hover, var(--spectrum-checkbox-content-color-hover))); + } + .spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox.is-readOnly:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + } + .spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-selected-color-hover, var(--spectrum-checkbox-control-selected-color-hover))); + } + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-hover, var(--mod-checkbox-content-color-hover, var(--spectrum-checkbox-content-color-hover))); + } + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-emphasized-color-hover, var(--spectrum-checkbox-emphasized-color-hover))); + } + .spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-emphasized-color-hover, var(--spectrum-checkbox-emphasized-color-hover))); + } +} +.spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-emphasized-color-down, var(--spectrum-checkbox-emphasized-color-down))); +} +.spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-invalid-color-down, var(--spectrum-checkbox-invalid-color-down))); +} +.spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-focus, var(--mod-checkbox-control-color-focus, var(--spectrum-checkbox-control-color-focus))); +} +.spectrum-Checkbox-label { + text-align: start; + margin-inline-start: var(--mod-checkbox-text-to-control, var(--spectrum-checkbox-text-to-control)); + margin-block-start: var(--mod-checkbox-top-to-text, var(--spectrum-checkbox-top-to-text)); + font-size: var(--mod-checkbox-font-size, var(--spectrum-checkbox-font-size)); + transition: color var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; + line-height: var(--mod-checkbox-line-height, var(--spectrum-checkbox-line-height)); +} +.spectrum-Checkbox-label:lang(ja), +.spectrum-Checkbox-label:lang(ko), +.spectrum-Checkbox-label:lang(zh) { + line-height: var(--mod-checkbox-line-height-cjk, var(--spectrum-checkbox-line-height-cjk)); +} +.spectrum-Checkbox-input { + color: var(--mod-checkbox-control-color-default, var(--spectrum-checkbox-control-color-default)); + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; + overflow: visible; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + opacity: 0.0001; + z-index: 1; + cursor: pointer; +} +.spectrum-Checkbox-input:disabled { + cursor: default; +} +.spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + background-color: var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color)); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark { + transform: scale(1); + opacity: 1; +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-focus, var(--mod-checkbox-control-color-focus, var(--spectrum-checkbox-control-color-focus))); +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after { + forced-color-adjust: none; + box-shadow: 0 0 0 var(--mod-checkbox-focus-indicator-thinkness, var(--spectrum-checkbox-focus-indicator-thickness)) var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + margin: calc(var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap)) * -1); +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-focus, var(--mod-checkbox-content-color-focus, var(--spectrum-checkbox-content-color-focus))); +} +.spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-control-selected-color-focus, var(--spectrum-checkbox-control-selected-color-focus))); +} +.spectrum-Checkbox-box { + display: flex; + align-items: center; + justify-content: center; + position: relative; + --spectrum-checkbox-spacing: calc(var(--mod-checkbox-height, var(--spectrum-checkbox-height)) - var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size))); + margin: calc(var(--mod-checkbox-spacing, var(--spectrum-checkbox-spacing)) / 2) 0; + flex-grow: 0; + flex-shrink: 0; +} +.spectrum-Checkbox-box, +.spectrum-Checkbox-box:before { + box-sizing: border-box; + inline-size: var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size)); + block-size: var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size)); +} +.spectrum-Checkbox-box:before { + forced-color-adjust: none; + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-color-default, var(--spectrum-checkbox-control-color-default))); + display: block; + z-index: 0; + content: ""; + position: absolute; + border-radius: var(--mod-checkbox-control-corner-radius, var(--spectrum-checkbox-control-corner-radius)); + border-width: var(--mod-checkbox-border-width, var(--spectrum-checkbox-border-width)); + border-style: solid; + transition: + border var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out, + box-shadow var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; +} +.spectrum-Checkbox-box:after { + border-radius: calc(var(--mod-checkbox-control-corner-radius, var(--spectrum-checkbox-control-corner-radius)) + var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap))); + content: ""; + display: block; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-end: 0; + inset-block-start: 0; + margin: var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap)); + transition: + box-shadow var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-out, + margin var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-out; + transform: translate(0); +} +.spectrum-Checkbox .spectrum-Checkbox-checkmark, +.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark { + color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); + opacity: 0; + transform: scale(0); + transition: + opacity var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out, + transform var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; +} +.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark { + display: none; +} +.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before, +.spectrum-Checkbox .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-disabled-color-default, var(--mod-checkbox-control-color-disabled, var(--spectrum-checkbox-control-color-disabled))); + background-color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); +} +.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label, +.spectrum-Checkbox .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label { + forced-color-adjust: none; + color: var(--highcontrast-checkbox-disabled-color-default, var(--mod-checkbox-content-color-disabled, var(--spectrum-checkbox-content-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box { + forced-color-adjust: none; + outline-color: var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + outline-style: auto; + outline-offset: var(--highcontrast-checkbox-focus-indicator-gap, var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap))); + outline-width: var(--mod-focus-indicator-thickness, var(--spectrum-focus-indicator-thickness)); + } + .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after { + box-shadow: 0 0 0 0 var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + } + .spectrum-Checkbox { + --highcontrast-checkbox-content-color-default: CanvasText; + --highcontrast-checkbox-content-color-hover: CanvasText; + --highcontrast-checkbox-content-color-down: CanvasText; + --highcontrast-checkbox-content-color-focus: CanvasText; + --highcontrast-checkbox-background-color-default: Canvas; + --highcontrast-checkbox-color-default: ButtonText; + --highcontrast-checkbox-color-hover: ButtonText; + --highcontrast-checkbox-color-focus: Highlight; + --highcontrast-checkbox-highlight-color-default: Highlight; + --highcontrast-checkbox-highlight-color-hover: Highlight; + --highcontrast-checkbox-highlight-color-down: Highlight; + --highcontrast-checkbox-highlight-color-focus: Highlight; + --highcontrast-checkbox-disabled-color-default: GrayText; + --highcontrast-checkbox-focus-indicator-color: CanvasText; + } +} +.spectrum-Checkbox { + --spectrum-checkbox-control-color-default: var(--system-spectrum-checkbox-control-color-default); + --spectrum-checkbox-control-color-hover: var(--system-spectrum-checkbox-control-color-hover); + --spectrum-checkbox-control-color-down: var(--system-spectrum-checkbox-control-color-down); + --spectrum-checkbox-control-color-focus: var(--system-spectrum-checkbox-control-color-focus); +} +/*# sourceMappingURL=components/checkbox/index.css.map */ diff --git a/components/checkbox/index-theme.css b/components/checkbox/index-theme.css new file mode 100644 index 0000000000..68d4c56bef --- /dev/null +++ b/components/checkbox/index-theme.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-600); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-700); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-700); +} +.spectrum--express { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-900); +} +/*# sourceMappingURL=components/checkbox/themes/express.css.map */ diff --git a/components/checkbox/index-vars.css b/components/checkbox/index-vars.css new file mode 100644 index 0000000000..11f5bf1a48 --- /dev/null +++ b/components/checkbox/index-vars.css @@ -0,0 +1,379 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-600); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-700); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-700); +} +.spectrum--express { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-900); +} +.spectrum-Checkbox { + --spectrum-checkbox-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-checkbox-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-checkbox-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-checkbox-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-checkbox-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-checkbox-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-checkbox-control-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-checkbox-checkmark-color: var(--spectrum-gray-75); + --spectrum-checkbox-invalid-color-default: var(--spectrum-negative-color-900); + --spectrum-checkbox-invalid-color-hover: var(--spectrum-negative-color-1000); + --spectrum-checkbox-invalid-color-down: var(--spectrum-negative-color-1100); + --spectrum-checkbox-invalid-color-focus: var(--spectrum-negative-color-1000); + --spectrum-checkbox-emphasized-color-default: var(--spectrum-accent-color-900); + --spectrum-checkbox-emphasized-color-hover: var(--spectrum-accent-color-1000); + --spectrum-checkbox-emphasized-color-down: var(--spectrum-accent-color-1100); + --spectrum-checkbox-emphasized-color-focus: var(--spectrum-accent-color-1000); + --spectrum-checkbox-control-selected-color-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-checkbox-control-selected-color-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-checkbox-control-selected-color-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-checkbox-control-selected-color-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-checkbox-font-size: var(--spectrum-font-size-100); + --spectrum-checkbox-line-height: var(--spectrum-line-height-100); + --spectrum-checkbox-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-checkbox-height: var(--spectrum-component-height-100); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-medium); + --spectrum-checkbox-control-corner-radius: var(--spectrum-corner-radius-75); + --spectrum-checkbox-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-checkbox-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-checkbox-border-width: var(--spectrum-border-width-200); + --spectrum-checkbox-selected-border-width: calc(var(--spectrum-checkbox-control-size) / 2); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-checkbox-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Checkbox--sizeS { + --spectrum-checkbox-font-size: var(--spectrum-font-size-75); + --spectrum-checkbox-height: var(--spectrum-component-height-75); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-small); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-75); +} +.spectrum-Checkbox--sizeM { + --spectrum-checkbox-font-size: var(--spectrum-font-size-100); + --spectrum-checkbox-height: var(--spectrum-component-height-100); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-medium); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-100); +} +.spectrum-Checkbox--sizeL { + --spectrum-checkbox-font-size: var(--spectrum-font-size-200); + --spectrum-checkbox-height: var(--spectrum-component-height-200); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-large); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-200); +} +.spectrum-Checkbox--sizeXL { + --spectrum-checkbox-font-size: var(--spectrum-font-size-300); + --spectrum-checkbox-height: var(--spectrum-component-height-300); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-extra-large); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-300); +} +.spectrum-Checkbox { + color: var(--highcontrast-checkbox-content-color-default, var(--mod-checkbox-content-color-default, var(--spectrum-checkbox-content-color-default))); + display: inline-flex; + align-items: flex-start; + position: relative; + min-block-size: var(--mod-checkbox-height, var(--spectrum-checkbox-height)); + max-inline-size: 100%; + vertical-align: top; +} +.spectrum-Checkbox:active .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-down, var(--mod-checkbox-control-color-down, var(--spectrum-checkbox-control-color-down))); +} +.spectrum-Checkbox:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-down, var(--mod-checkbox-control-selected-color-down, var(--spectrum-checkbox-control-selected-color-down))); +} +.spectrum-Checkbox:active .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-down, var(--mod-checkbox-content-color-down, var(--spectrum-checkbox-content-color-down))); +} +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-default, var(--spectrum-checkbox-invalid-color-default))); +} +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); +} +.spectrum-Checkbox.is-readOnly { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); +} +.spectrum-Checkbox.is-readOnly:active .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-selected-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); +} +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + background-color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); +} +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label, +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label { + forced-color-adjust: none; + color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-content-color-default, var(--spectrum-checkbox-content-color-default))); +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-checkmark, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark { + display: none; +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark { + display: block; + transform: scale(1); + opacity: 1; +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-control-selected-color-focus, var(--spectrum-checkbox-control-selected-color-focus))); +} +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-default, var(--spectrum-checkbox-invalid-color-default))); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox--emphasized .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-emphasized-color-default, var(--spectrum-checkbox-emphasized-color-default))); +} +.spectrum-Checkbox--emphasized .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-emphasized-color-focus, var(--spectrum-checkbox-emphasized-color-focus))); +} +.spectrum-Checkbox--emphasized.is-invalid .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-focus, var(--spectrum-checkbox-invalid-color-focus))); +} +@media (hover: hover) { + .spectrum-Checkbox:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-color-hover, var(--spectrum-checkbox-control-color-hover))); + } + .spectrum-Checkbox:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-selected-color-hover, var(--spectrum-checkbox-control-selected-color-hover))); + } + .spectrum-Checkbox:hover .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-hover, var(--mod-checkbox-content-color-hover, var(--spectrum-checkbox-content-color-hover))); + } + .spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox.is-readOnly:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + } + .spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-selected-color-hover, var(--spectrum-checkbox-control-selected-color-hover))); + } + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-hover, var(--mod-checkbox-content-color-hover, var(--spectrum-checkbox-content-color-hover))); + } + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-emphasized-color-hover, var(--spectrum-checkbox-emphasized-color-hover))); + } + .spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-emphasized-color-hover, var(--spectrum-checkbox-emphasized-color-hover))); + } +} +.spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-emphasized-color-down, var(--spectrum-checkbox-emphasized-color-down))); +} +.spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-invalid-color-down, var(--spectrum-checkbox-invalid-color-down))); +} +.spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-focus, var(--mod-checkbox-control-color-focus, var(--spectrum-checkbox-control-color-focus))); +} +.spectrum-Checkbox-label { + text-align: start; + margin-inline-start: var(--mod-checkbox-text-to-control, var(--spectrum-checkbox-text-to-control)); + margin-block-start: var(--mod-checkbox-top-to-text, var(--spectrum-checkbox-top-to-text)); + font-size: var(--mod-checkbox-font-size, var(--spectrum-checkbox-font-size)); + transition: color var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; + line-height: var(--mod-checkbox-line-height, var(--spectrum-checkbox-line-height)); +} +.spectrum-Checkbox-label:lang(ja), +.spectrum-Checkbox-label:lang(ko), +.spectrum-Checkbox-label:lang(zh) { + line-height: var(--mod-checkbox-line-height-cjk, var(--spectrum-checkbox-line-height-cjk)); +} +.spectrum-Checkbox-input { + color: var(--mod-checkbox-control-color-default, var(--spectrum-checkbox-control-color-default)); + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; + overflow: visible; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + opacity: 0.0001; + z-index: 1; + cursor: pointer; +} +.spectrum-Checkbox-input:disabled { + cursor: default; +} +.spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + background-color: var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color)); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark { + transform: scale(1); + opacity: 1; +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-focus, var(--mod-checkbox-control-color-focus, var(--spectrum-checkbox-control-color-focus))); +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after { + forced-color-adjust: none; + box-shadow: 0 0 0 var(--mod-checkbox-focus-indicator-thinkness, var(--spectrum-checkbox-focus-indicator-thickness)) var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + margin: calc(var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap)) * -1); +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-focus, var(--mod-checkbox-content-color-focus, var(--spectrum-checkbox-content-color-focus))); +} +.spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-control-selected-color-focus, var(--spectrum-checkbox-control-selected-color-focus))); +} +.spectrum-Checkbox-box { + display: flex; + align-items: center; + justify-content: center; + position: relative; + --spectrum-checkbox-spacing: calc(var(--mod-checkbox-height, var(--spectrum-checkbox-height)) - var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size))); + margin: calc(var(--mod-checkbox-spacing, var(--spectrum-checkbox-spacing)) / 2) 0; + flex-grow: 0; + flex-shrink: 0; +} +.spectrum-Checkbox-box, +.spectrum-Checkbox-box:before { + box-sizing: border-box; + inline-size: var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size)); + block-size: var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size)); +} +.spectrum-Checkbox-box:before { + forced-color-adjust: none; + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-color-default, var(--spectrum-checkbox-control-color-default))); + display: block; + z-index: 0; + content: ""; + position: absolute; + border-radius: var(--mod-checkbox-control-corner-radius, var(--spectrum-checkbox-control-corner-radius)); + border-width: var(--mod-checkbox-border-width, var(--spectrum-checkbox-border-width)); + border-style: solid; + transition: + border var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out, + box-shadow var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; +} +.spectrum-Checkbox-box:after { + border-radius: calc(var(--mod-checkbox-control-corner-radius, var(--spectrum-checkbox-control-corner-radius)) + var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap))); + content: ""; + display: block; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-end: 0; + inset-block-start: 0; + margin: var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap)); + transition: + box-shadow var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-out, + margin var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-out; + transform: translate(0); +} +.spectrum-Checkbox .spectrum-Checkbox-checkmark, +.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark { + color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); + opacity: 0; + transform: scale(0); + transition: + opacity var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out, + transform var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; +} +.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark { + display: none; +} +.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before, +.spectrum-Checkbox .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-disabled-color-default, var(--mod-checkbox-control-color-disabled, var(--spectrum-checkbox-control-color-disabled))); + background-color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); +} +.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label, +.spectrum-Checkbox .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label { + forced-color-adjust: none; + color: var(--highcontrast-checkbox-disabled-color-default, var(--mod-checkbox-content-color-disabled, var(--spectrum-checkbox-content-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box { + forced-color-adjust: none; + outline-color: var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + outline-style: auto; + outline-offset: var(--highcontrast-checkbox-focus-indicator-gap, var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap))); + outline-width: var(--mod-focus-indicator-thickness, var(--spectrum-focus-indicator-thickness)); + } + .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after { + box-shadow: 0 0 0 0 var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + } + .spectrum-Checkbox { + --highcontrast-checkbox-content-color-default: CanvasText; + --highcontrast-checkbox-content-color-hover: CanvasText; + --highcontrast-checkbox-content-color-down: CanvasText; + --highcontrast-checkbox-content-color-focus: CanvasText; + --highcontrast-checkbox-background-color-default: Canvas; + --highcontrast-checkbox-color-default: ButtonText; + --highcontrast-checkbox-color-hover: ButtonText; + --highcontrast-checkbox-color-focus: Highlight; + --highcontrast-checkbox-highlight-color-default: Highlight; + --highcontrast-checkbox-highlight-color-hover: Highlight; + --highcontrast-checkbox-highlight-color-down: Highlight; + --highcontrast-checkbox-highlight-color-focus: Highlight; + --highcontrast-checkbox-disabled-color-default: GrayText; + --highcontrast-checkbox-focus-indicator-color: CanvasText; + } +} +.spectrum-Checkbox { + --spectrum-checkbox-control-color-default: var(--system-spectrum-checkbox-control-color-default); + --spectrum-checkbox-control-color-hover: var(--system-spectrum-checkbox-control-color-hover); + --spectrum-checkbox-control-color-down: var(--system-spectrum-checkbox-control-color-down); + --spectrum-checkbox-control-color-focus: var(--system-spectrum-checkbox-control-color-focus); +} +/*# sourceMappingURL=components/checkbox/index.css.map */ diff --git a/components/checkbox/index.css b/components/checkbox/index.css new file mode 100644 index 0000000000..11f5bf1a48 --- /dev/null +++ b/components/checkbox/index.css @@ -0,0 +1,379 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-600); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-700); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-700); +} +.spectrum--express { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-900); +} +.spectrum-Checkbox { + --spectrum-checkbox-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-checkbox-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-checkbox-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-checkbox-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-checkbox-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-checkbox-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-checkbox-control-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-checkbox-checkmark-color: var(--spectrum-gray-75); + --spectrum-checkbox-invalid-color-default: var(--spectrum-negative-color-900); + --spectrum-checkbox-invalid-color-hover: var(--spectrum-negative-color-1000); + --spectrum-checkbox-invalid-color-down: var(--spectrum-negative-color-1100); + --spectrum-checkbox-invalid-color-focus: var(--spectrum-negative-color-1000); + --spectrum-checkbox-emphasized-color-default: var(--spectrum-accent-color-900); + --spectrum-checkbox-emphasized-color-hover: var(--spectrum-accent-color-1000); + --spectrum-checkbox-emphasized-color-down: var(--spectrum-accent-color-1100); + --spectrum-checkbox-emphasized-color-focus: var(--spectrum-accent-color-1000); + --spectrum-checkbox-control-selected-color-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-checkbox-control-selected-color-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-checkbox-control-selected-color-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-checkbox-control-selected-color-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-checkbox-font-size: var(--spectrum-font-size-100); + --spectrum-checkbox-line-height: var(--spectrum-line-height-100); + --spectrum-checkbox-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-checkbox-height: var(--spectrum-component-height-100); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-medium); + --spectrum-checkbox-control-corner-radius: var(--spectrum-corner-radius-75); + --spectrum-checkbox-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-checkbox-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-checkbox-border-width: var(--spectrum-border-width-200); + --spectrum-checkbox-selected-border-width: calc(var(--spectrum-checkbox-control-size) / 2); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-checkbox-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Checkbox--sizeS { + --spectrum-checkbox-font-size: var(--spectrum-font-size-75); + --spectrum-checkbox-height: var(--spectrum-component-height-75); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-small); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-75); +} +.spectrum-Checkbox--sizeM { + --spectrum-checkbox-font-size: var(--spectrum-font-size-100); + --spectrum-checkbox-height: var(--spectrum-component-height-100); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-medium); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-100); +} +.spectrum-Checkbox--sizeL { + --spectrum-checkbox-font-size: var(--spectrum-font-size-200); + --spectrum-checkbox-height: var(--spectrum-component-height-200); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-large); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-200); +} +.spectrum-Checkbox--sizeXL { + --spectrum-checkbox-font-size: var(--spectrum-font-size-300); + --spectrum-checkbox-height: var(--spectrum-component-height-300); + --spectrum-checkbox-control-size: var(--spectrum-checkbox-control-size-extra-large); + --spectrum-checkbox-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-checkbox-text-to-control: var(--spectrum-text-to-control-300); +} +.spectrum-Checkbox { + color: var(--highcontrast-checkbox-content-color-default, var(--mod-checkbox-content-color-default, var(--spectrum-checkbox-content-color-default))); + display: inline-flex; + align-items: flex-start; + position: relative; + min-block-size: var(--mod-checkbox-height, var(--spectrum-checkbox-height)); + max-inline-size: 100%; + vertical-align: top; +} +.spectrum-Checkbox:active .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-down, var(--mod-checkbox-control-color-down, var(--spectrum-checkbox-control-color-down))); +} +.spectrum-Checkbox:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-down, var(--mod-checkbox-control-selected-color-down, var(--spectrum-checkbox-control-selected-color-down))); +} +.spectrum-Checkbox:active .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-down, var(--mod-checkbox-content-color-down, var(--spectrum-checkbox-content-color-down))); +} +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-default, var(--spectrum-checkbox-invalid-color-default))); +} +.spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); +} +.spectrum-Checkbox.is-readOnly { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); +} +.spectrum-Checkbox.is-readOnly:active .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-selected-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); +} +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + background-color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); +} +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label, +.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label { + forced-color-adjust: none; + color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-content-color-default, var(--spectrum-checkbox-content-color-default))); +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-checkmark, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark { + display: none; +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark, +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark { + display: block; + transform: scale(1); + opacity: 1; +} +.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-control-selected-color-focus, var(--spectrum-checkbox-control-selected-color-focus))); +} +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-default, var(--spectrum-checkbox-invalid-color-default))); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox--emphasized .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-emphasized-color-default, var(--spectrum-checkbox-emphasized-color-default))); +} +.spectrum-Checkbox--emphasized .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-emphasized-color-focus, var(--spectrum-checkbox-emphasized-color-focus))); +} +.spectrum-Checkbox--emphasized.is-invalid .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-focus, var(--spectrum-checkbox-invalid-color-focus))); +} +@media (hover: hover) { + .spectrum-Checkbox:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-color-hover, var(--spectrum-checkbox-control-color-hover))); + } + .spectrum-Checkbox:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-selected-color-hover, var(--spectrum-checkbox-control-selected-color-hover))); + } + .spectrum-Checkbox:hover .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-hover, var(--mod-checkbox-content-color-hover, var(--spectrum-checkbox-content-color-hover))); + } + .spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox.is-readOnly:hover .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + } + .spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-control-selected-color-hover, var(--spectrum-checkbox-control-selected-color-hover))); + } + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-hover, var(--mod-checkbox-content-color-hover, var(--spectrum-checkbox-content-color-hover))); + } + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-emphasized-color-hover, var(--spectrum-checkbox-emphasized-color-hover))); + } + .spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-hover, var(--mod-checkbox-invalid-color-hover, var(--spectrum-checkbox-invalid-color-hover))); + } + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, + .spectrum-Checkbox--emphasized:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-hover, var(--mod-checkbox-emphasized-color-hover, var(--spectrum-checkbox-emphasized-color-hover))); + } +} +.spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-emphasized-color-down, var(--spectrum-checkbox-emphasized-color-down))); +} +.spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-invalid-color-down, var(--spectrum-checkbox-invalid-color-down))); +} +.spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-box:before, +.spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-focus, var(--mod-checkbox-control-color-focus, var(--spectrum-checkbox-control-color-focus))); +} +.spectrum-Checkbox-label { + text-align: start; + margin-inline-start: var(--mod-checkbox-text-to-control, var(--spectrum-checkbox-text-to-control)); + margin-block-start: var(--mod-checkbox-top-to-text, var(--spectrum-checkbox-top-to-text)); + font-size: var(--mod-checkbox-font-size, var(--spectrum-checkbox-font-size)); + transition: color var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; + line-height: var(--mod-checkbox-line-height, var(--spectrum-checkbox-line-height)); +} +.spectrum-Checkbox-label:lang(ja), +.spectrum-Checkbox-label:lang(ko), +.spectrum-Checkbox-label:lang(zh) { + line-height: var(--mod-checkbox-line-height-cjk, var(--spectrum-checkbox-line-height-cjk)); +} +.spectrum-Checkbox-input { + color: var(--mod-checkbox-control-color-default, var(--spectrum-checkbox-control-color-default)); + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; + overflow: visible; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + opacity: 0.0001; + z-index: 1; + cursor: pointer; +} +.spectrum-Checkbox-input:disabled { + cursor: default; +} +.spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-default, var(--mod-checkbox-control-selected-color-default, var(--spectrum-checkbox-control-selected-color-default))); + background-color: var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color)); + border-width: var(--mod-checkbox-selected-border-width, var(--spectrum-checkbox-selected-border-width)); +} +.spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark { + transform: scale(1); + opacity: 1; +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-color-focus, var(--mod-checkbox-control-color-focus, var(--spectrum-checkbox-control-color-focus))); +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after { + forced-color-adjust: none; + box-shadow: 0 0 0 var(--mod-checkbox-focus-indicator-thinkness, var(--spectrum-checkbox-focus-indicator-thickness)) var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + margin: calc(var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap)) * -1); +} +.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-label { + color: var(--highcontrast-checkbox-content-color-focus, var(--mod-checkbox-content-color-focus, var(--spectrum-checkbox-content-color-focus))); +} +.spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-highlight-color-focus, var(--mod-checkbox-control-selected-color-focus, var(--spectrum-checkbox-control-selected-color-focus))); +} +.spectrum-Checkbox-box { + display: flex; + align-items: center; + justify-content: center; + position: relative; + --spectrum-checkbox-spacing: calc(var(--mod-checkbox-height, var(--spectrum-checkbox-height)) - var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size))); + margin: calc(var(--mod-checkbox-spacing, var(--spectrum-checkbox-spacing)) / 2) 0; + flex-grow: 0; + flex-shrink: 0; +} +.spectrum-Checkbox-box, +.spectrum-Checkbox-box:before { + box-sizing: border-box; + inline-size: var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size)); + block-size: var(--mod-checkbox-control-size, var(--spectrum-checkbox-control-size)); +} +.spectrum-Checkbox-box:before { + forced-color-adjust: none; + border-color: var(--highcontrast-checkbox-color-default, var(--mod-checkbox-control-color-default, var(--spectrum-checkbox-control-color-default))); + display: block; + z-index: 0; + content: ""; + position: absolute; + border-radius: var(--mod-checkbox-control-corner-radius, var(--spectrum-checkbox-control-corner-radius)); + border-width: var(--mod-checkbox-border-width, var(--spectrum-checkbox-border-width)); + border-style: solid; + transition: + border var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out, + box-shadow var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; +} +.spectrum-Checkbox-box:after { + border-radius: calc(var(--mod-checkbox-control-corner-radius, var(--spectrum-checkbox-control-corner-radius)) + var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap))); + content: ""; + display: block; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-end: 0; + inset-block-start: 0; + margin: var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap)); + transition: + box-shadow var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-out, + margin var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-out; + transform: translate(0); +} +.spectrum-Checkbox .spectrum-Checkbox-checkmark, +.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark { + color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); + opacity: 0; + transform: scale(0); + transition: + opacity var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out, + transform var(--mod-checkbox-animation-duration, var(--spectrum-checkbox-animation-duration)) ease-in-out; +} +.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark { + display: none; +} +.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before, +.spectrum-Checkbox .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before { + border-color: var(--highcontrast-checkbox-disabled-color-default, var(--mod-checkbox-control-color-disabled, var(--spectrum-checkbox-control-color-disabled))); + background-color: var(--highcontrast-checkbox-background-color-default, var(--mod-checkbox-checkmark-color, var(--spectrum-checkbox-checkmark-color))); +} +.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label, +.spectrum-Checkbox .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label { + forced-color-adjust: none; + color: var(--highcontrast-checkbox-disabled-color-default, var(--mod-checkbox-content-color-disabled, var(--spectrum-checkbox-content-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box { + forced-color-adjust: none; + outline-color: var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + outline-style: auto; + outline-offset: var(--highcontrast-checkbox-focus-indicator-gap, var(--mod-checkbox-focus-indicator-gap, var(--spectrum-checkbox-focus-indicator-gap))); + outline-width: var(--mod-focus-indicator-thickness, var(--spectrum-focus-indicator-thickness)); + } + .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after { + box-shadow: 0 0 0 0 var(--highcontrast-checkbox-focus-indicator-color, var(--mod-checkbox-focus-indicator-color, var(--spectrum-checkbox-focus-indicator-color))); + } + .spectrum-Checkbox { + --highcontrast-checkbox-content-color-default: CanvasText; + --highcontrast-checkbox-content-color-hover: CanvasText; + --highcontrast-checkbox-content-color-down: CanvasText; + --highcontrast-checkbox-content-color-focus: CanvasText; + --highcontrast-checkbox-background-color-default: Canvas; + --highcontrast-checkbox-color-default: ButtonText; + --highcontrast-checkbox-color-hover: ButtonText; + --highcontrast-checkbox-color-focus: Highlight; + --highcontrast-checkbox-highlight-color-default: Highlight; + --highcontrast-checkbox-highlight-color-hover: Highlight; + --highcontrast-checkbox-highlight-color-down: Highlight; + --highcontrast-checkbox-highlight-color-focus: Highlight; + --highcontrast-checkbox-disabled-color-default: GrayText; + --highcontrast-checkbox-focus-indicator-color: CanvasText; + } +} +.spectrum-Checkbox { + --spectrum-checkbox-control-color-default: var(--system-spectrum-checkbox-control-color-default); + --spectrum-checkbox-control-color-hover: var(--system-spectrum-checkbox-control-color-hover); + --spectrum-checkbox-control-color-down: var(--system-spectrum-checkbox-control-color-down); + --spectrum-checkbox-control-color-focus: var(--system-spectrum-checkbox-control-color-focus); +} +/*# sourceMappingURL=components/checkbox/index.css.map */ diff --git a/components/checkbox/metadata.json b/components/checkbox/metadata.json new file mode 100644 index 0000000000..534459f24a --- /dev/null +++ b/components/checkbox/metadata.json @@ -0,0 +1,213 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Checkbox", + ".spectrum-Checkbox .spectrum-Checkbox-checkmark,\n.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark", + ".spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before,\n.spectrum-Checkbox .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label,\n.spectrum-Checkbox .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label", + ".spectrum-Checkbox .spectrum-Checkbox-partialCheckmark", + ".spectrum-Checkbox--emphasized .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before,\n.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-box:before,\n.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--emphasized .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before,\n.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-box:before,\n.spectrum-Checkbox--emphasized.is-indeterminate:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before,\n.spectrum-Checkbox--emphasized:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before,\n\t.spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before,\n\t.spectrum-Checkbox--emphasized:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--emphasized.is-invalid .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before,\n\t.spectrum-Checkbox--emphasized.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before,\n\t.spectrum-Checkbox--emphasized.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-box:before,\n.spectrum-Checkbox--emphasized.is-invalid:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-box:before,\n.spectrum-Checkbox--emphasized:focus-visible .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox--sizeL", + ".spectrum-Checkbox--sizeM", + ".spectrum-Checkbox--sizeS", + ".spectrum-Checkbox--sizeXL", + ".spectrum-Checkbox-box", + ".spectrum-Checkbox-box,\n.spectrum-Checkbox-box:before", + ".spectrum-Checkbox-box:after", + ".spectrum-Checkbox-box:before", + ".spectrum-Checkbox-input", + ".spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark", + ".spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox-input:disabled", + ".spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box", + ".spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after", + ".spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-label", + ".spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox-label", + ".spectrum-Checkbox-label:lang(ja),\n.spectrum-Checkbox-label:lang(ko),\n.spectrum-Checkbox-label:lang(zh)", + ".spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-checkmark,\n.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark", + ".spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark,\n.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark", + ".spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box:before,\n.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-box:before,\n\t.spectrum-Checkbox.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-invalid .spectrum-Checkbox-box:before,\n.spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-invalid .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before,\n.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-box:before,\n.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before,\n\t.spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-label", + ".spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-box:before,\n\t.spectrum-Checkbox.is-invalid:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-readOnly", + ".spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before,\n.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label,\n.spectrum-Checkbox.is-readOnly .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label", + ".spectrum-Checkbox.is-readOnly:active .spectrum-Checkbox-box:before", + ".spectrum-Checkbox.is-readOnly:hover .spectrum-Checkbox-box:before", + ".spectrum-Checkbox:active .spectrum-Checkbox-box:before", + ".spectrum-Checkbox:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox:active .spectrum-Checkbox-label", + ".spectrum-Checkbox:hover .spectrum-Checkbox-box:before", + ".spectrum-Checkbox:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before", + ".spectrum-Checkbox:hover .spectrum-Checkbox-label" + ], + "mods": [ + "--mod-checkbox-animation-duration", + "--mod-checkbox-border-width", + "--mod-checkbox-checkmark-color", + "--mod-checkbox-content-color-default", + "--mod-checkbox-content-color-disabled", + "--mod-checkbox-content-color-down", + "--mod-checkbox-content-color-focus", + "--mod-checkbox-content-color-hover", + "--mod-checkbox-control-color-default", + "--mod-checkbox-control-color-disabled", + "--mod-checkbox-control-color-down", + "--mod-checkbox-control-color-focus", + "--mod-checkbox-control-color-hover", + "--mod-checkbox-control-corner-radius", + "--mod-checkbox-control-invalid-color-down", + "--mod-checkbox-control-selected-color-default", + "--mod-checkbox-control-selected-color-down", + "--mod-checkbox-control-selected-color-focus", + "--mod-checkbox-control-selected-color-hover", + "--mod-checkbox-control-size", + "--mod-checkbox-emphasized-color-default", + "--mod-checkbox-emphasized-color-down", + "--mod-checkbox-emphasized-color-focus", + "--mod-checkbox-emphasized-color-hover", + "--mod-checkbox-focus-indicator-color", + "--mod-checkbox-focus-indicator-gap", + "--mod-checkbox-focus-indicator-thinkness", + "--mod-checkbox-font-size", + "--mod-checkbox-height", + "--mod-checkbox-invalid-color-default", + "--mod-checkbox-invalid-color-focus", + "--mod-checkbox-invalid-color-hover", + "--mod-checkbox-line-height", + "--mod-checkbox-line-height-cjk", + "--mod-checkbox-selected-border-width", + "--mod-checkbox-spacing", + "--mod-checkbox-text-to-control", + "--mod-checkbox-top-to-text", + "--mod-focus-indicator-thickness" + ], + "spectrum": [ + "--spectrum-accent-color-1000", + "--spectrum-accent-color-1100", + "--spectrum-accent-color-900", + "--spectrum-animation-duration-100", + "--spectrum-border-width-200", + "--spectrum-checkbox-animation-duration", + "--spectrum-checkbox-border-width", + "--spectrum-checkbox-checkmark-color", + "--spectrum-checkbox-content-color-default", + "--spectrum-checkbox-content-color-disabled", + "--spectrum-checkbox-content-color-down", + "--spectrum-checkbox-content-color-focus", + "--spectrum-checkbox-content-color-hover", + "--spectrum-checkbox-control-color-default", + "--spectrum-checkbox-control-color-disabled", + "--spectrum-checkbox-control-color-down", + "--spectrum-checkbox-control-color-focus", + "--spectrum-checkbox-control-color-hover", + "--spectrum-checkbox-control-corner-radius", + "--spectrum-checkbox-control-selected-color-default", + "--spectrum-checkbox-control-selected-color-down", + "--spectrum-checkbox-control-selected-color-focus", + "--spectrum-checkbox-control-selected-color-hover", + "--spectrum-checkbox-control-size", + "--spectrum-checkbox-control-size-extra-large", + "--spectrum-checkbox-control-size-large", + "--spectrum-checkbox-control-size-medium", + "--spectrum-checkbox-control-size-small", + "--spectrum-checkbox-emphasized-color-default", + "--spectrum-checkbox-emphasized-color-down", + "--spectrum-checkbox-emphasized-color-focus", + "--spectrum-checkbox-emphasized-color-hover", + "--spectrum-checkbox-focus-indicator-color", + "--spectrum-checkbox-focus-indicator-gap", + "--spectrum-checkbox-focus-indicator-thickness", + "--spectrum-checkbox-font-size", + "--spectrum-checkbox-height", + "--spectrum-checkbox-invalid-color-default", + "--spectrum-checkbox-invalid-color-down", + "--spectrum-checkbox-invalid-color-focus", + "--spectrum-checkbox-invalid-color-hover", + "--spectrum-checkbox-line-height", + "--spectrum-checkbox-line-height-cjk", + "--spectrum-checkbox-selected-border-width", + "--spectrum-checkbox-spacing", + "--spectrum-checkbox-text-to-control", + "--spectrum-checkbox-top-to-text", + "--spectrum-cjk-line-height-100", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-corner-radius-75", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-75", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-line-height-100", + "--spectrum-negative-color-1000", + "--spectrum-negative-color-1100", + "--spectrum-negative-color-900", + "--spectrum-neutral-background-color-selected-default", + "--spectrum-neutral-background-color-selected-down", + "--spectrum-neutral-background-color-selected-hover", + "--spectrum-neutral-background-color-selected-key-focus", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-text-to-control-100", + "--spectrum-text-to-control-200", + "--spectrum-text-to-control-300", + "--spectrum-text-to-control-75" + ], + "system": [ + "--system-spectrum-checkbox-control-color-default", + "--system-spectrum-checkbox-control-color-down", + "--system-spectrum-checkbox-control-color-focus", + "--system-spectrum-checkbox-control-color-hover" + ], + "a11y": [ + "--highcontrast-checkbox-background-color-default", + "--highcontrast-checkbox-color-default", + "--highcontrast-checkbox-color-focus", + "--highcontrast-checkbox-color-hover", + "--highcontrast-checkbox-content-color-default", + "--highcontrast-checkbox-content-color-down", + "--highcontrast-checkbox-content-color-focus", + "--highcontrast-checkbox-content-color-hover", + "--highcontrast-checkbox-disabled-color-default", + "--highcontrast-checkbox-focus-indicator-color", + "--highcontrast-checkbox-focus-indicator-gap", + "--highcontrast-checkbox-highlight-color-default", + "--highcontrast-checkbox-highlight-color-down", + "--highcontrast-checkbox-highlight-color-focus", + "--highcontrast-checkbox-highlight-color-hover", + "--highcontrast-checkbox-selected-color-default" + ] +} diff --git a/components/checkbox/package.json b/components/checkbox/package.json new file mode 100644 index 0000000000..271d640872 --- /dev/null +++ b/components/checkbox/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/checkbox", + "version": "9.1.1", + "description": "The Spectrum CSS checkbox component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/checkbox", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/checkbox" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/checkbox/template.js b/components/checkbox/template.js new file mode 100644 index 0000000000..6ebadc68cc --- /dev/null +++ b/components/checkbox/template.js @@ -0,0 +1,92 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Checkbox", + size = "m", + label, + isChecked = false, + isEmphasized = false, + isIndeterminate = false, + isDisabled = false, + isInvalid = false, + isReadOnly = false, + title, + value, + id, + ariaLabelledby, + customStyles = {}, + customClasses = [], +} = {}, context = {}) => { + const { updateArgs } = context; + + let iconSize = "75"; + switch (size) { + case "s": + iconSize = "50"; + break; + case "l": + iconSize = "100"; + break; + case "xl": + iconSize = "200"; + break; + default: + iconSize = "75"; + } + + return html` + + `; +}; diff --git a/components/checkbox/themes/express.css b/components/checkbox/themes/express.css new file mode 100644 index 0000000000..b697e194c6 --- /dev/null +++ b/components/checkbox/themes/express.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-900); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-900); +} +/*# sourceMappingURL=components/checkbox/themes/express.css.map */ diff --git a/components/checkbox/themes/spectrum.css b/components/checkbox/themes/spectrum.css new file mode 100644 index 0000000000..e72cae4e9b --- /dev/null +++ b/components/checkbox/themes/spectrum.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-checkbox-control-color-default: var(--spectrum-gray-600); + --system-spectrum-checkbox-control-color-hover: var(--spectrum-gray-700); + --system-spectrum-checkbox-control-color-down: var(--spectrum-gray-800); + --system-spectrum-checkbox-control-color-focus: var(--spectrum-gray-700); +} +/*# sourceMappingURL=components/checkbox/themes/spectrum.css.map */ diff --git a/components/clearbutton/index-base.css b/components/clearbutton/index-base.css new file mode 100644 index 0000000000..6b0dd62970 --- /dev/null +++ b/components/clearbutton/index-base.css @@ -0,0 +1,122 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ClearButton { + --spectrum-clear-button-height: var(--spectrum-component-height-100); + --spectrum-clear-button-width: var(--spectrum-component-height-100); + --spectrum-clear-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-clear-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-clear-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-clear-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-clear-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeS { + --spectrum-clear-button-height: var(--spectrum-component-height-75); + --spectrum-clear-button-width: var(--spectrum-component-height-75); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeL { + --spectrum-clear-button-height: var(--spectrum-component-height-200); + --spectrum-clear-button-width: var(--spectrum-component-height-200); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeXL { + --spectrum-clear-button-height: var(--spectrum-component-height-300); + --spectrum-clear-button-width: var(--spectrum-component-height-300); +} +.spectrum-ClearButton.spectrum-ClearButton--quiet { + --mod-clear-button-background-color: var(--spectrum-clear-button-background-color-quiet, transparent); + --mod-clear-button-background-color-hover: var(--spectrum-clear-button-background-color-hover-quiet, transparent); + --mod-clear-button-background-color-down: var(--spectrum-clear-button-background-color-down-quiet, transparent); + --mod-clear-button-background-color-key-focus: var(--spectrum-clear-button-background-color-key-focus-quiet, transparent); +} +.spectrum-ClearButton.spectrum-ClearButton--overBackground { + --mod-clear-button-icon-color: var(--spectrum-clear-button-icon-color-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-hover: var(--spectrum-clear-button-icon-color-hover-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-down: var(--spectrum-clear-button-icon-color-down-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-key-focus: var(--spectrum-clear-button-icon-color-key-focus-over-background, var(--spectrum-white)); + --mod-clear-button-background-color: var(--spectrum-clear-button-background-color-over-background, transparent); + --mod-clear-button-background-color-hover: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-300)); + --mod-clear-button-background-color-down: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-400)); + --mod-clear-button-background-color-key-focus: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-300)); +} +.spectrum-ClearButton.is-disabled, +.spectrum-ClearButton:disabled { + --mod-clear-button-icon-color: var(--mod-clear-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-icon-color-hover: var(--spectrum-clear-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-icon-color-down: var(--spectrum-clear-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-background-color: var(--mod-clear-button-background-color-disabled, transparent); +} +.spectrum-ClearButton { + block-size: var(--mod-clear-button-height, var(--spectrum-clear-button-height)); + inline-size: var(--mod-clear-button-width, var(--spectrum-clear-button-width)); + border-radius: 100%; + cursor: pointer; + background-color: var(--mod-clear-button-background-color, transparent); + margin: 0; + padding: var(--mod-clear-button-padding, var(--spectrum-clear-button-padding)); + border: none; + color: var(--mod-clear-button-icon-color, var(--spectrum-clear-button-icon-color)); +} +.spectrum-ClearButton > .spectrum-Icon { + margin-block: 0; + margin-inline: auto; +} +@media (hover: hover) { + .spectrum-ClearButton:hover { + color: var(--highcontrast-clear-button-icon-color-hover, var(--mod-clear-button-icon-color-hover, var(--spectrum-clear-button-icon-color-hover))); + } + .spectrum-ClearButton:hover .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-hover, var(--spectrum-clear-button-background-color-hover)); + } +} +.spectrum-ClearButton:active { + color: var(--mod-clear-button-icon-color-down, var(--spectrum-clear-button-icon-color-down)); +} +.spectrum-ClearButton:active .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-down, var(--spectrum-clear-button-background-color-down)); +} +.js-focus-within .spectrum-ClearButton[focus-within], +.spectrum-ClearButton:focus-visible, +.spectrum-ClearButton:focus-within, +.spectrum-ClearButton[focus-within].js-focus-within { + color: var(--mod-clear-button-icon-color-key-focus, var(--spectrum-clear-button-icon-color-key-focus)); +} +.js-focus-within .spectrum-ClearButton[focus-within] .spectrum-ClearButton-fill, +.spectrum-ClearButton:focus-visible .spectrum-ClearButton-fill, +.spectrum-ClearButton:focus-within .spectrum-ClearButton-fill, +.spectrum-ClearButton[focus-within].js-focus-within .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-key-focus, var(--spectrum-clear-button-background-color-key-focus)); +} +.spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color, var(--spectrum-clear-button-background-color)); + inline-size: 100%; + block-size: 100%; + border-radius: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.spectrum-ClearButton--overBackground:focus-visible { + outline: none; +} +@media (forced-colors: active) { + .spectrum-ClearButton:not(:disabled) { + --highcontrast-clear-button-icon-color-hover: Highlight; + } +} +.spectrum-ClearButton { + --spectrum-clear-button-background-color: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color); + --spectrum-clear-button-background-color-hover: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-hover); + --spectrum-clear-button-background-color-down: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-down); + --spectrum-clear-button-background-color-key-focus: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus); +} +/*# sourceMappingURL=components/clearbutton/index.css.map */ diff --git a/components/clearbutton/index-theme.css b/components/clearbutton/index-theme.css new file mode 100644 index 0000000000..dbb5e557b8 --- /dev/null +++ b/components/clearbutton/index-theme.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: transparent; +} +.spectrum--express { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: var(--spectrum-gray-200); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: var(--spectrum-gray-300); +} +/*# sourceMappingURL=components/clearbutton/themes/express.css.map */ diff --git a/components/clearbutton/index-vars.css b/components/clearbutton/index-vars.css new file mode 100644 index 0000000000..e82cd14703 --- /dev/null +++ b/components/clearbutton/index-vars.css @@ -0,0 +1,134 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: transparent; +} +.spectrum--express { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: var(--spectrum-gray-200); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: var(--spectrum-gray-300); +} +.spectrum-ClearButton { + --spectrum-clear-button-height: var(--spectrum-component-height-100); + --spectrum-clear-button-width: var(--spectrum-component-height-100); + --spectrum-clear-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-clear-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-clear-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-clear-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-clear-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeS { + --spectrum-clear-button-height: var(--spectrum-component-height-75); + --spectrum-clear-button-width: var(--spectrum-component-height-75); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeL { + --spectrum-clear-button-height: var(--spectrum-component-height-200); + --spectrum-clear-button-width: var(--spectrum-component-height-200); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeXL { + --spectrum-clear-button-height: var(--spectrum-component-height-300); + --spectrum-clear-button-width: var(--spectrum-component-height-300); +} +.spectrum-ClearButton.spectrum-ClearButton--quiet { + --mod-clear-button-background-color: var(--spectrum-clear-button-background-color-quiet, transparent); + --mod-clear-button-background-color-hover: var(--spectrum-clear-button-background-color-hover-quiet, transparent); + --mod-clear-button-background-color-down: var(--spectrum-clear-button-background-color-down-quiet, transparent); + --mod-clear-button-background-color-key-focus: var(--spectrum-clear-button-background-color-key-focus-quiet, transparent); +} +.spectrum-ClearButton.spectrum-ClearButton--overBackground { + --mod-clear-button-icon-color: var(--spectrum-clear-button-icon-color-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-hover: var(--spectrum-clear-button-icon-color-hover-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-down: var(--spectrum-clear-button-icon-color-down-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-key-focus: var(--spectrum-clear-button-icon-color-key-focus-over-background, var(--spectrum-white)); + --mod-clear-button-background-color: var(--spectrum-clear-button-background-color-over-background, transparent); + --mod-clear-button-background-color-hover: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-300)); + --mod-clear-button-background-color-down: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-400)); + --mod-clear-button-background-color-key-focus: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-300)); +} +.spectrum-ClearButton.is-disabled, +.spectrum-ClearButton:disabled { + --mod-clear-button-icon-color: var(--mod-clear-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-icon-color-hover: var(--spectrum-clear-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-icon-color-down: var(--spectrum-clear-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-background-color: var(--mod-clear-button-background-color-disabled, transparent); +} +.spectrum-ClearButton { + block-size: var(--mod-clear-button-height, var(--spectrum-clear-button-height)); + inline-size: var(--mod-clear-button-width, var(--spectrum-clear-button-width)); + border-radius: 100%; + cursor: pointer; + background-color: var(--mod-clear-button-background-color, transparent); + margin: 0; + padding: var(--mod-clear-button-padding, var(--spectrum-clear-button-padding)); + border: none; + color: var(--mod-clear-button-icon-color, var(--spectrum-clear-button-icon-color)); +} +.spectrum-ClearButton > .spectrum-Icon { + margin-block: 0; + margin-inline: auto; +} +@media (hover: hover) { + .spectrum-ClearButton:hover { + color: var(--highcontrast-clear-button-icon-color-hover, var(--mod-clear-button-icon-color-hover, var(--spectrum-clear-button-icon-color-hover))); + } + .spectrum-ClearButton:hover .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-hover, var(--spectrum-clear-button-background-color-hover)); + } +} +.spectrum-ClearButton:active { + color: var(--mod-clear-button-icon-color-down, var(--spectrum-clear-button-icon-color-down)); +} +.spectrum-ClearButton:active .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-down, var(--spectrum-clear-button-background-color-down)); +} +.js-focus-within .spectrum-ClearButton[focus-within], +.spectrum-ClearButton:focus-visible, +.spectrum-ClearButton:focus-within, +.spectrum-ClearButton[focus-within].js-focus-within { + color: var(--mod-clear-button-icon-color-key-focus, var(--spectrum-clear-button-icon-color-key-focus)); +} +.js-focus-within .spectrum-ClearButton[focus-within] .spectrum-ClearButton-fill, +.spectrum-ClearButton:focus-visible .spectrum-ClearButton-fill, +.spectrum-ClearButton:focus-within .spectrum-ClearButton-fill, +.spectrum-ClearButton[focus-within].js-focus-within .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-key-focus, var(--spectrum-clear-button-background-color-key-focus)); +} +.spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color, var(--spectrum-clear-button-background-color)); + inline-size: 100%; + block-size: 100%; + border-radius: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.spectrum-ClearButton--overBackground:focus-visible { + outline: none; +} +@media (forced-colors: active) { + .spectrum-ClearButton:not(:disabled) { + --highcontrast-clear-button-icon-color-hover: Highlight; + } +} +.spectrum-ClearButton { + --spectrum-clear-button-background-color: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color); + --spectrum-clear-button-background-color-hover: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-hover); + --spectrum-clear-button-background-color-down: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-down); + --spectrum-clear-button-background-color-key-focus: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus); +} +/*# sourceMappingURL=components/clearbutton/index.css.map */ diff --git a/components/clearbutton/index.css b/components/clearbutton/index.css new file mode 100644 index 0000000000..e82cd14703 --- /dev/null +++ b/components/clearbutton/index.css @@ -0,0 +1,134 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: transparent; +} +.spectrum--express { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: var(--spectrum-gray-200); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: var(--spectrum-gray-300); +} +.spectrum-ClearButton { + --spectrum-clear-button-height: var(--spectrum-component-height-100); + --spectrum-clear-button-width: var(--spectrum-component-height-100); + --spectrum-clear-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-clear-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-clear-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-clear-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-clear-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeS { + --spectrum-clear-button-height: var(--spectrum-component-height-75); + --spectrum-clear-button-width: var(--spectrum-component-height-75); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeL { + --spectrum-clear-button-height: var(--spectrum-component-height-200); + --spectrum-clear-button-width: var(--spectrum-component-height-200); +} +.spectrum-ClearButton.spectrum-ClearButton--sizeXL { + --spectrum-clear-button-height: var(--spectrum-component-height-300); + --spectrum-clear-button-width: var(--spectrum-component-height-300); +} +.spectrum-ClearButton.spectrum-ClearButton--quiet { + --mod-clear-button-background-color: var(--spectrum-clear-button-background-color-quiet, transparent); + --mod-clear-button-background-color-hover: var(--spectrum-clear-button-background-color-hover-quiet, transparent); + --mod-clear-button-background-color-down: var(--spectrum-clear-button-background-color-down-quiet, transparent); + --mod-clear-button-background-color-key-focus: var(--spectrum-clear-button-background-color-key-focus-quiet, transparent); +} +.spectrum-ClearButton.spectrum-ClearButton--overBackground { + --mod-clear-button-icon-color: var(--spectrum-clear-button-icon-color-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-hover: var(--spectrum-clear-button-icon-color-hover-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-down: var(--spectrum-clear-button-icon-color-down-over-background, var(--spectrum-white)); + --mod-clear-button-icon-color-key-focus: var(--spectrum-clear-button-icon-color-key-focus-over-background, var(--spectrum-white)); + --mod-clear-button-background-color: var(--spectrum-clear-button-background-color-over-background, transparent); + --mod-clear-button-background-color-hover: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-300)); + --mod-clear-button-background-color-down: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-400)); + --mod-clear-button-background-color-key-focus: var(--spectrum-clear-button-background-color-hover-over-background, var(--spectrum-transparent-white-300)); +} +.spectrum-ClearButton.is-disabled, +.spectrum-ClearButton:disabled { + --mod-clear-button-icon-color: var(--mod-clear-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-icon-color-hover: var(--spectrum-clear-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-icon-color-down: var(--spectrum-clear-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-clear-button-background-color: var(--mod-clear-button-background-color-disabled, transparent); +} +.spectrum-ClearButton { + block-size: var(--mod-clear-button-height, var(--spectrum-clear-button-height)); + inline-size: var(--mod-clear-button-width, var(--spectrum-clear-button-width)); + border-radius: 100%; + cursor: pointer; + background-color: var(--mod-clear-button-background-color, transparent); + margin: 0; + padding: var(--mod-clear-button-padding, var(--spectrum-clear-button-padding)); + border: none; + color: var(--mod-clear-button-icon-color, var(--spectrum-clear-button-icon-color)); +} +.spectrum-ClearButton > .spectrum-Icon { + margin-block: 0; + margin-inline: auto; +} +@media (hover: hover) { + .spectrum-ClearButton:hover { + color: var(--highcontrast-clear-button-icon-color-hover, var(--mod-clear-button-icon-color-hover, var(--spectrum-clear-button-icon-color-hover))); + } + .spectrum-ClearButton:hover .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-hover, var(--spectrum-clear-button-background-color-hover)); + } +} +.spectrum-ClearButton:active { + color: var(--mod-clear-button-icon-color-down, var(--spectrum-clear-button-icon-color-down)); +} +.spectrum-ClearButton:active .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-down, var(--spectrum-clear-button-background-color-down)); +} +.js-focus-within .spectrum-ClearButton[focus-within], +.spectrum-ClearButton:focus-visible, +.spectrum-ClearButton:focus-within, +.spectrum-ClearButton[focus-within].js-focus-within { + color: var(--mod-clear-button-icon-color-key-focus, var(--spectrum-clear-button-icon-color-key-focus)); +} +.js-focus-within .spectrum-ClearButton[focus-within] .spectrum-ClearButton-fill, +.spectrum-ClearButton:focus-visible .spectrum-ClearButton-fill, +.spectrum-ClearButton:focus-within .spectrum-ClearButton-fill, +.spectrum-ClearButton[focus-within].js-focus-within .spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color-key-focus, var(--spectrum-clear-button-background-color-key-focus)); +} +.spectrum-ClearButton-fill { + background-color: var(--mod-clear-button-background-color, var(--spectrum-clear-button-background-color)); + inline-size: 100%; + block-size: 100%; + border-radius: 100%; + display: flex; + align-items: center; + justify-content: center; +} +.spectrum-ClearButton--overBackground:focus-visible { + outline: none; +} +@media (forced-colors: active) { + .spectrum-ClearButton:not(:disabled) { + --highcontrast-clear-button-icon-color-hover: Highlight; + } +} +.spectrum-ClearButton { + --spectrum-clear-button-background-color: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color); + --spectrum-clear-button-background-color-hover: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-hover); + --spectrum-clear-button-background-color-down: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-down); + --spectrum-clear-button-background-color-key-focus: var(--system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus); +} +/*# sourceMappingURL=components/clearbutton/index.css.map */ diff --git a/components/clearbutton/metadata.json b/components/clearbutton/metadata.json new file mode 100644 index 0000000000..d4ea0c0985 --- /dev/null +++ b/components/clearbutton/metadata.json @@ -0,0 +1,86 @@ +{ + "selectors": [ + ".js-focus-within .spectrum-ClearButton[focus-within] .spectrum-ClearButton-fill,\n.spectrum-ClearButton:focus-visible .spectrum-ClearButton-fill,\n.spectrum-ClearButton:focus-within .spectrum-ClearButton-fill,\n.spectrum-ClearButton[focus-within].js-focus-within .spectrum-ClearButton-fill", + ".js-focus-within .spectrum-ClearButton[focus-within],\n.spectrum-ClearButton:focus-visible,\n.spectrum-ClearButton:focus-within,\n.spectrum-ClearButton[focus-within].js-focus-within", + ".spectrum", + ".spectrum--express", + ".spectrum-ClearButton", + ".spectrum-ClearButton > .spectrum-Icon", + ".spectrum-ClearButton--overBackground:focus-visible", + ".spectrum-ClearButton-fill", + ".spectrum-ClearButton.is-disabled,\n.spectrum-ClearButton:disabled", + ".spectrum-ClearButton.spectrum-ClearButton--overBackground", + ".spectrum-ClearButton.spectrum-ClearButton--quiet", + ".spectrum-ClearButton.spectrum-ClearButton--sizeL", + ".spectrum-ClearButton.spectrum-ClearButton--sizeS", + ".spectrum-ClearButton.spectrum-ClearButton--sizeXL", + ".spectrum-ClearButton:active", + ".spectrum-ClearButton:active .spectrum-ClearButton-fill", + ".spectrum-ClearButton:hover", + ".spectrum-ClearButton:hover .spectrum-ClearButton-fill", + ".spectrum-ClearButton:not(:disabled)" + ], + "mods": [ + "--mod-clear-button-background-color", + "--mod-clear-button-background-color-disabled", + "--mod-clear-button-background-color-down", + "--mod-clear-button-background-color-hover", + "--mod-clear-button-background-color-key-focus", + "--mod-clear-button-height", + "--mod-clear-button-icon-color", + "--mod-clear-button-icon-color-disabled", + "--mod-clear-button-icon-color-down", + "--mod-clear-button-icon-color-hover", + "--mod-clear-button-icon-color-key-focus", + "--mod-clear-button-padding", + "--mod-clear-button-width" + ], + "spectrum": [ + "--spectrum-clear-button-background-color", + "--spectrum-clear-button-background-color-down", + "--spectrum-clear-button-background-color-down-quiet", + "--spectrum-clear-button-background-color-hover", + "--spectrum-clear-button-background-color-hover-over-background", + "--spectrum-clear-button-background-color-hover-quiet", + "--spectrum-clear-button-background-color-key-focus", + "--spectrum-clear-button-background-color-key-focus-quiet", + "--spectrum-clear-button-background-color-over-background", + "--spectrum-clear-button-background-color-quiet", + "--spectrum-clear-button-height", + "--spectrum-clear-button-icon-color", + "--spectrum-clear-button-icon-color-down", + "--spectrum-clear-button-icon-color-down-disabled", + "--spectrum-clear-button-icon-color-down-over-background", + "--spectrum-clear-button-icon-color-hover", + "--spectrum-clear-button-icon-color-hover-disabled", + "--spectrum-clear-button-icon-color-hover-over-background", + "--spectrum-clear-button-icon-color-key-focus", + "--spectrum-clear-button-icon-color-key-focus-over-background", + "--spectrum-clear-button-icon-color-over-background", + "--spectrum-clear-button-padding", + "--spectrum-clear-button-width", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-disabled-content-color", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-in-field-button-edge-to-fill", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-transparent-white-300", + "--spectrum-transparent-white-400", + "--spectrum-white" + ], + "system": [ + "--system-spectrum-clearbutton-spectrum-clear-button-background-color", + "--system-spectrum-clearbutton-spectrum-clear-button-background-color-down", + "--system-spectrum-clearbutton-spectrum-clear-button-background-color-hover", + "--system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus" + ], + "a11y": ["--highcontrast-clear-button-icon-color-hover"] +} diff --git a/components/clearbutton/package.json b/components/clearbutton/package.json new file mode 100644 index 0000000000..89dc0fb4c6 --- /dev/null +++ b/components/clearbutton/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/clearbutton", + "version": "6.1.1", + "description": "The Spectrum CSS clearbutton component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/clearbutton", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/clearbutton" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/clearbutton/template.js b/components/clearbutton/template.js new file mode 100644 index 0000000000..bca745580e --- /dev/null +++ b/components/clearbutton/template.js @@ -0,0 +1,40 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ClearButton", + isDisabled = false, + size = "m", + staticColor, + id, + customClasses = [], + customStyles = {}, +}, context) => html` + +`; diff --git a/components/clearbutton/themes/express.css b/components/clearbutton/themes/express.css new file mode 100644 index 0000000000..3ce6e89239 --- /dev/null +++ b/components/clearbutton/themes/express.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: var(--spectrum-gray-200); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: var(--spectrum-gray-300); +} +/*# sourceMappingURL=components/clearbutton/themes/express.css.map */ diff --git a/components/clearbutton/themes/spectrum.css b/components/clearbutton/themes/spectrum.css new file mode 100644 index 0000000000..8d9868be46 --- /dev/null +++ b/components/clearbutton/themes/spectrum.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-clearbutton-spectrum-clear-button-background-color: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-hover: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-down: transparent; + --system-spectrum-clearbutton-spectrum-clear-button-background-color-key-focus: transparent; +} +/*# sourceMappingURL=components/clearbutton/themes/spectrum.css.map */ diff --git a/components/closebutton/index-base.css b/components/closebutton/index-base.css new file mode 100644 index 0000000000..34ec885a04 --- /dev/null +++ b/components/closebutton/index-base.css @@ -0,0 +1,269 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-CloseButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-CloseButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-CloseButton:focus { + outline: none; +} +.spectrum-CloseButton.is-disabled, +.spectrum-CloseButton:disabled { + cursor: default; +} +a.spectrum-CloseButton { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-CloseButton { + --spectrum-closebutton-size-300: 24px; + --spectrum-closebutton-size-400: 32px; + --spectrum-closebutton-size-500: 40px; + --spectrum-closebutton-size-600: 48px; + --spectrum-closebutton-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-closebutton-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-closebutton-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-closebutton-icon-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-closebutton-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-closebutton-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-closebutton-height: var(--spectrum-component-height-100); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Closebutton--sizeS { + --spectrum-closebutton-height: var(--spectrum-component-height-75); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-300); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-300); +} +.spectrum-Closebutton--sizeM { + --spectrum-closebutton-height: var(--spectrum-component-height-100); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-400); +} +.spectrum-Closebutton--sizeL { + --spectrum-closebutton-height: var(--spectrum-component-height-200); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-500); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-500); +} +.spectrum-Closebutton--sizeXL { + --spectrum-closebutton-height: var(--spectrum-component-height-300); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-600); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-600); +} +.spectrum-CloseButton--staticWhite { + --spectrum-closebutton-static-background-color-default: transparent; + --spectrum-closebutton-static-background-color-hover: var(--spectrum-transparent-white-300); + --spectrum-closebutton-static-background-color-down: var(--spectrum-transparent-white-400); + --spectrum-closebutton-static-background-color-focus: var(--spectrum-transparent-white-300); + --spectrum-closebutton-icon-color-default: var(--spectrum-white); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-static-white-content-color); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); +} +.spectrum-CloseButton--staticBlack { + --spectrum-closebutton-static-background-color-default: transparent; + --spectrum-closebutton-static-background-color-hover: var(--spectrum-transparent-black-300); + --spectrum-closebutton-static-background-color-down: var(--spectrum-transparent-black-400); + --spectrum-closebutton-static-background-color-focus: var(--spectrum-transparent-black-300); + --spectrum-closebutton-icon-color-default: var(--spectrum-black); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-static-black-content-color); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); +} +@media (forced-colors: active) { + .spectrum-CloseButton { + --highcontrast-closebutton-icon-color-disabled: GrayText; + --highcontrast-closebutton-icon-color-down: Highlight; + --highcontrast-closebutton-icon-color-hover: Highlight; + --highcontrast-closebutton-icon-color-focus: Highlight; + --highcontrast-closebutton-background-color-default: ButtonFace; + --highcontrast-closebutton-focus-indicator-color: ButtonText; + } + .spectrum-CloseButton:focus-visible:after { + forced-color-adjust: none; + margin: var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap)); + transition: + opacity var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-out, + margin var(--mod-closebutton-animation-duraction, var(--spectrum-closebutton-animation-duration)) ease-out; + } + .spectrum-CloseButton--staticBlack { + --highcontrast-closebutton-static-background-color-default: ButtonFace; + --highcontrast-closebutton-icon-color-default: Highlight; + --highcontrast-closebutton-icon-color-disabled: GrayText; + } + .spectrum-CloseButton--staticWhite { + --highcontrast-closebutton-static-background-color-default: ButtonFace; + --highcontrast-closebutton-icon-color-default: Highlight; + --highcontrast-closebutton-icon-color-disabled: Highlight; + } +} +.spectrum-CloseButton { + block-size: var(--mod-closebutton-height, var(--spectrum-closebutton-height)); + inline-size: var(--mod-closebutton-width, var(--spectrum-closebutton-width)); + position: relative; + color: inherit; + border-color: transparent; + border-radius: var(--mod-closebutton-border-radius, var(--spectrum-closebutton-border-radius)); + border-width: 0; + justify-content: center; + align-items: center; + flex-direction: row; + display: inline-flex; + padding: 0; + transition: border-color var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-in-out; + margin-inline: var(--mod-closebutton-margin-inline); + margin-block-start: var(--mod-closebutton-margin-top); + align-self: var(--mod-closebutton-align-self); +} +.spectrum-CloseButton:after { + pointer-events: none; + content: ""; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-end: 0; + inset-block-start: 0; + margin: calc(var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap)) * -1); + border-radius: calc(var(--mod-closebutton-size, var(--spectrum-closebutton-size)) + var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap))); + transition: box-shadow var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-in-out; +} +.spectrum-CloseButton:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-CloseButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-closebutton-focus-indicator-thickness, var(--spectrum-closebutton-focus-indicator-thickness)) var(--highcontrast-closebutton-focus-indicator-color, var(--mod-closebutton-focus-indicator-color, var(--spectrum-closebutton-focus-indicator-color))); +} +.spectrum-CloseButton:not(:disabled) { + background-color: var(--highcontrast-closebutton-background-color-default, var(--mod-closebutton-background-color-default, var(--spectrum-closebutton-background-color-default))); +} +.spectrum-CloseButton:not(:disabled):active { + background-color: var(--mod-closebutton-background-color-down, var(--spectrum-closebutton-background-color-down)); +} +.spectrum-CloseButton:not(:disabled):active .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-down, var(--mod-closebutton-icon-color-down, var(--spectrum-closebutton-icon-color-down))); +} +.spectrum-CloseButton.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton:not(:disabled):focus-visible { + background-color: var(--mod-closebutton-background-color-focus, var(--spectrum-closebutton-background-color-focus)); +} +.spectrum-CloseButton.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-focus, var(--mod-closebutton-icon-color-focus, var(--spectrum-closebutton-icon-color-focus))); +} +.spectrum-CloseButton:not(:disabled) .spectrum-CloseButton-UIIcon { + color: var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default)); +} +.spectrum-CloseButton.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton:not(:disabled):focus .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-focus, var(--mod-closebutton-icon-color-focus, var(--spectrum-closebutton-icon-color-focus))); +} +.spectrum-CloseButton:disabled { + background-color: var(--mod-closebutton-background-color-default, var(--spectrum-closebutton-background-color-default)); +} +.spectrum-CloseButton:disabled .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-disabled, var(--mod-closebutton-icon-color-disabled, var(--spectrum-closebutton-icon-color-disabled))); +} +.spectrum-CloseButton--staticBlack:not(:disabled), +.spectrum-CloseButton--staticWhite:not(:disabled) { + background-color: var(--highcontrast-closebutton-static-background-color-default, var(--mod-closebutton-static-background-color-default, var(--spectrum-closebutton-static-background-color-default))); +} +@media (hover: hover) { + .spectrum-CloseButton:not(:disabled):hover { + background-color: var(--mod-closebutton-background-color-hover, var(--spectrum-closebutton-background-color-hover)); + } + .spectrum-CloseButton:not(:disabled):hover .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-hover, var(--mod-closebutton-icon-color-hover, var(--spectrum-closebutton-icon-color-hover))); + } + .spectrum-CloseButton--staticBlack:not(:disabled):hover, + .spectrum-CloseButton--staticWhite:not(:disabled):hover { + background-color: var(--highcontrast-closebutton-static-background-color-hover, var(--mod-closebutton-static-background-color-hover, var(--spectrum-closebutton-static-background-color-hover))); + } + .spectrum-CloseButton--staticBlack:not(:disabled):hover .spectrum-CloseButton-UIIcon, + .spectrum-CloseButton--staticWhite:not(:disabled):hover .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); + } +} +.spectrum-CloseButton--staticBlack:not(:disabled):active, +.spectrum-CloseButton--staticWhite:not(:disabled):active { + background-color: var(--highcontrast-closebutton-static-background-color-down, var(--mod-closebutton-static-background-color-down, var(--spectrum-closebutton-static-background-color-down))); +} +.spectrum-CloseButton--staticBlack:not(:disabled):active .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):active .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); +} +.spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible, +.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible { + background-color: var(--highcontrast-closebutton-static-background-color-focus, var(--mod-closebutton-static-background-color-focus, var(--spectrum-closebutton-static-background-color-focus))); +} +.spectrum-CloseButton--staticBlack.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack:not(:disabled):focus .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):focus .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); +} +.spectrum-CloseButton--staticBlack:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled) .spectrum-CloseButton-UIIcon { + color: var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default)); +} +.spectrum-CloseButton--staticBlack:disabled .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:disabled .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-disabled, var(--mod-closebutton-icon-color-disabled, var(--spectrum-closebutton-icon-color-disabled))); +} +.spectrum-CloseButton-UIIcon { + margin: 0; +} +.spectrum-CloseButton { + --spectrum-closebutton-background-color-default: var(--system-spectrum-closebutton-background-color-default); + --spectrum-closebutton-background-color-hover: var(--system-spectrum-closebutton-background-color-hover); + --spectrum-closebutton-background-color-down: var(--system-spectrum-closebutton-background-color-down); + --spectrum-closebutton-background-color-focus: var(--system-spectrum-closebutton-background-color-focus); +} +/*# sourceMappingURL=components/closebutton/index.css.map */ diff --git a/components/closebutton/index-theme.css b/components/closebutton/index-theme.css new file mode 100644 index 0000000000..b461b834a1 --- /dev/null +++ b/components/closebutton/index-theme.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-300); +} +/*# sourceMappingURL=components/closebutton/themes/express.css.map */ diff --git a/components/closebutton/index-vars.css b/components/closebutton/index-vars.css new file mode 100644 index 0000000000..5a8dac5a94 --- /dev/null +++ b/components/closebutton/index-vars.css @@ -0,0 +1,281 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-300); +} +.spectrum-CloseButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-CloseButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-CloseButton:focus { + outline: none; +} +.spectrum-CloseButton.is-disabled, +.spectrum-CloseButton:disabled { + cursor: default; +} +a.spectrum-CloseButton { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-CloseButton { + --spectrum-closebutton-size-300: 24px; + --spectrum-closebutton-size-400: 32px; + --spectrum-closebutton-size-500: 40px; + --spectrum-closebutton-size-600: 48px; + --spectrum-closebutton-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-closebutton-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-closebutton-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-closebutton-icon-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-closebutton-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-closebutton-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-closebutton-height: var(--spectrum-component-height-100); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Closebutton--sizeS { + --spectrum-closebutton-height: var(--spectrum-component-height-75); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-300); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-300); +} +.spectrum-Closebutton--sizeM { + --spectrum-closebutton-height: var(--spectrum-component-height-100); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-400); +} +.spectrum-Closebutton--sizeL { + --spectrum-closebutton-height: var(--spectrum-component-height-200); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-500); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-500); +} +.spectrum-Closebutton--sizeXL { + --spectrum-closebutton-height: var(--spectrum-component-height-300); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-600); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-600); +} +.spectrum-CloseButton--staticWhite { + --spectrum-closebutton-static-background-color-default: transparent; + --spectrum-closebutton-static-background-color-hover: var(--spectrum-transparent-white-300); + --spectrum-closebutton-static-background-color-down: var(--spectrum-transparent-white-400); + --spectrum-closebutton-static-background-color-focus: var(--spectrum-transparent-white-300); + --spectrum-closebutton-icon-color-default: var(--spectrum-white); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-static-white-content-color); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); +} +.spectrum-CloseButton--staticBlack { + --spectrum-closebutton-static-background-color-default: transparent; + --spectrum-closebutton-static-background-color-hover: var(--spectrum-transparent-black-300); + --spectrum-closebutton-static-background-color-down: var(--spectrum-transparent-black-400); + --spectrum-closebutton-static-background-color-focus: var(--spectrum-transparent-black-300); + --spectrum-closebutton-icon-color-default: var(--spectrum-black); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-static-black-content-color); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); +} +@media (forced-colors: active) { + .spectrum-CloseButton { + --highcontrast-closebutton-icon-color-disabled: GrayText; + --highcontrast-closebutton-icon-color-down: Highlight; + --highcontrast-closebutton-icon-color-hover: Highlight; + --highcontrast-closebutton-icon-color-focus: Highlight; + --highcontrast-closebutton-background-color-default: ButtonFace; + --highcontrast-closebutton-focus-indicator-color: ButtonText; + } + .spectrum-CloseButton:focus-visible:after { + forced-color-adjust: none; + margin: var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap)); + transition: + opacity var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-out, + margin var(--mod-closebutton-animation-duraction, var(--spectrum-closebutton-animation-duration)) ease-out; + } + .spectrum-CloseButton--staticBlack { + --highcontrast-closebutton-static-background-color-default: ButtonFace; + --highcontrast-closebutton-icon-color-default: Highlight; + --highcontrast-closebutton-icon-color-disabled: GrayText; + } + .spectrum-CloseButton--staticWhite { + --highcontrast-closebutton-static-background-color-default: ButtonFace; + --highcontrast-closebutton-icon-color-default: Highlight; + --highcontrast-closebutton-icon-color-disabled: Highlight; + } +} +.spectrum-CloseButton { + block-size: var(--mod-closebutton-height, var(--spectrum-closebutton-height)); + inline-size: var(--mod-closebutton-width, var(--spectrum-closebutton-width)); + position: relative; + color: inherit; + border-color: transparent; + border-radius: var(--mod-closebutton-border-radius, var(--spectrum-closebutton-border-radius)); + border-width: 0; + justify-content: center; + align-items: center; + flex-direction: row; + display: inline-flex; + padding: 0; + transition: border-color var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-in-out; + margin-inline: var(--mod-closebutton-margin-inline); + margin-block-start: var(--mod-closebutton-margin-top); + align-self: var(--mod-closebutton-align-self); +} +.spectrum-CloseButton:after { + pointer-events: none; + content: ""; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-end: 0; + inset-block-start: 0; + margin: calc(var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap)) * -1); + border-radius: calc(var(--mod-closebutton-size, var(--spectrum-closebutton-size)) + var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap))); + transition: box-shadow var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-in-out; +} +.spectrum-CloseButton:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-CloseButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-closebutton-focus-indicator-thickness, var(--spectrum-closebutton-focus-indicator-thickness)) var(--highcontrast-closebutton-focus-indicator-color, var(--mod-closebutton-focus-indicator-color, var(--spectrum-closebutton-focus-indicator-color))); +} +.spectrum-CloseButton:not(:disabled) { + background-color: var(--highcontrast-closebutton-background-color-default, var(--mod-closebutton-background-color-default, var(--spectrum-closebutton-background-color-default))); +} +.spectrum-CloseButton:not(:disabled):active { + background-color: var(--mod-closebutton-background-color-down, var(--spectrum-closebutton-background-color-down)); +} +.spectrum-CloseButton:not(:disabled):active .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-down, var(--mod-closebutton-icon-color-down, var(--spectrum-closebutton-icon-color-down))); +} +.spectrum-CloseButton.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton:not(:disabled):focus-visible { + background-color: var(--mod-closebutton-background-color-focus, var(--spectrum-closebutton-background-color-focus)); +} +.spectrum-CloseButton.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-focus, var(--mod-closebutton-icon-color-focus, var(--spectrum-closebutton-icon-color-focus))); +} +.spectrum-CloseButton:not(:disabled) .spectrum-CloseButton-UIIcon { + color: var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default)); +} +.spectrum-CloseButton.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton:not(:disabled):focus .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-focus, var(--mod-closebutton-icon-color-focus, var(--spectrum-closebutton-icon-color-focus))); +} +.spectrum-CloseButton:disabled { + background-color: var(--mod-closebutton-background-color-default, var(--spectrum-closebutton-background-color-default)); +} +.spectrum-CloseButton:disabled .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-disabled, var(--mod-closebutton-icon-color-disabled, var(--spectrum-closebutton-icon-color-disabled))); +} +.spectrum-CloseButton--staticBlack:not(:disabled), +.spectrum-CloseButton--staticWhite:not(:disabled) { + background-color: var(--highcontrast-closebutton-static-background-color-default, var(--mod-closebutton-static-background-color-default, var(--spectrum-closebutton-static-background-color-default))); +} +@media (hover: hover) { + .spectrum-CloseButton:not(:disabled):hover { + background-color: var(--mod-closebutton-background-color-hover, var(--spectrum-closebutton-background-color-hover)); + } + .spectrum-CloseButton:not(:disabled):hover .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-hover, var(--mod-closebutton-icon-color-hover, var(--spectrum-closebutton-icon-color-hover))); + } + .spectrum-CloseButton--staticBlack:not(:disabled):hover, + .spectrum-CloseButton--staticWhite:not(:disabled):hover { + background-color: var(--highcontrast-closebutton-static-background-color-hover, var(--mod-closebutton-static-background-color-hover, var(--spectrum-closebutton-static-background-color-hover))); + } + .spectrum-CloseButton--staticBlack:not(:disabled):hover .spectrum-CloseButton-UIIcon, + .spectrum-CloseButton--staticWhite:not(:disabled):hover .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); + } +} +.spectrum-CloseButton--staticBlack:not(:disabled):active, +.spectrum-CloseButton--staticWhite:not(:disabled):active { + background-color: var(--highcontrast-closebutton-static-background-color-down, var(--mod-closebutton-static-background-color-down, var(--spectrum-closebutton-static-background-color-down))); +} +.spectrum-CloseButton--staticBlack:not(:disabled):active .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):active .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); +} +.spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible, +.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible { + background-color: var(--highcontrast-closebutton-static-background-color-focus, var(--mod-closebutton-static-background-color-focus, var(--spectrum-closebutton-static-background-color-focus))); +} +.spectrum-CloseButton--staticBlack.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack:not(:disabled):focus .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):focus .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); +} +.spectrum-CloseButton--staticBlack:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled) .spectrum-CloseButton-UIIcon { + color: var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default)); +} +.spectrum-CloseButton--staticBlack:disabled .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:disabled .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-disabled, var(--mod-closebutton-icon-color-disabled, var(--spectrum-closebutton-icon-color-disabled))); +} +.spectrum-CloseButton-UIIcon { + margin: 0; +} +.spectrum-CloseButton { + --spectrum-closebutton-background-color-default: var(--system-spectrum-closebutton-background-color-default); + --spectrum-closebutton-background-color-hover: var(--system-spectrum-closebutton-background-color-hover); + --spectrum-closebutton-background-color-down: var(--system-spectrum-closebutton-background-color-down); + --spectrum-closebutton-background-color-focus: var(--system-spectrum-closebutton-background-color-focus); +} +/*# sourceMappingURL=components/closebutton/index.css.map */ diff --git a/components/closebutton/index.css b/components/closebutton/index.css new file mode 100644 index 0000000000..5a8dac5a94 --- /dev/null +++ b/components/closebutton/index.css @@ -0,0 +1,281 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-300); +} +.spectrum-CloseButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + overflow: visible; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-CloseButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-CloseButton:focus { + outline: none; +} +.spectrum-CloseButton.is-disabled, +.spectrum-CloseButton:disabled { + cursor: default; +} +a.spectrum-CloseButton { + -webkit-user-select: none; + user-select: none; + -webkit-appearance: none; +} +.spectrum-CloseButton { + --spectrum-closebutton-size-300: 24px; + --spectrum-closebutton-size-400: 32px; + --spectrum-closebutton-size-500: 40px; + --spectrum-closebutton-size-600: 48px; + --spectrum-closebutton-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-closebutton-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-closebutton-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-closebutton-icon-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-closebutton-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-closebutton-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-closebutton-height: var(--spectrum-component-height-100); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Closebutton--sizeS { + --spectrum-closebutton-height: var(--spectrum-component-height-75); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-300); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-300); +} +.spectrum-Closebutton--sizeM { + --spectrum-closebutton-height: var(--spectrum-component-height-100); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-400); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-400); +} +.spectrum-Closebutton--sizeL { + --spectrum-closebutton-height: var(--spectrum-component-height-200); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-500); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-500); +} +.spectrum-Closebutton--sizeXL { + --spectrum-closebutton-height: var(--spectrum-component-height-300); + --spectrum-closebutton-width: var(--spectrum-closebutton-height); + --spectrum-closebutton-size: var(--spectrum-closebutton-size-600); + --spectrum-closebutton-border-radius: var(--spectrum-closebutton-size-600); +} +.spectrum-CloseButton--staticWhite { + --spectrum-closebutton-static-background-color-default: transparent; + --spectrum-closebutton-static-background-color-hover: var(--spectrum-transparent-white-300); + --spectrum-closebutton-static-background-color-down: var(--spectrum-transparent-white-400); + --spectrum-closebutton-static-background-color-focus: var(--spectrum-transparent-white-300); + --spectrum-closebutton-icon-color-default: var(--spectrum-white); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-static-white-content-color); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-static-white-focus-indicator-color); +} +.spectrum-CloseButton--staticBlack { + --spectrum-closebutton-static-background-color-default: transparent; + --spectrum-closebutton-static-background-color-hover: var(--spectrum-transparent-black-300); + --spectrum-closebutton-static-background-color-down: var(--spectrum-transparent-black-400); + --spectrum-closebutton-static-background-color-focus: var(--spectrum-transparent-black-300); + --spectrum-closebutton-icon-color-default: var(--spectrum-black); + --spectrum-closebutton-icon-color-disabled: var(--spectrum-disabled-static-black-content-color); + --spectrum-closebutton-focus-indicator-color: var(--spectrum-static-black-focus-indicator-color); +} +@media (forced-colors: active) { + .spectrum-CloseButton { + --highcontrast-closebutton-icon-color-disabled: GrayText; + --highcontrast-closebutton-icon-color-down: Highlight; + --highcontrast-closebutton-icon-color-hover: Highlight; + --highcontrast-closebutton-icon-color-focus: Highlight; + --highcontrast-closebutton-background-color-default: ButtonFace; + --highcontrast-closebutton-focus-indicator-color: ButtonText; + } + .spectrum-CloseButton:focus-visible:after { + forced-color-adjust: none; + margin: var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap)); + transition: + opacity var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-out, + margin var(--mod-closebutton-animation-duraction, var(--spectrum-closebutton-animation-duration)) ease-out; + } + .spectrum-CloseButton--staticBlack { + --highcontrast-closebutton-static-background-color-default: ButtonFace; + --highcontrast-closebutton-icon-color-default: Highlight; + --highcontrast-closebutton-icon-color-disabled: GrayText; + } + .spectrum-CloseButton--staticWhite { + --highcontrast-closebutton-static-background-color-default: ButtonFace; + --highcontrast-closebutton-icon-color-default: Highlight; + --highcontrast-closebutton-icon-color-disabled: Highlight; + } +} +.spectrum-CloseButton { + block-size: var(--mod-closebutton-height, var(--spectrum-closebutton-height)); + inline-size: var(--mod-closebutton-width, var(--spectrum-closebutton-width)); + position: relative; + color: inherit; + border-color: transparent; + border-radius: var(--mod-closebutton-border-radius, var(--spectrum-closebutton-border-radius)); + border-width: 0; + justify-content: center; + align-items: center; + flex-direction: row; + display: inline-flex; + padding: 0; + transition: border-color var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-in-out; + margin-inline: var(--mod-closebutton-margin-inline); + margin-block-start: var(--mod-closebutton-margin-top); + align-self: var(--mod-closebutton-align-self); +} +.spectrum-CloseButton:after { + pointer-events: none; + content: ""; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-end: 0; + inset-block-start: 0; + margin: calc(var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap)) * -1); + border-radius: calc(var(--mod-closebutton-size, var(--spectrum-closebutton-size)) + var(--mod-closebutton-focus-indicator-gap, var(--spectrum-closebutton-focus-indicator-gap))); + transition: box-shadow var(--mod-closebutton-animation-duration, var(--spectrum-closebutton-animation-duration)) ease-in-out; +} +.spectrum-CloseButton:focus-visible { + box-shadow: none; + outline: none; +} +.spectrum-CloseButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-closebutton-focus-indicator-thickness, var(--spectrum-closebutton-focus-indicator-thickness)) var(--highcontrast-closebutton-focus-indicator-color, var(--mod-closebutton-focus-indicator-color, var(--spectrum-closebutton-focus-indicator-color))); +} +.spectrum-CloseButton:not(:disabled) { + background-color: var(--highcontrast-closebutton-background-color-default, var(--mod-closebutton-background-color-default, var(--spectrum-closebutton-background-color-default))); +} +.spectrum-CloseButton:not(:disabled):active { + background-color: var(--mod-closebutton-background-color-down, var(--spectrum-closebutton-background-color-down)); +} +.spectrum-CloseButton:not(:disabled):active .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-down, var(--mod-closebutton-icon-color-down, var(--spectrum-closebutton-icon-color-down))); +} +.spectrum-CloseButton.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton:not(:disabled):focus-visible { + background-color: var(--mod-closebutton-background-color-focus, var(--spectrum-closebutton-background-color-focus)); +} +.spectrum-CloseButton.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-focus, var(--mod-closebutton-icon-color-focus, var(--spectrum-closebutton-icon-color-focus))); +} +.spectrum-CloseButton:not(:disabled) .spectrum-CloseButton-UIIcon { + color: var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default)); +} +.spectrum-CloseButton.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton:not(:disabled):focus .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-focus, var(--mod-closebutton-icon-color-focus, var(--spectrum-closebutton-icon-color-focus))); +} +.spectrum-CloseButton:disabled { + background-color: var(--mod-closebutton-background-color-default, var(--spectrum-closebutton-background-color-default)); +} +.spectrum-CloseButton:disabled .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-disabled, var(--mod-closebutton-icon-color-disabled, var(--spectrum-closebutton-icon-color-disabled))); +} +.spectrum-CloseButton--staticBlack:not(:disabled), +.spectrum-CloseButton--staticWhite:not(:disabled) { + background-color: var(--highcontrast-closebutton-static-background-color-default, var(--mod-closebutton-static-background-color-default, var(--spectrum-closebutton-static-background-color-default))); +} +@media (hover: hover) { + .spectrum-CloseButton:not(:disabled):hover { + background-color: var(--mod-closebutton-background-color-hover, var(--spectrum-closebutton-background-color-hover)); + } + .spectrum-CloseButton:not(:disabled):hover .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-hover, var(--mod-closebutton-icon-color-hover, var(--spectrum-closebutton-icon-color-hover))); + } + .spectrum-CloseButton--staticBlack:not(:disabled):hover, + .spectrum-CloseButton--staticWhite:not(:disabled):hover { + background-color: var(--highcontrast-closebutton-static-background-color-hover, var(--mod-closebutton-static-background-color-hover, var(--spectrum-closebutton-static-background-color-hover))); + } + .spectrum-CloseButton--staticBlack:not(:disabled):hover .spectrum-CloseButton-UIIcon, + .spectrum-CloseButton--staticWhite:not(:disabled):hover .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); + } +} +.spectrum-CloseButton--staticBlack:not(:disabled):active, +.spectrum-CloseButton--staticWhite:not(:disabled):active { + background-color: var(--highcontrast-closebutton-static-background-color-down, var(--mod-closebutton-static-background-color-down, var(--spectrum-closebutton-static-background-color-down))); +} +.spectrum-CloseButton--staticBlack:not(:disabled):active .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):active .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); +} +.spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible, +.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled), +.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible { + background-color: var(--highcontrast-closebutton-static-background-color-focus, var(--mod-closebutton-static-background-color-focus, var(--spectrum-closebutton-static-background-color-focus))); +} +.spectrum-CloseButton--staticBlack.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack:not(:disabled):focus .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):focus .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-color-default, var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default))); +} +.spectrum-CloseButton--staticBlack:not(:disabled) .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:not(:disabled) .spectrum-CloseButton-UIIcon { + color: var(--mod-closebutton-icon-color-default, var(--spectrum-closebutton-icon-color-default)); +} +.spectrum-CloseButton--staticBlack:disabled .spectrum-CloseButton-UIIcon, +.spectrum-CloseButton--staticWhite:disabled .spectrum-CloseButton-UIIcon { + color: var(--highcontrast-closebutton-icon-disabled, var(--mod-closebutton-icon-color-disabled, var(--spectrum-closebutton-icon-color-disabled))); +} +.spectrum-CloseButton-UIIcon { + margin: 0; +} +.spectrum-CloseButton { + --spectrum-closebutton-background-color-default: var(--system-spectrum-closebutton-background-color-default); + --spectrum-closebutton-background-color-hover: var(--system-spectrum-closebutton-background-color-hover); + --spectrum-closebutton-background-color-down: var(--system-spectrum-closebutton-background-color-down); + --spectrum-closebutton-background-color-focus: var(--system-spectrum-closebutton-background-color-focus); +} +/*# sourceMappingURL=components/closebutton/index.css.map */ diff --git a/components/closebutton/metadata.json b/components/closebutton/metadata.json new file mode 100644 index 0000000000..5dee66673b --- /dev/null +++ b/components/closebutton/metadata.json @@ -0,0 +1,149 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-CloseButton", + ".spectrum-CloseButton--staticBlack", + ".spectrum-CloseButton--staticBlack.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticBlack:not(:disabled):focus .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticWhite.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticWhite:not(:disabled):focus .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton--staticBlack.is-keyboardFocused:not(:disabled),\n.spectrum-CloseButton--staticBlack:not(:disabled):focus-visible,\n.spectrum-CloseButton--staticWhite.is-keyboardFocused:not(:disabled),\n.spectrum-CloseButton--staticWhite:not(:disabled):focus-visible", + ".spectrum-CloseButton--staticBlack:disabled .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticWhite:disabled .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton--staticBlack:not(:disabled) .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticWhite:not(:disabled) .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton--staticBlack:not(:disabled),\n.spectrum-CloseButton--staticWhite:not(:disabled)", + ".spectrum-CloseButton--staticBlack:not(:disabled):active .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton--staticWhite:not(:disabled):active .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton--staticBlack:not(:disabled):active,\n.spectrum-CloseButton--staticWhite:not(:disabled):active", + ".spectrum-CloseButton--staticBlack:not(:disabled):hover .spectrum-CloseButton-UIIcon,\n\t.spectrum-CloseButton--staticWhite:not(:disabled):hover .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton--staticBlack:not(:disabled):hover,\n\t.spectrum-CloseButton--staticWhite:not(:disabled):hover", + ".spectrum-CloseButton--staticWhite", + ".spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton.is-disabled,\n.spectrum-CloseButton:disabled", + ".spectrum-CloseButton.is-focused:not(:disabled) .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton:not(:disabled):focus .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton.is-keyboardFocused:not(:disabled) .spectrum-CloseButton-UIIcon,\n.spectrum-CloseButton:not(:disabled):focus-visible .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton.is-keyboardFocused:not(:disabled),\n.spectrum-CloseButton:not(:disabled):focus-visible", + ".spectrum-CloseButton::-moz-focus-inner", + ".spectrum-CloseButton:after", + ".spectrum-CloseButton:disabled", + ".spectrum-CloseButton:disabled .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton:focus", + ".spectrum-CloseButton:focus-visible", + ".spectrum-CloseButton:focus-visible:after", + ".spectrum-CloseButton:not(:disabled)", + ".spectrum-CloseButton:not(:disabled) .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton:not(:disabled):active", + ".spectrum-CloseButton:not(:disabled):active .spectrum-CloseButton-UIIcon", + ".spectrum-CloseButton:not(:disabled):hover", + ".spectrum-CloseButton:not(:disabled):hover .spectrum-CloseButton-UIIcon", + ".spectrum-Closebutton--sizeL", + ".spectrum-Closebutton--sizeM", + ".spectrum-Closebutton--sizeS", + ".spectrum-Closebutton--sizeXL", + "a.spectrum-CloseButton" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-button-animation-duration", + "--mod-button-font-family", + "--mod-button-line-height", + "--mod-closebutton-align-self", + "--mod-closebutton-animation-duraction", + "--mod-closebutton-animation-duration", + "--mod-closebutton-background-color-default", + "--mod-closebutton-background-color-down", + "--mod-closebutton-background-color-focus", + "--mod-closebutton-background-color-hover", + "--mod-closebutton-border-radius", + "--mod-closebutton-focus-indicator-color", + "--mod-closebutton-focus-indicator-gap", + "--mod-closebutton-focus-indicator-thickness", + "--mod-closebutton-height", + "--mod-closebutton-icon-color-default", + "--mod-closebutton-icon-color-disabled", + "--mod-closebutton-icon-color-down", + "--mod-closebutton-icon-color-focus", + "--mod-closebutton-icon-color-hover", + "--mod-closebutton-margin-inline", + "--mod-closebutton-margin-top", + "--mod-closebutton-size", + "--mod-closebutton-static-background-color-default", + "--mod-closebutton-static-background-color-down", + "--mod-closebutton-static-background-color-focus", + "--mod-closebutton-static-background-color-hover", + "--mod-closebutton-width", + "--mod-line-height-100", + "--mod-sans-font-family-stack" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-black", + "--spectrum-closebutton-animation-duration", + "--spectrum-closebutton-background-color-default", + "--spectrum-closebutton-background-color-down", + "--spectrum-closebutton-background-color-focus", + "--spectrum-closebutton-background-color-hover", + "--spectrum-closebutton-border-radius", + "--spectrum-closebutton-focus-indicator-color", + "--spectrum-closebutton-focus-indicator-gap", + "--spectrum-closebutton-focus-indicator-thickness", + "--spectrum-closebutton-height", + "--spectrum-closebutton-icon-color-default", + "--spectrum-closebutton-icon-color-disabled", + "--spectrum-closebutton-icon-color-down", + "--spectrum-closebutton-icon-color-focus", + "--spectrum-closebutton-icon-color-hover", + "--spectrum-closebutton-size", + "--spectrum-closebutton-size-300", + "--spectrum-closebutton-size-400", + "--spectrum-closebutton-size-500", + "--spectrum-closebutton-size-600", + "--spectrum-closebutton-static-background-color-default", + "--spectrum-closebutton-static-background-color-down", + "--spectrum-closebutton-static-background-color-focus", + "--spectrum-closebutton-static-background-color-hover", + "--spectrum-closebutton-width", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-disabled-content-color", + "--spectrum-disabled-static-black-content-color", + "--spectrum-disabled-static-white-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-line-height-100", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-sans-font-family-stack", + "--spectrum-static-black-focus-indicator-color", + "--spectrum-static-white-focus-indicator-color", + "--spectrum-transparent-black-300", + "--spectrum-transparent-black-400", + "--spectrum-transparent-white-300", + "--spectrum-transparent-white-400", + "--spectrum-white" + ], + "system": [ + "--system-spectrum-closebutton-background-color-default", + "--system-spectrum-closebutton-background-color-down", + "--system-spectrum-closebutton-background-color-focus", + "--system-spectrum-closebutton-background-color-hover" + ], + "a11y": [ + "--highcontrast-closebutton-background-color-default", + "--highcontrast-closebutton-focus-indicator-color", + "--highcontrast-closebutton-icon-color-default", + "--highcontrast-closebutton-icon-color-disabled", + "--highcontrast-closebutton-icon-color-down", + "--highcontrast-closebutton-icon-color-focus", + "--highcontrast-closebutton-icon-color-hover", + "--highcontrast-closebutton-icon-disabled", + "--highcontrast-closebutton-static-background-color-default", + "--highcontrast-closebutton-static-background-color-down", + "--highcontrast-closebutton-static-background-color-focus", + "--highcontrast-closebutton-static-background-color-hover" + ] +} diff --git a/components/closebutton/package.json b/components/closebutton/package.json new file mode 100644 index 0000000000..0995cb936b --- /dev/null +++ b/components/closebutton/package.json @@ -0,0 +1,42 @@ +{ + "name": "@spectrum-css/closebutton", + "version": "5.1.1", + "description": "The Spectrum CSS close button component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/closebutton", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/closebutton" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/commons": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/closebutton/template.js b/components/closebutton/template.js new file mode 100644 index 0000000000..5e6084cc07 --- /dev/null +++ b/components/closebutton/template.js @@ -0,0 +1,41 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { capitalize, lowerCase, upperCase } from "lodash-es"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-CloseButton", + size = "m", + label = "Close", + staticColor, + isDisabled = false, + customClasses = [], + id, + onclick, +} = {}, context = {}) => { + return html` + + `; +}; diff --git a/components/closebutton/themes/express.css b/components/closebutton/themes/express.css new file mode 100644 index 0000000000..d14117f294 --- /dev/null +++ b/components/closebutton/themes/express.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-400); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-300); +} +/*# sourceMappingURL=components/closebutton/themes/express.css.map */ diff --git a/components/closebutton/themes/spectrum.css b/components/closebutton/themes/spectrum.css new file mode 100644 index 0000000000..fc0f256683 --- /dev/null +++ b/components/closebutton/themes/spectrum.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-closebutton-background-color-default: transparent; + --system-spectrum-closebutton-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-closebutton-background-color-down: var(--spectrum-gray-300); + --system-spectrum-closebutton-background-color-focus: var(--spectrum-gray-200); +} +/*# sourceMappingURL=components/closebutton/themes/spectrum.css.map */ diff --git a/components/coachindicator/index-base.css b/components/coachindicator/index-base.css new file mode 100644 index 0000000000..92c936f06d --- /dev/null +++ b/components/coachindicator/index-base.css @@ -0,0 +1,122 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-CoachIndicator { + --spectrum-coach-indicator-animation-keyframe-0-scale: 1; + --spectrum-coach-indicator-animation-keyframe-0-opacity: 0; + --spectrum-coach-indicator-animation-keyframe-50-scale: 1.5; + --spectrum-coach-indicator-animation-keyframe-50-opacity: 1; + --spectrum-coach-indicator-animation-keyframe-100-scale: 2; + --spectrum-coach-indicator-animation-keyframe-100-opacity: 0; + --spectrum-coach-indicator-quiet-animation-keyframe-0-scale: 0.8; +} +@keyframes pulse { + 0% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-0-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-0-opacity); + } + 50% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-50-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-50-opacity); + } + to { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-100-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-100-opacity); + } +} +@keyframes pulse-quiet { + 0% { + transform: scale(var(--spectrum-coach-indicator-quiet-animation-keyframe-0-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-0-opacity); + } + 50% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-50-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-50-opacity); + } + to { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-100-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-100-opacity); + } +} +.spectrum-CoachIndicator { + --spectrum-coach-indicator-ring-border-size: var(--spectrum-border-width-200); + --spectrum-coach-indicator-min-inline-size: calc(var(--spectrum-coach-indicator-ring-diameter) * 3); + --spectrum-coach-indicator-min-block-size: calc(var(--spectrum-coach-indicator-ring-diameter) * 3); + --spectrum-coach-indicator-inline-size: var(--spectrum-coach-indicator-min-inline-size); + --spectrum-coach-indicator-block-size: var(--spectrum-coach-indicator-min-block-size); + --spectrum-coach-indicator-ring-inline-size: var(--spectrum-coach-indicator-ring-diameter); + --spectrum-coach-indicator-ring-block-size: var(--spectrum-coach-indicator-ring-diameter); + --spectrum-coach-indicator-top: calc(var(--spectrum-coach-indicator-block-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --spectrum-coach-indicator-left: calc(var(--spectrum-coach-indicator-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --spectrum-coach-animation-indicator-ring-duration: var(--spectrum-animation-duration-6000); + --spectrum-coach-animation-indicator-ring-inner-delay-multiple: -0.5; + --spectrum-coach-animation-indicator-ring-center-delay-multiple: -0.66; + --spectrum-coach-animation-indicator-ring-outer-delay-multiple: -1; + --spectrum-coach-indicator-quiet-animation-ring-inner-delay-multiple: -0.33; + --spectrum-coach-indicator-animation-name: pulse; + --spectrum-coach-indicator-inner-animation-delay-multiple: var(--spectrum-coach-animation-indicator-ring-inner-delay-multiple); +} +.spectrum-CoachIndicator--quiet { + --mod-coach-indicator-min-inline-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-min-block-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-inline-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-block-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-ring-inline-size: var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)); + --mod-coach-indicator-ring-block-size: var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)); + --mod-coach-indicator-top: calc(var(--mod-coach-indicator-min-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --mod-coach-indicator-left: calc(var(--mod-coach-indicator-min-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --mod-coach-indicator-animation-name: pulse-quiet; + --mod-coach-indicator-inner-animation-delay-multiple: var(--mod-coach-indicator-quiet-animation-ring-inner-delay-multiple, var(--spectrum-coach-indicator-quiet-animation-ring-inner-delay-multiple)); +} +.spectrum-CoachIndicator { + position: relative; + margin: var(--mod-coach-indicator-gap, var(--spectrum-coach-indicator-gap)); + min-inline-size: var(--mod-coach-indicator-min-inline-size, var(--spectrum-coach-indicator-min-inline-size)); + min-block-size: var(--mod-coach-indicator-min-block-size, var(--spectrum-coach-indicator-min-block-size)); + inline-size: var(--mod-coach-indicator-inline-size, var(--spectrum-coach-indicator-inline-size)); + block-size: var(--mod-coach-indicator-block-size, var(--spectrum-coach-indicator-block-size)); +} +.spectrum-CoachIndicator-ring { + display: block; + position: absolute; + border-style: solid; + border-width: var(--mod-coach-indicator-ring-border-size, var(--spectrum-coach-indicator-ring-border-size)); + border-radius: 50%; + border-color: var(--mod-coach-indicator-ring-default-color, var(--spectrum-coach-indicator-ring-default-color)); + inset-block-start: var(--mod-coach-indicator-top, var(--spectrum-coach-indicator-top)); + inset-inline-start: var(--mod-coach-indicator-left, var(--spectrum-coach-indicator-left)); + inline-size: var(--mod-coach-indicator-ring-inline-size, var(--spectrum-coach-indicator-ring-inline-size)); + block-size: var(--mod-coach-indicator-ring-block-size, var(--spectrum-coach-indicator-ring-block-size)); + animation: var(--mod-coach-indicator-animation-name, var(--spectrum-coach-indicator-animation-name)) var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) linear infinite; +} +.spectrum-CoachIndicator-ring:first-child { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-indicator-inner-animation-delay-multiple, var(--spectrum-coach-indicator-inner-animation-delay-multiple))); +} +.spectrum-CoachIndicator-ring:nth-child(2) { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-animation-indicator-ring-center-delay-multiple, var(--spectrum-coach-animation-indicator-ring-center-delay-multiple))); +} +.spectrum-CoachIndicator-ring:nth-child(3) { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-animation-indicator-ring-outer-delay-multiple, var(--spectrum-coach-animation-indicator-ring-outer-delay-multiple))); +} +.spectrum-CoachIndicator--light .spectrum-CoachIndicator-ring { + border-color: var(--mod-coach-indicator-ring-light-color, var(--spectrum-coach-indicator-ring-light-color)); +} +.spectrum-CoachIndicator--dark .spectrum-CoachIndicator-ring { + border-color: var(--mod-coach-indicator-ring-dark-color, var(--spectrum-coach-indicator-ring-dark-color)); +} +@media (prefers-reduced-motion: reduce) { + .spectrum-CoachIndicator-ring { + animation: none; + } +} +/*# sourceMappingURL=components/coachindicator/index.css.map */ diff --git a/components/coachindicator/index-vars.css b/components/coachindicator/index-vars.css new file mode 100644 index 0000000000..92c936f06d --- /dev/null +++ b/components/coachindicator/index-vars.css @@ -0,0 +1,122 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-CoachIndicator { + --spectrum-coach-indicator-animation-keyframe-0-scale: 1; + --spectrum-coach-indicator-animation-keyframe-0-opacity: 0; + --spectrum-coach-indicator-animation-keyframe-50-scale: 1.5; + --spectrum-coach-indicator-animation-keyframe-50-opacity: 1; + --spectrum-coach-indicator-animation-keyframe-100-scale: 2; + --spectrum-coach-indicator-animation-keyframe-100-opacity: 0; + --spectrum-coach-indicator-quiet-animation-keyframe-0-scale: 0.8; +} +@keyframes pulse { + 0% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-0-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-0-opacity); + } + 50% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-50-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-50-opacity); + } + to { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-100-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-100-opacity); + } +} +@keyframes pulse-quiet { + 0% { + transform: scale(var(--spectrum-coach-indicator-quiet-animation-keyframe-0-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-0-opacity); + } + 50% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-50-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-50-opacity); + } + to { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-100-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-100-opacity); + } +} +.spectrum-CoachIndicator { + --spectrum-coach-indicator-ring-border-size: var(--spectrum-border-width-200); + --spectrum-coach-indicator-min-inline-size: calc(var(--spectrum-coach-indicator-ring-diameter) * 3); + --spectrum-coach-indicator-min-block-size: calc(var(--spectrum-coach-indicator-ring-diameter) * 3); + --spectrum-coach-indicator-inline-size: var(--spectrum-coach-indicator-min-inline-size); + --spectrum-coach-indicator-block-size: var(--spectrum-coach-indicator-min-block-size); + --spectrum-coach-indicator-ring-inline-size: var(--spectrum-coach-indicator-ring-diameter); + --spectrum-coach-indicator-ring-block-size: var(--spectrum-coach-indicator-ring-diameter); + --spectrum-coach-indicator-top: calc(var(--spectrum-coach-indicator-block-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --spectrum-coach-indicator-left: calc(var(--spectrum-coach-indicator-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --spectrum-coach-animation-indicator-ring-duration: var(--spectrum-animation-duration-6000); + --spectrum-coach-animation-indicator-ring-inner-delay-multiple: -0.5; + --spectrum-coach-animation-indicator-ring-center-delay-multiple: -0.66; + --spectrum-coach-animation-indicator-ring-outer-delay-multiple: -1; + --spectrum-coach-indicator-quiet-animation-ring-inner-delay-multiple: -0.33; + --spectrum-coach-indicator-animation-name: pulse; + --spectrum-coach-indicator-inner-animation-delay-multiple: var(--spectrum-coach-animation-indicator-ring-inner-delay-multiple); +} +.spectrum-CoachIndicator--quiet { + --mod-coach-indicator-min-inline-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-min-block-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-inline-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-block-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-ring-inline-size: var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)); + --mod-coach-indicator-ring-block-size: var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)); + --mod-coach-indicator-top: calc(var(--mod-coach-indicator-min-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --mod-coach-indicator-left: calc(var(--mod-coach-indicator-min-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --mod-coach-indicator-animation-name: pulse-quiet; + --mod-coach-indicator-inner-animation-delay-multiple: var(--mod-coach-indicator-quiet-animation-ring-inner-delay-multiple, var(--spectrum-coach-indicator-quiet-animation-ring-inner-delay-multiple)); +} +.spectrum-CoachIndicator { + position: relative; + margin: var(--mod-coach-indicator-gap, var(--spectrum-coach-indicator-gap)); + min-inline-size: var(--mod-coach-indicator-min-inline-size, var(--spectrum-coach-indicator-min-inline-size)); + min-block-size: var(--mod-coach-indicator-min-block-size, var(--spectrum-coach-indicator-min-block-size)); + inline-size: var(--mod-coach-indicator-inline-size, var(--spectrum-coach-indicator-inline-size)); + block-size: var(--mod-coach-indicator-block-size, var(--spectrum-coach-indicator-block-size)); +} +.spectrum-CoachIndicator-ring { + display: block; + position: absolute; + border-style: solid; + border-width: var(--mod-coach-indicator-ring-border-size, var(--spectrum-coach-indicator-ring-border-size)); + border-radius: 50%; + border-color: var(--mod-coach-indicator-ring-default-color, var(--spectrum-coach-indicator-ring-default-color)); + inset-block-start: var(--mod-coach-indicator-top, var(--spectrum-coach-indicator-top)); + inset-inline-start: var(--mod-coach-indicator-left, var(--spectrum-coach-indicator-left)); + inline-size: var(--mod-coach-indicator-ring-inline-size, var(--spectrum-coach-indicator-ring-inline-size)); + block-size: var(--mod-coach-indicator-ring-block-size, var(--spectrum-coach-indicator-ring-block-size)); + animation: var(--mod-coach-indicator-animation-name, var(--spectrum-coach-indicator-animation-name)) var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) linear infinite; +} +.spectrum-CoachIndicator-ring:first-child { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-indicator-inner-animation-delay-multiple, var(--spectrum-coach-indicator-inner-animation-delay-multiple))); +} +.spectrum-CoachIndicator-ring:nth-child(2) { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-animation-indicator-ring-center-delay-multiple, var(--spectrum-coach-animation-indicator-ring-center-delay-multiple))); +} +.spectrum-CoachIndicator-ring:nth-child(3) { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-animation-indicator-ring-outer-delay-multiple, var(--spectrum-coach-animation-indicator-ring-outer-delay-multiple))); +} +.spectrum-CoachIndicator--light .spectrum-CoachIndicator-ring { + border-color: var(--mod-coach-indicator-ring-light-color, var(--spectrum-coach-indicator-ring-light-color)); +} +.spectrum-CoachIndicator--dark .spectrum-CoachIndicator-ring { + border-color: var(--mod-coach-indicator-ring-dark-color, var(--spectrum-coach-indicator-ring-dark-color)); +} +@media (prefers-reduced-motion: reduce) { + .spectrum-CoachIndicator-ring { + animation: none; + } +} +/*# sourceMappingURL=components/coachindicator/index.css.map */ diff --git a/components/coachindicator/index.css b/components/coachindicator/index.css new file mode 100644 index 0000000000..92c936f06d --- /dev/null +++ b/components/coachindicator/index.css @@ -0,0 +1,122 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-CoachIndicator { + --spectrum-coach-indicator-animation-keyframe-0-scale: 1; + --spectrum-coach-indicator-animation-keyframe-0-opacity: 0; + --spectrum-coach-indicator-animation-keyframe-50-scale: 1.5; + --spectrum-coach-indicator-animation-keyframe-50-opacity: 1; + --spectrum-coach-indicator-animation-keyframe-100-scale: 2; + --spectrum-coach-indicator-animation-keyframe-100-opacity: 0; + --spectrum-coach-indicator-quiet-animation-keyframe-0-scale: 0.8; +} +@keyframes pulse { + 0% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-0-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-0-opacity); + } + 50% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-50-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-50-opacity); + } + to { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-100-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-100-opacity); + } +} +@keyframes pulse-quiet { + 0% { + transform: scale(var(--spectrum-coach-indicator-quiet-animation-keyframe-0-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-0-opacity); + } + 50% { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-50-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-50-opacity); + } + to { + transform: scale(var(--spectrum-coach-indicator-animation-keyframe-100-scale)); + opacity: var(--spectrum-coach-indicator-animation-keyframe-100-opacity); + } +} +.spectrum-CoachIndicator { + --spectrum-coach-indicator-ring-border-size: var(--spectrum-border-width-200); + --spectrum-coach-indicator-min-inline-size: calc(var(--spectrum-coach-indicator-ring-diameter) * 3); + --spectrum-coach-indicator-min-block-size: calc(var(--spectrum-coach-indicator-ring-diameter) * 3); + --spectrum-coach-indicator-inline-size: var(--spectrum-coach-indicator-min-inline-size); + --spectrum-coach-indicator-block-size: var(--spectrum-coach-indicator-min-block-size); + --spectrum-coach-indicator-ring-inline-size: var(--spectrum-coach-indicator-ring-diameter); + --spectrum-coach-indicator-ring-block-size: var(--spectrum-coach-indicator-ring-diameter); + --spectrum-coach-indicator-top: calc(var(--spectrum-coach-indicator-block-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --spectrum-coach-indicator-left: calc(var(--spectrum-coach-indicator-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --spectrum-coach-animation-indicator-ring-duration: var(--spectrum-animation-duration-6000); + --spectrum-coach-animation-indicator-ring-inner-delay-multiple: -0.5; + --spectrum-coach-animation-indicator-ring-center-delay-multiple: -0.66; + --spectrum-coach-animation-indicator-ring-outer-delay-multiple: -1; + --spectrum-coach-indicator-quiet-animation-ring-inner-delay-multiple: -0.33; + --spectrum-coach-indicator-animation-name: pulse; + --spectrum-coach-indicator-inner-animation-delay-multiple: var(--spectrum-coach-animation-indicator-ring-inner-delay-multiple); +} +.spectrum-CoachIndicator--quiet { + --mod-coach-indicator-min-inline-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-min-block-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-inline-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-block-size: calc(var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)) * 2.75); + --mod-coach-indicator-ring-inline-size: var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)); + --mod-coach-indicator-ring-block-size: var(--mod-coach-indicator-quiet-ring-diameter, var(--spectrum-coach-indicator-quiet-ring-diameter)); + --mod-coach-indicator-top: calc(var(--mod-coach-indicator-min-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --mod-coach-indicator-left: calc(var(--mod-coach-indicator-min-inline-size) / 3 - var(--spectrum-coach-indicator-ring-border-size)); + --mod-coach-indicator-animation-name: pulse-quiet; + --mod-coach-indicator-inner-animation-delay-multiple: var(--mod-coach-indicator-quiet-animation-ring-inner-delay-multiple, var(--spectrum-coach-indicator-quiet-animation-ring-inner-delay-multiple)); +} +.spectrum-CoachIndicator { + position: relative; + margin: var(--mod-coach-indicator-gap, var(--spectrum-coach-indicator-gap)); + min-inline-size: var(--mod-coach-indicator-min-inline-size, var(--spectrum-coach-indicator-min-inline-size)); + min-block-size: var(--mod-coach-indicator-min-block-size, var(--spectrum-coach-indicator-min-block-size)); + inline-size: var(--mod-coach-indicator-inline-size, var(--spectrum-coach-indicator-inline-size)); + block-size: var(--mod-coach-indicator-block-size, var(--spectrum-coach-indicator-block-size)); +} +.spectrum-CoachIndicator-ring { + display: block; + position: absolute; + border-style: solid; + border-width: var(--mod-coach-indicator-ring-border-size, var(--spectrum-coach-indicator-ring-border-size)); + border-radius: 50%; + border-color: var(--mod-coach-indicator-ring-default-color, var(--spectrum-coach-indicator-ring-default-color)); + inset-block-start: var(--mod-coach-indicator-top, var(--spectrum-coach-indicator-top)); + inset-inline-start: var(--mod-coach-indicator-left, var(--spectrum-coach-indicator-left)); + inline-size: var(--mod-coach-indicator-ring-inline-size, var(--spectrum-coach-indicator-ring-inline-size)); + block-size: var(--mod-coach-indicator-ring-block-size, var(--spectrum-coach-indicator-ring-block-size)); + animation: var(--mod-coach-indicator-animation-name, var(--spectrum-coach-indicator-animation-name)) var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) linear infinite; +} +.spectrum-CoachIndicator-ring:first-child { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-indicator-inner-animation-delay-multiple, var(--spectrum-coach-indicator-inner-animation-delay-multiple))); +} +.spectrum-CoachIndicator-ring:nth-child(2) { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-animation-indicator-ring-center-delay-multiple, var(--spectrum-coach-animation-indicator-ring-center-delay-multiple))); +} +.spectrum-CoachIndicator-ring:nth-child(3) { + animation-delay: calc(var(--mod-coach-animation-indicator-ring-duration, var(--spectrum-coach-animation-indicator-ring-duration)) * var(--mod-coach-animation-indicator-ring-outer-delay-multiple, var(--spectrum-coach-animation-indicator-ring-outer-delay-multiple))); +} +.spectrum-CoachIndicator--light .spectrum-CoachIndicator-ring { + border-color: var(--mod-coach-indicator-ring-light-color, var(--spectrum-coach-indicator-ring-light-color)); +} +.spectrum-CoachIndicator--dark .spectrum-CoachIndicator-ring { + border-color: var(--mod-coach-indicator-ring-dark-color, var(--spectrum-coach-indicator-ring-dark-color)); +} +@media (prefers-reduced-motion: reduce) { + .spectrum-CoachIndicator-ring { + animation: none; + } +} +/*# sourceMappingURL=components/coachindicator/index.css.map */ diff --git a/components/coachindicator/metadata.json b/components/coachindicator/metadata.json new file mode 100644 index 0000000000..892fac26af --- /dev/null +++ b/components/coachindicator/metadata.json @@ -0,0 +1,72 @@ +{ + "selectors": [ + ".spectrum-CoachIndicator", + ".spectrum-CoachIndicator--dark .spectrum-CoachIndicator-ring", + ".spectrum-CoachIndicator--light .spectrum-CoachIndicator-ring", + ".spectrum-CoachIndicator--quiet", + ".spectrum-CoachIndicator-ring", + ".spectrum-CoachIndicator-ring:first-child", + ".spectrum-CoachIndicator-ring:nth-child(2)", + ".spectrum-CoachIndicator-ring:nth-child(3)", + "0%", + "50%", + "to" + ], + "mods": [ + "--mod-coach-animation-indicator-ring-center-delay-multiple", + "--mod-coach-animation-indicator-ring-duration", + "--mod-coach-animation-indicator-ring-outer-delay-multiple", + "--mod-coach-indicator-animation-name", + "--mod-coach-indicator-block-size", + "--mod-coach-indicator-gap", + "--mod-coach-indicator-inline-size", + "--mod-coach-indicator-inner-animation-delay-multiple", + "--mod-coach-indicator-left", + "--mod-coach-indicator-min-block-size", + "--mod-coach-indicator-min-inline-size", + "--mod-coach-indicator-quiet-animation-ring-inner-delay-multiple", + "--mod-coach-indicator-quiet-ring-diameter", + "--mod-coach-indicator-ring-block-size", + "--mod-coach-indicator-ring-border-size", + "--mod-coach-indicator-ring-dark-color", + "--mod-coach-indicator-ring-default-color", + "--mod-coach-indicator-ring-inline-size", + "--mod-coach-indicator-ring-light-color", + "--mod-coach-indicator-top" + ], + "spectrum": [ + "--spectrum-animation-duration-6000", + "--spectrum-border-width-200", + "--spectrum-coach-animation-indicator-ring-center-delay-multiple", + "--spectrum-coach-animation-indicator-ring-duration", + "--spectrum-coach-animation-indicator-ring-inner-delay-multiple", + "--spectrum-coach-animation-indicator-ring-outer-delay-multiple", + "--spectrum-coach-indicator-animation-keyframe-0-opacity", + "--spectrum-coach-indicator-animation-keyframe-0-scale", + "--spectrum-coach-indicator-animation-keyframe-100-opacity", + "--spectrum-coach-indicator-animation-keyframe-100-scale", + "--spectrum-coach-indicator-animation-keyframe-50-opacity", + "--spectrum-coach-indicator-animation-keyframe-50-scale", + "--spectrum-coach-indicator-animation-name", + "--spectrum-coach-indicator-block-size", + "--spectrum-coach-indicator-gap", + "--spectrum-coach-indicator-inline-size", + "--spectrum-coach-indicator-inner-animation-delay-multiple", + "--spectrum-coach-indicator-left", + "--spectrum-coach-indicator-min-block-size", + "--spectrum-coach-indicator-min-inline-size", + "--spectrum-coach-indicator-quiet-animation-keyframe-0-scale", + "--spectrum-coach-indicator-quiet-animation-ring-inner-delay-multiple", + "--spectrum-coach-indicator-quiet-ring-diameter", + "--spectrum-coach-indicator-ring-block-size", + "--spectrum-coach-indicator-ring-border-size", + "--spectrum-coach-indicator-ring-dark-color", + "--spectrum-coach-indicator-ring-default-color", + "--spectrum-coach-indicator-ring-diameter", + "--spectrum-coach-indicator-ring-inline-size", + "--spectrum-coach-indicator-ring-light-color", + "--spectrum-coach-indicator-top" + ], + "system": [], + "a11y": [] +} diff --git a/components/coachindicator/package.json b/components/coachindicator/package.json new file mode 100644 index 0000000000..c1ba46eace --- /dev/null +++ b/components/coachindicator/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/coachindicator", + "version": "2.1.2", + "description": "The Spectrum CSS Coach Indicator component ", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/coachindicator", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/coachindicator" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/coachindicator/template.js b/components/coachindicator/template.js new file mode 100644 index 0000000000..7eb6e64168 --- /dev/null +++ b/components/coachindicator/template.js @@ -0,0 +1,64 @@ +import { html } from "lit-html"; +import { classMap } from "lit-html/directives/class-map.js"; +import { styleMap } from "lit-html/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-CoachIndicator", + isQuiet = false, + variant, +}) => html` +
    + ${Array.from({ length: 3 }).map(() => html` +
    + `)} +
    +`; + +export const CoachIndicatorGroup = (args) => { + return html` +
    + ${Template(args)} +
    +
    + ${Template(args)} + ${Template({ + ...args, + variant: "dark" + })} + ${Template({ + ...args, + variant: "light" + })} +
    +
    + ${Template({ + ...args, + isQuiet: true + })} + ${Template({ + ...args, + variant: "dark", + isQuiet: true + })} + ${Template({ + ...args, + variant: "light", + isQuiet: true + })} +
    + `; +}; diff --git a/components/coachmark/index-base.css b/components/coachmark/index-base.css new file mode 100644 index 0000000000..339b3d82ce --- /dev/null +++ b/components/coachmark/index-base.css @@ -0,0 +1,140 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-CoachMark { + --spectrum-coachmark-min-width: var(--spectrum-coach-mark-minimum-width); + --spectrum-coachmark-width: var(--spectrum-coach-mark-width); + --spectrum-coachmark-max-width: var(--spectrum-coach-mark-maximum-width); + --spectrum-coachmark-media-height: var(--spectrum-coach-mark-media-height); + --spectrum-coachmark-media-min-height: var(--spectrum-coach-mark-media-minimum-height); + --spectrum-coachmark-border-size: var(--mod-popover-border-width); + --spectrum-coachmark-border-radius: var(--mod-popover-corner-radius); + --spectrum-coachmark-padding: var(--spectrum-coach-mark-edge-to-content); + --spectrum-coachmark-heading-to-action-button: var(--spectrum-spacing-300); + --spectrum-coachmark-header-to-body: var(--spectrum-spacing-200); + --spectrum-coachmark-body-to-footer: var(--spectrum-spacing-300); + --spectrum-coachmark-title-color: var(--spectrum-heading-color); + --spectrum-coachmark-title-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-title-font-style: var(--spectrum-heading-serif-font-style); + --spectrum-coachmark-title-text-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-coachmark-title-font-size: var(--spectrum-coach-mark-title-size); + --spectrum-coachmark-title-text-line-height: var(--spectrum-heading-line-height); + --spectrum-coachmark-content-font-color: var(--spectrum-body-color); + --spectrum-coachmark-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-coachmark-content-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-coachmark-content-line-height: var(--spectrum-body-line-height); + --spectrum-coachmark-content-font-size: var(--spectrum-coach-mark-body-size); + --spectrum-coachmark-step-color: var(--spectrum-coach-mark-pagination-color); + --spectrum-coachmark-step-font-weight: var(--spectrum-body-medium-font-weight); + --spectrum-coachmark-step-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-step-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-coachmark-step-line-height: var(--spectrum-body-line-height); + --spectrum-coachmark-step-font-size: var(--spectrum-coach-mark-pagination-body-size); + --spectrum-coachmark-step-to-bottom: var(--spectrum-coach-mark-pagination-text-to-bottom-edge); + --mod-buttongroup-justify-content: flex-end; + --mod-popover-border-width: var(--spectrum-border-width-100); + --mod-popover-corner-radius: var(--spectrum-corner-radius-100); + --mod-popover-content-area-spacing-vertical: 0; + --mod-button-edge-to-visual-only: 9px; + position: relative; + min-inline-size: var(--mod-coachmark-min-width, var(--spectrum-coachmark-min-width)); + max-inline-size: var(--mod-coachmark-max-width, var(--spectrum-coachmark-max-width)); + inline-size: var(--mod-coachmark-width, var(--spectrum-coachmark-width)); +} +.spectrum-CoachMark-buttongroup { + display: var(--spectrum-coachmark-buttongroup-display); +} +.spectrum-CoachMark-buttongroup--mobile { + --mod-buttongroup-spacing-horizontal: var(--spectrum-spacing-100); + display: var(--spectrum-coachmark-buttongroup-mobile-display); +} +.spectrum-CoachMark-menu { + display: var(--spectrum-coachmark-menu-display); +} +.spectrum-CoachMark-menu--mobile { + display: var(--spectrum-coachmark-menu-mobile-display); +} +.spectrum-CoachMark-image-wrapper { + block-size: var(--mod-coachmark-media-height, var(--spectrum-coachmark-media-height)); + min-block-size: var(--mod-coachmark-media-min-height, var(--spectrum-coachmark-media-min-height)); + inline-size: calc(var(--mod-coachmark-width, var(--spectrum-coachmark-width)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size)) * 2); + object-fit: cover; + object-position: center; + border-start-start-radius: inherit; + border-start-end-radius: inherit; +} +.spectrum-CoachMark-image { + display: block; + inline-size: 100%; + block-size: 100%; + object-fit: cover; + border-start-start-radius: calc(var(--mod-coachmark-border-radius, var(--spectrum-coachmark-border-radius)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size))); + border-start-end-radius: calc(var(--mod-coachmark-border-radius, var(--spectrum-coachmark-border-radius)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size))); +} +.spectrum-CoachMark-content, +.spectrum-CoachMark-footer, +.spectrum-CoachMark-header { + padding-block: 0; + padding-inline: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); +} +.spectrum-CoachMark-header { + padding-block-start: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); + display: flex; + justify-content: space-between; + align-items: center; + margin-block-end: var(--mod-coachmark-header-to-body, var(--spectrum-coachmark-header-to-body)); +} +.spectrum-CoachMark-action-menu { + white-space: nowrap; + z-index: 1; + margin-inline-start: var(--mod-coachmark-heading-to-action-button, var(--spectrum-coachmark-heading-to-action-button)); +} +.spectrum-CoachMark-content { + margin-block-end: var(--mod-coachmark-body-to-footer, var(--spectrum-coachmark-body-to-footer)); + color: var(--mod-coachmark-content-font-color, var(--spectrum-coachmark-content-font-color)); + font-size: var(--mod-coachmark-content-font-size, var(--spectrum-coachmark-content-font-size)); + font-weight: var(--mod-coachmark-content-font-weight, var(--spectrum-coachmark-content-font-weight)); + font-family: var(--mod-coachmark-content-font-family, var(--spectrum-coachmark-content-font-family)); + font-style: var(--mod-coachmark-content-font-style, var(--spectrum-coachmark-content-font-style)); + line-height: var(--mod-coachmark-content-line-height, var(--spectrum-coachmark-content-line-height)); +} +.spectrum-CoachMark-footer { + display: grid; + align-items: end; + margin-block-start: 0; + padding-block-end: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); +} +.spectrum-CoachMark-footer .spectrum-ButtonGroup { + grid-column-start: 2; +} +.spectrum-CoachMark-title { + color: var(--mod-coachmark-title-color, var(--spectrum-coachmark-title-color)); + font-size: var(--mod-coachmark-title-font-size, var(--spectrum-coachmark-title-font-size)); + font-weight: var(--mod-coachmark-title-text-font-weight, var(--spectrum-coachmark-title-text-font-weight)); + font-family: var(--mod-coachmark-title-font-family, var(--spectrum-coachmark-title-font-family)); + font-style: var(--mod-coachmark-title-font-style, var(--spectrum-coachmark-title-font-style)); + line-height: var(--mod-coachmark-title-text-line-height, var(--spectrum-coachmark-title-text-line-height)); + margin-block-end: 0; +} +.spectrum-CoachMark-step { + justify-self: start; + color: var(--mod-coachmark-step-color, var(--spectrum-coachmark-step-color)); + font-size: var(--mod-coachmark-step-font-size, var(--spectrum-coachmark-step-font-size)); + font-weight: var(--mod-coachmark-step-text-font-weight, var(--spectrum-coachmark-step-text-font-weight)); + font-style: var(--mod-coachmark-step-font-style, var(--spectrum-coachmark-step-font-style)); + line-height: var(--mod-coachmark-step-text-line-height, var(--spectrum-coachmark-step-text-line-height)); + white-space: nowrap; + margin-block-end: calc(var(--mod-coachmark-step-to-bottom, var(--spectrum-coachmark-step-to-bottom)) - var(--mod-coachmark-padding, var(--spectrum-coachmark-padding))); +} +/*# sourceMappingURL=components/coachmark/index.css.map */ diff --git a/components/coachmark/index-vars.css b/components/coachmark/index-vars.css new file mode 100644 index 0000000000..339b3d82ce --- /dev/null +++ b/components/coachmark/index-vars.css @@ -0,0 +1,140 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-CoachMark { + --spectrum-coachmark-min-width: var(--spectrum-coach-mark-minimum-width); + --spectrum-coachmark-width: var(--spectrum-coach-mark-width); + --spectrum-coachmark-max-width: var(--spectrum-coach-mark-maximum-width); + --spectrum-coachmark-media-height: var(--spectrum-coach-mark-media-height); + --spectrum-coachmark-media-min-height: var(--spectrum-coach-mark-media-minimum-height); + --spectrum-coachmark-border-size: var(--mod-popover-border-width); + --spectrum-coachmark-border-radius: var(--mod-popover-corner-radius); + --spectrum-coachmark-padding: var(--spectrum-coach-mark-edge-to-content); + --spectrum-coachmark-heading-to-action-button: var(--spectrum-spacing-300); + --spectrum-coachmark-header-to-body: var(--spectrum-spacing-200); + --spectrum-coachmark-body-to-footer: var(--spectrum-spacing-300); + --spectrum-coachmark-title-color: var(--spectrum-heading-color); + --spectrum-coachmark-title-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-title-font-style: var(--spectrum-heading-serif-font-style); + --spectrum-coachmark-title-text-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-coachmark-title-font-size: var(--spectrum-coach-mark-title-size); + --spectrum-coachmark-title-text-line-height: var(--spectrum-heading-line-height); + --spectrum-coachmark-content-font-color: var(--spectrum-body-color); + --spectrum-coachmark-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-coachmark-content-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-coachmark-content-line-height: var(--spectrum-body-line-height); + --spectrum-coachmark-content-font-size: var(--spectrum-coach-mark-body-size); + --spectrum-coachmark-step-color: var(--spectrum-coach-mark-pagination-color); + --spectrum-coachmark-step-font-weight: var(--spectrum-body-medium-font-weight); + --spectrum-coachmark-step-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-step-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-coachmark-step-line-height: var(--spectrum-body-line-height); + --spectrum-coachmark-step-font-size: var(--spectrum-coach-mark-pagination-body-size); + --spectrum-coachmark-step-to-bottom: var(--spectrum-coach-mark-pagination-text-to-bottom-edge); + --mod-buttongroup-justify-content: flex-end; + --mod-popover-border-width: var(--spectrum-border-width-100); + --mod-popover-corner-radius: var(--spectrum-corner-radius-100); + --mod-popover-content-area-spacing-vertical: 0; + --mod-button-edge-to-visual-only: 9px; + position: relative; + min-inline-size: var(--mod-coachmark-min-width, var(--spectrum-coachmark-min-width)); + max-inline-size: var(--mod-coachmark-max-width, var(--spectrum-coachmark-max-width)); + inline-size: var(--mod-coachmark-width, var(--spectrum-coachmark-width)); +} +.spectrum-CoachMark-buttongroup { + display: var(--spectrum-coachmark-buttongroup-display); +} +.spectrum-CoachMark-buttongroup--mobile { + --mod-buttongroup-spacing-horizontal: var(--spectrum-spacing-100); + display: var(--spectrum-coachmark-buttongroup-mobile-display); +} +.spectrum-CoachMark-menu { + display: var(--spectrum-coachmark-menu-display); +} +.spectrum-CoachMark-menu--mobile { + display: var(--spectrum-coachmark-menu-mobile-display); +} +.spectrum-CoachMark-image-wrapper { + block-size: var(--mod-coachmark-media-height, var(--spectrum-coachmark-media-height)); + min-block-size: var(--mod-coachmark-media-min-height, var(--spectrum-coachmark-media-min-height)); + inline-size: calc(var(--mod-coachmark-width, var(--spectrum-coachmark-width)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size)) * 2); + object-fit: cover; + object-position: center; + border-start-start-radius: inherit; + border-start-end-radius: inherit; +} +.spectrum-CoachMark-image { + display: block; + inline-size: 100%; + block-size: 100%; + object-fit: cover; + border-start-start-radius: calc(var(--mod-coachmark-border-radius, var(--spectrum-coachmark-border-radius)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size))); + border-start-end-radius: calc(var(--mod-coachmark-border-radius, var(--spectrum-coachmark-border-radius)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size))); +} +.spectrum-CoachMark-content, +.spectrum-CoachMark-footer, +.spectrum-CoachMark-header { + padding-block: 0; + padding-inline: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); +} +.spectrum-CoachMark-header { + padding-block-start: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); + display: flex; + justify-content: space-between; + align-items: center; + margin-block-end: var(--mod-coachmark-header-to-body, var(--spectrum-coachmark-header-to-body)); +} +.spectrum-CoachMark-action-menu { + white-space: nowrap; + z-index: 1; + margin-inline-start: var(--mod-coachmark-heading-to-action-button, var(--spectrum-coachmark-heading-to-action-button)); +} +.spectrum-CoachMark-content { + margin-block-end: var(--mod-coachmark-body-to-footer, var(--spectrum-coachmark-body-to-footer)); + color: var(--mod-coachmark-content-font-color, var(--spectrum-coachmark-content-font-color)); + font-size: var(--mod-coachmark-content-font-size, var(--spectrum-coachmark-content-font-size)); + font-weight: var(--mod-coachmark-content-font-weight, var(--spectrum-coachmark-content-font-weight)); + font-family: var(--mod-coachmark-content-font-family, var(--spectrum-coachmark-content-font-family)); + font-style: var(--mod-coachmark-content-font-style, var(--spectrum-coachmark-content-font-style)); + line-height: var(--mod-coachmark-content-line-height, var(--spectrum-coachmark-content-line-height)); +} +.spectrum-CoachMark-footer { + display: grid; + align-items: end; + margin-block-start: 0; + padding-block-end: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); +} +.spectrum-CoachMark-footer .spectrum-ButtonGroup { + grid-column-start: 2; +} +.spectrum-CoachMark-title { + color: var(--mod-coachmark-title-color, var(--spectrum-coachmark-title-color)); + font-size: var(--mod-coachmark-title-font-size, var(--spectrum-coachmark-title-font-size)); + font-weight: var(--mod-coachmark-title-text-font-weight, var(--spectrum-coachmark-title-text-font-weight)); + font-family: var(--mod-coachmark-title-font-family, var(--spectrum-coachmark-title-font-family)); + font-style: var(--mod-coachmark-title-font-style, var(--spectrum-coachmark-title-font-style)); + line-height: var(--mod-coachmark-title-text-line-height, var(--spectrum-coachmark-title-text-line-height)); + margin-block-end: 0; +} +.spectrum-CoachMark-step { + justify-self: start; + color: var(--mod-coachmark-step-color, var(--spectrum-coachmark-step-color)); + font-size: var(--mod-coachmark-step-font-size, var(--spectrum-coachmark-step-font-size)); + font-weight: var(--mod-coachmark-step-text-font-weight, var(--spectrum-coachmark-step-text-font-weight)); + font-style: var(--mod-coachmark-step-font-style, var(--spectrum-coachmark-step-font-style)); + line-height: var(--mod-coachmark-step-text-line-height, var(--spectrum-coachmark-step-text-line-height)); + white-space: nowrap; + margin-block-end: calc(var(--mod-coachmark-step-to-bottom, var(--spectrum-coachmark-step-to-bottom)) - var(--mod-coachmark-padding, var(--spectrum-coachmark-padding))); +} +/*# sourceMappingURL=components/coachmark/index.css.map */ diff --git a/components/coachmark/index.css b/components/coachmark/index.css new file mode 100644 index 0000000000..339b3d82ce --- /dev/null +++ b/components/coachmark/index.css @@ -0,0 +1,140 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-CoachMark { + --spectrum-coachmark-min-width: var(--spectrum-coach-mark-minimum-width); + --spectrum-coachmark-width: var(--spectrum-coach-mark-width); + --spectrum-coachmark-max-width: var(--spectrum-coach-mark-maximum-width); + --spectrum-coachmark-media-height: var(--spectrum-coach-mark-media-height); + --spectrum-coachmark-media-min-height: var(--spectrum-coach-mark-media-minimum-height); + --spectrum-coachmark-border-size: var(--mod-popover-border-width); + --spectrum-coachmark-border-radius: var(--mod-popover-corner-radius); + --spectrum-coachmark-padding: var(--spectrum-coach-mark-edge-to-content); + --spectrum-coachmark-heading-to-action-button: var(--spectrum-spacing-300); + --spectrum-coachmark-header-to-body: var(--spectrum-spacing-200); + --spectrum-coachmark-body-to-footer: var(--spectrum-spacing-300); + --spectrum-coachmark-title-color: var(--spectrum-heading-color); + --spectrum-coachmark-title-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-title-font-style: var(--spectrum-heading-serif-font-style); + --spectrum-coachmark-title-text-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-coachmark-title-font-size: var(--spectrum-coach-mark-title-size); + --spectrum-coachmark-title-text-line-height: var(--spectrum-heading-line-height); + --spectrum-coachmark-content-font-color: var(--spectrum-body-color); + --spectrum-coachmark-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-coachmark-content-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-coachmark-content-line-height: var(--spectrum-body-line-height); + --spectrum-coachmark-content-font-size: var(--spectrum-coach-mark-body-size); + --spectrum-coachmark-step-color: var(--spectrum-coach-mark-pagination-color); + --spectrum-coachmark-step-font-weight: var(--spectrum-body-medium-font-weight); + --spectrum-coachmark-step-font-family: var(--spectrum-sans-serif-font); + --spectrum-coachmark-step-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-coachmark-step-line-height: var(--spectrum-body-line-height); + --spectrum-coachmark-step-font-size: var(--spectrum-coach-mark-pagination-body-size); + --spectrum-coachmark-step-to-bottom: var(--spectrum-coach-mark-pagination-text-to-bottom-edge); + --mod-buttongroup-justify-content: flex-end; + --mod-popover-border-width: var(--spectrum-border-width-100); + --mod-popover-corner-radius: var(--spectrum-corner-radius-100); + --mod-popover-content-area-spacing-vertical: 0; + --mod-button-edge-to-visual-only: 9px; + position: relative; + min-inline-size: var(--mod-coachmark-min-width, var(--spectrum-coachmark-min-width)); + max-inline-size: var(--mod-coachmark-max-width, var(--spectrum-coachmark-max-width)); + inline-size: var(--mod-coachmark-width, var(--spectrum-coachmark-width)); +} +.spectrum-CoachMark-buttongroup { + display: var(--spectrum-coachmark-buttongroup-display); +} +.spectrum-CoachMark-buttongroup--mobile { + --mod-buttongroup-spacing-horizontal: var(--spectrum-spacing-100); + display: var(--spectrum-coachmark-buttongroup-mobile-display); +} +.spectrum-CoachMark-menu { + display: var(--spectrum-coachmark-menu-display); +} +.spectrum-CoachMark-menu--mobile { + display: var(--spectrum-coachmark-menu-mobile-display); +} +.spectrum-CoachMark-image-wrapper { + block-size: var(--mod-coachmark-media-height, var(--spectrum-coachmark-media-height)); + min-block-size: var(--mod-coachmark-media-min-height, var(--spectrum-coachmark-media-min-height)); + inline-size: calc(var(--mod-coachmark-width, var(--spectrum-coachmark-width)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size)) * 2); + object-fit: cover; + object-position: center; + border-start-start-radius: inherit; + border-start-end-radius: inherit; +} +.spectrum-CoachMark-image { + display: block; + inline-size: 100%; + block-size: 100%; + object-fit: cover; + border-start-start-radius: calc(var(--mod-coachmark-border-radius, var(--spectrum-coachmark-border-radius)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size))); + border-start-end-radius: calc(var(--mod-coachmark-border-radius, var(--spectrum-coachmark-border-radius)) - var(--mod-coachmark-border-size, var(--spectrum-coachmark-border-size))); +} +.spectrum-CoachMark-content, +.spectrum-CoachMark-footer, +.spectrum-CoachMark-header { + padding-block: 0; + padding-inline: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); +} +.spectrum-CoachMark-header { + padding-block-start: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); + display: flex; + justify-content: space-between; + align-items: center; + margin-block-end: var(--mod-coachmark-header-to-body, var(--spectrum-coachmark-header-to-body)); +} +.spectrum-CoachMark-action-menu { + white-space: nowrap; + z-index: 1; + margin-inline-start: var(--mod-coachmark-heading-to-action-button, var(--spectrum-coachmark-heading-to-action-button)); +} +.spectrum-CoachMark-content { + margin-block-end: var(--mod-coachmark-body-to-footer, var(--spectrum-coachmark-body-to-footer)); + color: var(--mod-coachmark-content-font-color, var(--spectrum-coachmark-content-font-color)); + font-size: var(--mod-coachmark-content-font-size, var(--spectrum-coachmark-content-font-size)); + font-weight: var(--mod-coachmark-content-font-weight, var(--spectrum-coachmark-content-font-weight)); + font-family: var(--mod-coachmark-content-font-family, var(--spectrum-coachmark-content-font-family)); + font-style: var(--mod-coachmark-content-font-style, var(--spectrum-coachmark-content-font-style)); + line-height: var(--mod-coachmark-content-line-height, var(--spectrum-coachmark-content-line-height)); +} +.spectrum-CoachMark-footer { + display: grid; + align-items: end; + margin-block-start: 0; + padding-block-end: var(--mod-coachmark-padding, var(--spectrum-coachmark-padding)); +} +.spectrum-CoachMark-footer .spectrum-ButtonGroup { + grid-column-start: 2; +} +.spectrum-CoachMark-title { + color: var(--mod-coachmark-title-color, var(--spectrum-coachmark-title-color)); + font-size: var(--mod-coachmark-title-font-size, var(--spectrum-coachmark-title-font-size)); + font-weight: var(--mod-coachmark-title-text-font-weight, var(--spectrum-coachmark-title-text-font-weight)); + font-family: var(--mod-coachmark-title-font-family, var(--spectrum-coachmark-title-font-family)); + font-style: var(--mod-coachmark-title-font-style, var(--spectrum-coachmark-title-font-style)); + line-height: var(--mod-coachmark-title-text-line-height, var(--spectrum-coachmark-title-text-line-height)); + margin-block-end: 0; +} +.spectrum-CoachMark-step { + justify-self: start; + color: var(--mod-coachmark-step-color, var(--spectrum-coachmark-step-color)); + font-size: var(--mod-coachmark-step-font-size, var(--spectrum-coachmark-step-font-size)); + font-weight: var(--mod-coachmark-step-text-font-weight, var(--spectrum-coachmark-step-text-font-weight)); + font-style: var(--mod-coachmark-step-font-style, var(--spectrum-coachmark-step-font-style)); + line-height: var(--mod-coachmark-step-text-line-height, var(--spectrum-coachmark-step-text-line-height)); + white-space: nowrap; + margin-block-end: calc(var(--mod-coachmark-step-to-bottom, var(--spectrum-coachmark-step-to-bottom)) - var(--mod-coachmark-padding, var(--spectrum-coachmark-padding))); +} +/*# sourceMappingURL=components/coachmark/index.css.map */ diff --git a/components/coachmark/metadata.json b/components/coachmark/metadata.json new file mode 100644 index 0000000000..265c8f5ff1 --- /dev/null +++ b/components/coachmark/metadata.json @@ -0,0 +1,115 @@ +{ + "selectors": [ + ".spectrum-CoachMark", + ".spectrum-CoachMark-action-menu", + ".spectrum-CoachMark-buttongroup", + ".spectrum-CoachMark-buttongroup--mobile", + ".spectrum-CoachMark-content", + ".spectrum-CoachMark-content,\n.spectrum-CoachMark-footer,\n.spectrum-CoachMark-header", + ".spectrum-CoachMark-footer", + ".spectrum-CoachMark-footer .spectrum-ButtonGroup", + ".spectrum-CoachMark-header", + ".spectrum-CoachMark-image", + ".spectrum-CoachMark-image-wrapper", + ".spectrum-CoachMark-menu", + ".spectrum-CoachMark-menu--mobile", + ".spectrum-CoachMark-step", + ".spectrum-CoachMark-title" + ], + "mods": [ + "--mod-coachmark-body-to-footer", + "--mod-coachmark-border-radius", + "--mod-coachmark-border-size", + "--mod-coachmark-content-font-color", + "--mod-coachmark-content-font-family", + "--mod-coachmark-content-font-size", + "--mod-coachmark-content-font-style", + "--mod-coachmark-content-font-weight", + "--mod-coachmark-content-line-height", + "--mod-coachmark-header-to-body", + "--mod-coachmark-heading-to-action-button", + "--mod-coachmark-max-width", + "--mod-coachmark-media-height", + "--mod-coachmark-media-min-height", + "--mod-coachmark-min-width", + "--mod-coachmark-padding", + "--mod-coachmark-step-color", + "--mod-coachmark-step-font-size", + "--mod-coachmark-step-font-style", + "--mod-coachmark-step-text-font-weight", + "--mod-coachmark-step-text-line-height", + "--mod-coachmark-step-to-bottom", + "--mod-coachmark-title-color", + "--mod-coachmark-title-font-family", + "--mod-coachmark-title-font-size", + "--mod-coachmark-title-font-style", + "--mod-coachmark-title-text-font-weight", + "--mod-coachmark-title-text-line-height", + "--mod-coachmark-width", + "--mod-popover-border-width", + "--mod-popover-corner-radius" + ], + "spectrum": [ + "--spectrum-body-color", + "--spectrum-body-line-height", + "--spectrum-body-medium-font-weight", + "--spectrum-body-sans-serif-font-style", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-border-width-100", + "--spectrum-coach-mark-body-size", + "--spectrum-coach-mark-edge-to-content", + "--spectrum-coach-mark-maximum-width", + "--spectrum-coach-mark-media-height", + "--spectrum-coach-mark-media-minimum-height", + "--spectrum-coach-mark-minimum-width", + "--spectrum-coach-mark-pagination-body-size", + "--spectrum-coach-mark-pagination-color", + "--spectrum-coach-mark-pagination-text-to-bottom-edge", + "--spectrum-coach-mark-title-size", + "--spectrum-coach-mark-width", + "--spectrum-coachmark-body-to-footer", + "--spectrum-coachmark-border-radius", + "--spectrum-coachmark-border-size", + "--spectrum-coachmark-buttongroup-display", + "--spectrum-coachmark-buttongroup-mobile-display", + "--spectrum-coachmark-content-font-color", + "--spectrum-coachmark-content-font-family", + "--spectrum-coachmark-content-font-size", + "--spectrum-coachmark-content-font-style", + "--spectrum-coachmark-content-font-weight", + "--spectrum-coachmark-content-line-height", + "--spectrum-coachmark-header-to-body", + "--spectrum-coachmark-heading-to-action-button", + "--spectrum-coachmark-max-width", + "--spectrum-coachmark-media-height", + "--spectrum-coachmark-media-min-height", + "--spectrum-coachmark-menu-display", + "--spectrum-coachmark-menu-mobile-display", + "--spectrum-coachmark-min-width", + "--spectrum-coachmark-padding", + "--spectrum-coachmark-step-color", + "--spectrum-coachmark-step-font-size", + "--spectrum-coachmark-step-font-style", + "--spectrum-coachmark-step-text-font-weight", + "--spectrum-coachmark-step-text-line-height", + "--spectrum-coachmark-step-to-bottom", + "--spectrum-coachmark-title-color", + "--spectrum-coachmark-title-font-family", + "--spectrum-coachmark-title-font-size", + "--spectrum-coachmark-title-font-style", + "--spectrum-coachmark-title-text-font-weight", + "--spectrum-coachmark-title-text-line-height", + "--spectrum-coachmark-width", + "--spectrum-corner-radius-100", + "--spectrum-heading-color", + "--spectrum-heading-line-height", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-heading-serif-font-style", + "--spectrum-sans-serif-font", + "--spectrum-spacing-100", + "--spectrum-spacing-200", + "--spectrum-spacing-300" + ], + "system": [], + "a11y": [] +} diff --git a/components/coachmark/package.json b/components/coachmark/package.json new file mode 100644 index 0000000000..554fc3d7ac --- /dev/null +++ b/components/coachmark/package.json @@ -0,0 +1,56 @@ +{ + "name": "@spectrum-css/coachmark", + "version": "7.1.1", + "description": "The Spectrum CSS coachmark component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/coachmark", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/coachmark" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/actionmenu": ">=6", + "@spectrum-css/button": ">=13", + "@spectrum-css/buttongroup": ">=7", + "@spectrum-css/menu": ">=7", + "@spectrum-css/popover": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/button": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/actionmenu": "workspace:^", + "@spectrum-css/button": "workspace:^", + "@spectrum-css/buttongroup": "workspace:^", + "@spectrum-css/menu": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/coachmark/template.js b/components/coachmark/template.js new file mode 100644 index 0000000000..5a825b08fa --- /dev/null +++ b/components/coachmark/template.js @@ -0,0 +1,120 @@ +import { Template as ActionMenu } from "@spectrum-css/actionmenu/stories/template.js"; +import { Template as ButtonGroup } from "@spectrum-css/buttongroup/stories/template.js"; +import { Template as Popover } from "@spectrum-css/popover/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-CoachMark", + customClasses = [], + customStyles = {}, + hasActionMenu = false, + hasPagination, + hasImage, + isOpen = true, +} = {}, context = {}) => { + const { globals = {} } = context; + const scale = globals.scale ?? "medium"; + + return html` +
    +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + > + ${Popover({ + nested: true, + testId: "popover-nested", + id: "popover-nested", + triggerId: "trigger-nested", + customStyles: { + "margin-inline-start": "0px", + }, + customClasses: [`${rootClass}-popover`], + isOpen: true, + content: [ + html` + ${hasImage ? html` +
    + +
    ` : ""} +
    +
    Try playing with a pixel brush
    +
    + ${when(hasActionMenu, () => + ActionMenu({ + isOpen, + position: "bottom", + id: "popover-nested-2", + triggerId: "trigger-nested-2", + customStyles: { + "inset-inline-start": "unset", + "inset-block-start": "unset", + "margin-block-start": "30px", + "margin-inline-start": "-32px" + }, + iconName: "More", + size: scale === "large" ? "s" : "m", + items: [ + { + label: "Skip tour", + }, + { + label: "Reset tour", + } + ], + }, context) + )} +
    +
    +
    + Pixel brushes use pixels to create brush strokes, just like in other design and drawing tools. Start drawing, and zoom in to see the pixels in each stroke. +
    + + ` + ], + }, context)} +
    +
    + `; +}; diff --git a/components/colorarea/index-base.css b/components/colorarea/index-base.css new file mode 100644 index 0000000000..48e12dd904 --- /dev/null +++ b/components/colorarea/index-base.css @@ -0,0 +1,85 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorArea { + --spectrum-colorarea-border-radius: var(--spectrum-color-area-border-rounding); + --spectrum-colorarea-border-color: rgba(0, 0, 0, 0.1); + --spectrum-colorarea-disabled-background-color: var(--spectrum-disabled-background-color); + --spectrum-colorarea-border-width: var(--spectrum-color-area-border-width); + --spectrum-colorarea-height: var(--spectrum-color-area-height); + --spectrum-colorarea-width: var(--spectrum-color-area-width); + --spectrum-colorarea-min-width: var(--spectrum-color-area-minimum-width); + --spectrum-colorarea-min-height: var(--spectrum-color-area-minimum-height); +} +@media (forced-colors: active) { + .spectrum-ColorArea { + --highcontrast-colorarea-border-color-disabled: GrayText; + --highcontrast-colorarea-border-color: Canvas; + --highcontrast-colorarea-fill-color-disabled: Canvas; + } + .spectrum-ColorArea-gradient, + .spectrum-ColorArea.is-disabled, + .spectrum-ColorHandle-color { + forced-color-adjust: none; + } +} +.spectrum-ColorArea { + position: relative; + display: inline-block; + cursor: default; + -webkit-user-select: none; + user-select: none; + min-inline-size: var(--mod-colorarea-min-width, var(--spectrum-colorarea-min-width)); + min-block-size: var(--mod-colorarea-min-height, var(--spectrum-colorarea-min-height)); + inline-size: var(--mod-colorarea-width, var(--spectrum-colorarea-width)); + block-size: var(--mod-colorarea-height, var(--spectrum-colorarea-height)); + box-sizing: border-box; + border-radius: var(--mod-colorarea-border-radius, var(--spectrum-colorarea-border-radius)); + border: var(--mod-colorarea-border-width, var(--spectrum-colorarea-border-width)) solid var(--highcontrast-colorarea-border-color, var(--mod-colorarea-border-color, var(--spectrum-colorarea-border-color))); +} +.spectrum-ColorArea.is-focused { + z-index: 1; +} +.spectrum-ColorArea.is-disabled { + pointer-events: none; + background: var(--highcontrast-colorarea-fill-color-disabled, var(--mod-colorarea-disabled-background-color, var(--spectrum-colorarea-disabled-background-color))); + border: var(--mod-colorarea-border-width, var(--spectrum-colorarea-border-width)) solid var(--highcontrast-colorarea-border-color-disabled); +} +.spectrum-ColorArea.is-disabled .spectrum-ColorArea-gradient { + display: none; +} +.spectrum-ColorArea-handle { + transform: translate(calc(var(--mod-colorarea-width, var(--spectrum-colorarea-width)) - var(--spectrum-colorarea-border-width))); + inset-block-start: 0; +} +.spectrum-ColorArea-handle:dir(rtl), +[dir="rtl"] .spectrum-ColorArea-handle { + inset-inline-end: 0; +} +.spectrum-ColorArea-gradient { + inline-size: 100%; + block-size: 100%; + border-radius: var(--mod-colorarea-border-radius, var(--spectrum-colorarea-border-radius)); +} +.spectrum-ColorArea-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +/*# sourceMappingURL=components/colorarea/index.css.map */ diff --git a/components/colorarea/index-vars.css b/components/colorarea/index-vars.css new file mode 100644 index 0000000000..48e12dd904 --- /dev/null +++ b/components/colorarea/index-vars.css @@ -0,0 +1,85 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorArea { + --spectrum-colorarea-border-radius: var(--spectrum-color-area-border-rounding); + --spectrum-colorarea-border-color: rgba(0, 0, 0, 0.1); + --spectrum-colorarea-disabled-background-color: var(--spectrum-disabled-background-color); + --spectrum-colorarea-border-width: var(--spectrum-color-area-border-width); + --spectrum-colorarea-height: var(--spectrum-color-area-height); + --spectrum-colorarea-width: var(--spectrum-color-area-width); + --spectrum-colorarea-min-width: var(--spectrum-color-area-minimum-width); + --spectrum-colorarea-min-height: var(--spectrum-color-area-minimum-height); +} +@media (forced-colors: active) { + .spectrum-ColorArea { + --highcontrast-colorarea-border-color-disabled: GrayText; + --highcontrast-colorarea-border-color: Canvas; + --highcontrast-colorarea-fill-color-disabled: Canvas; + } + .spectrum-ColorArea-gradient, + .spectrum-ColorArea.is-disabled, + .spectrum-ColorHandle-color { + forced-color-adjust: none; + } +} +.spectrum-ColorArea { + position: relative; + display: inline-block; + cursor: default; + -webkit-user-select: none; + user-select: none; + min-inline-size: var(--mod-colorarea-min-width, var(--spectrum-colorarea-min-width)); + min-block-size: var(--mod-colorarea-min-height, var(--spectrum-colorarea-min-height)); + inline-size: var(--mod-colorarea-width, var(--spectrum-colorarea-width)); + block-size: var(--mod-colorarea-height, var(--spectrum-colorarea-height)); + box-sizing: border-box; + border-radius: var(--mod-colorarea-border-radius, var(--spectrum-colorarea-border-radius)); + border: var(--mod-colorarea-border-width, var(--spectrum-colorarea-border-width)) solid var(--highcontrast-colorarea-border-color, var(--mod-colorarea-border-color, var(--spectrum-colorarea-border-color))); +} +.spectrum-ColorArea.is-focused { + z-index: 1; +} +.spectrum-ColorArea.is-disabled { + pointer-events: none; + background: var(--highcontrast-colorarea-fill-color-disabled, var(--mod-colorarea-disabled-background-color, var(--spectrum-colorarea-disabled-background-color))); + border: var(--mod-colorarea-border-width, var(--spectrum-colorarea-border-width)) solid var(--highcontrast-colorarea-border-color-disabled); +} +.spectrum-ColorArea.is-disabled .spectrum-ColorArea-gradient { + display: none; +} +.spectrum-ColorArea-handle { + transform: translate(calc(var(--mod-colorarea-width, var(--spectrum-colorarea-width)) - var(--spectrum-colorarea-border-width))); + inset-block-start: 0; +} +.spectrum-ColorArea-handle:dir(rtl), +[dir="rtl"] .spectrum-ColorArea-handle { + inset-inline-end: 0; +} +.spectrum-ColorArea-gradient { + inline-size: 100%; + block-size: 100%; + border-radius: var(--mod-colorarea-border-radius, var(--spectrum-colorarea-border-radius)); +} +.spectrum-ColorArea-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +/*# sourceMappingURL=components/colorarea/index.css.map */ diff --git a/components/colorarea/index.css b/components/colorarea/index.css new file mode 100644 index 0000000000..48e12dd904 --- /dev/null +++ b/components/colorarea/index.css @@ -0,0 +1,85 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorArea { + --spectrum-colorarea-border-radius: var(--spectrum-color-area-border-rounding); + --spectrum-colorarea-border-color: rgba(0, 0, 0, 0.1); + --spectrum-colorarea-disabled-background-color: var(--spectrum-disabled-background-color); + --spectrum-colorarea-border-width: var(--spectrum-color-area-border-width); + --spectrum-colorarea-height: var(--spectrum-color-area-height); + --spectrum-colorarea-width: var(--spectrum-color-area-width); + --spectrum-colorarea-min-width: var(--spectrum-color-area-minimum-width); + --spectrum-colorarea-min-height: var(--spectrum-color-area-minimum-height); +} +@media (forced-colors: active) { + .spectrum-ColorArea { + --highcontrast-colorarea-border-color-disabled: GrayText; + --highcontrast-colorarea-border-color: Canvas; + --highcontrast-colorarea-fill-color-disabled: Canvas; + } + .spectrum-ColorArea-gradient, + .spectrum-ColorArea.is-disabled, + .spectrum-ColorHandle-color { + forced-color-adjust: none; + } +} +.spectrum-ColorArea { + position: relative; + display: inline-block; + cursor: default; + -webkit-user-select: none; + user-select: none; + min-inline-size: var(--mod-colorarea-min-width, var(--spectrum-colorarea-min-width)); + min-block-size: var(--mod-colorarea-min-height, var(--spectrum-colorarea-min-height)); + inline-size: var(--mod-colorarea-width, var(--spectrum-colorarea-width)); + block-size: var(--mod-colorarea-height, var(--spectrum-colorarea-height)); + box-sizing: border-box; + border-radius: var(--mod-colorarea-border-radius, var(--spectrum-colorarea-border-radius)); + border: var(--mod-colorarea-border-width, var(--spectrum-colorarea-border-width)) solid var(--highcontrast-colorarea-border-color, var(--mod-colorarea-border-color, var(--spectrum-colorarea-border-color))); +} +.spectrum-ColorArea.is-focused { + z-index: 1; +} +.spectrum-ColorArea.is-disabled { + pointer-events: none; + background: var(--highcontrast-colorarea-fill-color-disabled, var(--mod-colorarea-disabled-background-color, var(--spectrum-colorarea-disabled-background-color))); + border: var(--mod-colorarea-border-width, var(--spectrum-colorarea-border-width)) solid var(--highcontrast-colorarea-border-color-disabled); +} +.spectrum-ColorArea.is-disabled .spectrum-ColorArea-gradient { + display: none; +} +.spectrum-ColorArea-handle { + transform: translate(calc(var(--mod-colorarea-width, var(--spectrum-colorarea-width)) - var(--spectrum-colorarea-border-width))); + inset-block-start: 0; +} +.spectrum-ColorArea-handle:dir(rtl), +[dir="rtl"] .spectrum-ColorArea-handle { + inset-inline-end: 0; +} +.spectrum-ColorArea-gradient { + inline-size: 100%; + block-size: 100%; + border-radius: var(--mod-colorarea-border-radius, var(--spectrum-colorarea-border-radius)); +} +.spectrum-ColorArea-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +/*# sourceMappingURL=components/colorarea/index.css.map */ diff --git a/components/colorarea/metadata.json b/components/colorarea/metadata.json new file mode 100644 index 0000000000..91f92dc6a0 --- /dev/null +++ b/components/colorarea/metadata.json @@ -0,0 +1,46 @@ +{ + "selectors": [ + ".spectrum-ColorArea", + ".spectrum-ColorArea-gradient", + ".spectrum-ColorArea-gradient,\n\t.spectrum-ColorArea.is-disabled,\n\t.spectrum-ColorHandle-color", + ".spectrum-ColorArea-handle", + ".spectrum-ColorArea-handle:dir(rtl),\n[dir=\"rtl\"] .spectrum-ColorArea-handle", + ".spectrum-ColorArea-slider", + ".spectrum-ColorArea.is-disabled", + ".spectrum-ColorArea.is-disabled .spectrum-ColorArea-gradient", + ".spectrum-ColorArea.is-focused" + ], + "mods": [ + "--mod-colorarea-border-color", + "--mod-colorarea-border-radius", + "--mod-colorarea-border-width", + "--mod-colorarea-disabled-background-color", + "--mod-colorarea-height", + "--mod-colorarea-min-height", + "--mod-colorarea-min-width", + "--mod-colorarea-width" + ], + "spectrum": [ + "--spectrum-color-area-border-rounding", + "--spectrum-color-area-border-width", + "--spectrum-color-area-height", + "--spectrum-color-area-minimum-height", + "--spectrum-color-area-minimum-width", + "--spectrum-color-area-width", + "--spectrum-colorarea-border-color", + "--spectrum-colorarea-border-radius", + "--spectrum-colorarea-border-width", + "--spectrum-colorarea-disabled-background-color", + "--spectrum-colorarea-height", + "--spectrum-colorarea-min-height", + "--spectrum-colorarea-min-width", + "--spectrum-colorarea-width", + "--spectrum-disabled-background-color" + ], + "system": [], + "a11y": [ + "--highcontrast-colorarea-border-color", + "--highcontrast-colorarea-border-color-disabled", + "--highcontrast-colorarea-fill-color-disabled" + ] +} diff --git a/components/colorarea/package.json b/components/colorarea/package.json new file mode 100644 index 0000000000..c39dc588dd --- /dev/null +++ b/components/colorarea/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/colorarea", + "version": "5.1.1", + "description": "The Spectrum CSS Color Area component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/colorarea", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/colorarea" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/colorhandle": ">=8", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/colorhandle": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/colorarea/template.js b/components/colorarea/template.js new file mode 100644 index 0000000000..2109575be7 --- /dev/null +++ b/components/colorarea/template.js @@ -0,0 +1,72 @@ +import { Template as ColorHandle } from "@spectrum-css/colorhandle/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ColorArea", + customClasses = [], + customStyles = {}, + isDisabled = false, + isFocused = false, + customWidth, + customHeight, +} = {}, context = {}) => { + const { updateArgs } = context; + return html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap({ + "--mod-colorarea-height": customHeight, + "--mod-colorarea-width": customWidth, + ...customStyles, + })} + @focusin=${() => { + updateArgs({ isFocused: true }); + }} + @focusout=${() => { + updateArgs({ isFocused: false }); + }} + > +
    + ${ColorHandle({ + isDisabled, + customClasses: [`${rootClass}-handle`], + customStyles: { + "--spectrum-picked-color": "rgba(255, 0, 0)", + "transform": customWidth ? "translate(var(--mod-colorarea-width), 0)" : undefined, + }, + }, context)} + + +
    + `; +}; diff --git a/components/colorhandle/index-base.css b/components/colorhandle/index-base.css new file mode 100644 index 0000000000..5dddad5b55 --- /dev/null +++ b/components/colorhandle/index-base.css @@ -0,0 +1,87 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorHandle { + --spectrum-colorhandle-size: var(--spectrum-color-handle-size); + --spectrum-colorhandle-focused-size: var(--spectrum-color-handle-size-key-focus); + --spectrum-colorhandle-hitarea-size: var(--spectrum-color-control-track-width); + --spectrum-colorhandle-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-colorhandle-animation-easing: ease-in-out; + --spectrum-colorhandle-outer-border-color: rgba(var(--spectrum-black-rgb), var(--spectrum-color-handle-outer-border-opacity)); + --spectrum-colorhandle-outer-border-width: var(--spectrum-color-handle-outer-border-width); + --spectrum-colorhandle-inner-border-color: rgba(var(--spectrum-black-rgb), var(--spectrum-color-handle-inner-border-opacity)); + --spectrum-colorhandle-inner-border-width: var(--spectrum-color-handle-inner-border-width); + --spectrum-colorhandle-border-width: var(--spectrum-color-handle-border-width); + --spectrum-colorhandle-border-color: var(--spectrum-white); + --spectrum-colorhandle-border-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-colorhandle-fill-color-disabled: var(--spectrum-disabled-background-color); + --mod-opacity-checkerboard-position: 50%; + display: block; + position: absolute; + z-index: 1; + box-sizing: border-box; + inline-size: var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)); + block-size: var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)); + margin-inline: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) / 2 * -1); + margin-block: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) / 2 * -1); + border-width: var(--mod-colorhandle-border-width, var(--spectrum-colorhandle-border-width)); + border-color: var(--highcontrast-colorhandle-border-color, var(--mod-colorhandle-border-color, var(--spectrum-colorhandle-border-color))); + border-style: solid; + box-shadow: 0 0 0 var(--mod-colorhandle-outer-border-width, var(--spectrum-colorhandle-outer-border-width)) var(--mod-colorhandle-outer-border-color, var(--spectrum-colorhandle-outer-border-color)); + border-radius: 100%; + transition: all var(--mod-colorhandle-animation-duration, var(--spectrum-colorhandle-animation-duration)) var(--mod-colorhandle-animation-easing, var(--spectrum-colorhandle-animation-easing)); +} +.spectrum-ColorHandle:after { + content: ""; + inset-inline: calc(50% - var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)) / 2); + inset-block: calc(50% - var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)) / 2); + position: absolute; + display: block; + inline-size: var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)); + block-size: var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)); + border-radius: var(--mod-colorhandle-hitarea-border-radius, 100%); +} +.spectrum-ColorHandle.is-focused, +.spectrum-ColorHandle:focus-visible { + inline-size: var(--mod-colorhandle-focused-size, var(--spectrum-colorhandle-focused-size)); + block-size: var(--mod-colorhandle-focused-size, var(--spectrum-colorhandle-focused-size)); + margin-inline: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) * -1); + margin-block: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) * -1); + outline: none; +} +.spectrum-ColorHandle.is-disabled { + pointer-events: none; + border-color: var(--highcontrast-colorhandle-border-color-disabled, var(--mod-colorhandle-border-color-disabled, var(--spectrum-colorhandle-border-color-disabled))); + background: var(--highcontrast-colorhandle-fill-color-disabled, var(--mod-colorhandle-fill-color-disabled, var(--spectrum-colorhandle-fill-color-disabled))); + box-shadow: none; +} +.spectrum-ColorHandle.is-disabled .spectrum-ColorHandle-inner { + display: none; +} +.spectrum-ColorHandle-inner { + border-radius: 100%; + inline-size: 100%; + block-size: 100%; + box-shadow: inset 0 0 0 var(--mod-colorhandle-inner-border-width, var(--spectrum-colorhandle-inner-border-width)) var(--mod-colorhandle-inner-border-color, var(--spectrum-colorhandle-inner-border-color)); + background-color: var(--spectrum-picked-color); +} +@media (forced-colors: active) { + .spectrum-ColorHandle { + forced-color-adjust: none; + } + .spectrum-ColorHandle.is-disabled { + --highcontrast-colorhandle-border-color-disabled: GrayText; + --highcontrast-colorhandle-fill-color-disabled: Canvas; + } +} +/*# sourceMappingURL=components/colorhandle/index.css.map */ diff --git a/components/colorhandle/index-vars.css b/components/colorhandle/index-vars.css new file mode 100644 index 0000000000..5dddad5b55 --- /dev/null +++ b/components/colorhandle/index-vars.css @@ -0,0 +1,87 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorHandle { + --spectrum-colorhandle-size: var(--spectrum-color-handle-size); + --spectrum-colorhandle-focused-size: var(--spectrum-color-handle-size-key-focus); + --spectrum-colorhandle-hitarea-size: var(--spectrum-color-control-track-width); + --spectrum-colorhandle-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-colorhandle-animation-easing: ease-in-out; + --spectrum-colorhandle-outer-border-color: rgba(var(--spectrum-black-rgb), var(--spectrum-color-handle-outer-border-opacity)); + --spectrum-colorhandle-outer-border-width: var(--spectrum-color-handle-outer-border-width); + --spectrum-colorhandle-inner-border-color: rgba(var(--spectrum-black-rgb), var(--spectrum-color-handle-inner-border-opacity)); + --spectrum-colorhandle-inner-border-width: var(--spectrum-color-handle-inner-border-width); + --spectrum-colorhandle-border-width: var(--spectrum-color-handle-border-width); + --spectrum-colorhandle-border-color: var(--spectrum-white); + --spectrum-colorhandle-border-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-colorhandle-fill-color-disabled: var(--spectrum-disabled-background-color); + --mod-opacity-checkerboard-position: 50%; + display: block; + position: absolute; + z-index: 1; + box-sizing: border-box; + inline-size: var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)); + block-size: var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)); + margin-inline: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) / 2 * -1); + margin-block: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) / 2 * -1); + border-width: var(--mod-colorhandle-border-width, var(--spectrum-colorhandle-border-width)); + border-color: var(--highcontrast-colorhandle-border-color, var(--mod-colorhandle-border-color, var(--spectrum-colorhandle-border-color))); + border-style: solid; + box-shadow: 0 0 0 var(--mod-colorhandle-outer-border-width, var(--spectrum-colorhandle-outer-border-width)) var(--mod-colorhandle-outer-border-color, var(--spectrum-colorhandle-outer-border-color)); + border-radius: 100%; + transition: all var(--mod-colorhandle-animation-duration, var(--spectrum-colorhandle-animation-duration)) var(--mod-colorhandle-animation-easing, var(--spectrum-colorhandle-animation-easing)); +} +.spectrum-ColorHandle:after { + content: ""; + inset-inline: calc(50% - var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)) / 2); + inset-block: calc(50% - var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)) / 2); + position: absolute; + display: block; + inline-size: var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)); + block-size: var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)); + border-radius: var(--mod-colorhandle-hitarea-border-radius, 100%); +} +.spectrum-ColorHandle.is-focused, +.spectrum-ColorHandle:focus-visible { + inline-size: var(--mod-colorhandle-focused-size, var(--spectrum-colorhandle-focused-size)); + block-size: var(--mod-colorhandle-focused-size, var(--spectrum-colorhandle-focused-size)); + margin-inline: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) * -1); + margin-block: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) * -1); + outline: none; +} +.spectrum-ColorHandle.is-disabled { + pointer-events: none; + border-color: var(--highcontrast-colorhandle-border-color-disabled, var(--mod-colorhandle-border-color-disabled, var(--spectrum-colorhandle-border-color-disabled))); + background: var(--highcontrast-colorhandle-fill-color-disabled, var(--mod-colorhandle-fill-color-disabled, var(--spectrum-colorhandle-fill-color-disabled))); + box-shadow: none; +} +.spectrum-ColorHandle.is-disabled .spectrum-ColorHandle-inner { + display: none; +} +.spectrum-ColorHandle-inner { + border-radius: 100%; + inline-size: 100%; + block-size: 100%; + box-shadow: inset 0 0 0 var(--mod-colorhandle-inner-border-width, var(--spectrum-colorhandle-inner-border-width)) var(--mod-colorhandle-inner-border-color, var(--spectrum-colorhandle-inner-border-color)); + background-color: var(--spectrum-picked-color); +} +@media (forced-colors: active) { + .spectrum-ColorHandle { + forced-color-adjust: none; + } + .spectrum-ColorHandle.is-disabled { + --highcontrast-colorhandle-border-color-disabled: GrayText; + --highcontrast-colorhandle-fill-color-disabled: Canvas; + } +} +/*# sourceMappingURL=components/colorhandle/index.css.map */ diff --git a/components/colorhandle/index.css b/components/colorhandle/index.css new file mode 100644 index 0000000000..5dddad5b55 --- /dev/null +++ b/components/colorhandle/index.css @@ -0,0 +1,87 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorHandle { + --spectrum-colorhandle-size: var(--spectrum-color-handle-size); + --spectrum-colorhandle-focused-size: var(--spectrum-color-handle-size-key-focus); + --spectrum-colorhandle-hitarea-size: var(--spectrum-color-control-track-width); + --spectrum-colorhandle-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-colorhandle-animation-easing: ease-in-out; + --spectrum-colorhandle-outer-border-color: rgba(var(--spectrum-black-rgb), var(--spectrum-color-handle-outer-border-opacity)); + --spectrum-colorhandle-outer-border-width: var(--spectrum-color-handle-outer-border-width); + --spectrum-colorhandle-inner-border-color: rgba(var(--spectrum-black-rgb), var(--spectrum-color-handle-inner-border-opacity)); + --spectrum-colorhandle-inner-border-width: var(--spectrum-color-handle-inner-border-width); + --spectrum-colorhandle-border-width: var(--spectrum-color-handle-border-width); + --spectrum-colorhandle-border-color: var(--spectrum-white); + --spectrum-colorhandle-border-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-colorhandle-fill-color-disabled: var(--spectrum-disabled-background-color); + --mod-opacity-checkerboard-position: 50%; + display: block; + position: absolute; + z-index: 1; + box-sizing: border-box; + inline-size: var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)); + block-size: var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)); + margin-inline: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) / 2 * -1); + margin-block: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) / 2 * -1); + border-width: var(--mod-colorhandle-border-width, var(--spectrum-colorhandle-border-width)); + border-color: var(--highcontrast-colorhandle-border-color, var(--mod-colorhandle-border-color, var(--spectrum-colorhandle-border-color))); + border-style: solid; + box-shadow: 0 0 0 var(--mod-colorhandle-outer-border-width, var(--spectrum-colorhandle-outer-border-width)) var(--mod-colorhandle-outer-border-color, var(--spectrum-colorhandle-outer-border-color)); + border-radius: 100%; + transition: all var(--mod-colorhandle-animation-duration, var(--spectrum-colorhandle-animation-duration)) var(--mod-colorhandle-animation-easing, var(--spectrum-colorhandle-animation-easing)); +} +.spectrum-ColorHandle:after { + content: ""; + inset-inline: calc(50% - var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)) / 2); + inset-block: calc(50% - var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)) / 2); + position: absolute; + display: block; + inline-size: var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)); + block-size: var(--mod-colorhandle-hitarea-size, var(--spectrum-colorhandle-hitarea-size)); + border-radius: var(--mod-colorhandle-hitarea-border-radius, 100%); +} +.spectrum-ColorHandle.is-focused, +.spectrum-ColorHandle:focus-visible { + inline-size: var(--mod-colorhandle-focused-size, var(--spectrum-colorhandle-focused-size)); + block-size: var(--mod-colorhandle-focused-size, var(--spectrum-colorhandle-focused-size)); + margin-inline: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) * -1); + margin-block: calc(var(--mod-colorhandle-size, var(--spectrum-colorhandle-size)) * -1); + outline: none; +} +.spectrum-ColorHandle.is-disabled { + pointer-events: none; + border-color: var(--highcontrast-colorhandle-border-color-disabled, var(--mod-colorhandle-border-color-disabled, var(--spectrum-colorhandle-border-color-disabled))); + background: var(--highcontrast-colorhandle-fill-color-disabled, var(--mod-colorhandle-fill-color-disabled, var(--spectrum-colorhandle-fill-color-disabled))); + box-shadow: none; +} +.spectrum-ColorHandle.is-disabled .spectrum-ColorHandle-inner { + display: none; +} +.spectrum-ColorHandle-inner { + border-radius: 100%; + inline-size: 100%; + block-size: 100%; + box-shadow: inset 0 0 0 var(--mod-colorhandle-inner-border-width, var(--spectrum-colorhandle-inner-border-width)) var(--mod-colorhandle-inner-border-color, var(--spectrum-colorhandle-inner-border-color)); + background-color: var(--spectrum-picked-color); +} +@media (forced-colors: active) { + .spectrum-ColorHandle { + forced-color-adjust: none; + } + .spectrum-ColorHandle.is-disabled { + --highcontrast-colorhandle-border-color-disabled: GrayText; + --highcontrast-colorhandle-fill-color-disabled: Canvas; + } +} +/*# sourceMappingURL=components/colorhandle/index.css.map */ diff --git a/components/colorhandle/metadata.json b/components/colorhandle/metadata.json new file mode 100644 index 0000000000..e0ca143118 --- /dev/null +++ b/components/colorhandle/metadata.json @@ -0,0 +1,61 @@ +{ + "selectors": [ + ".spectrum-ColorHandle", + ".spectrum-ColorHandle-inner", + ".spectrum-ColorHandle.is-disabled", + ".spectrum-ColorHandle.is-disabled .spectrum-ColorHandle-inner", + ".spectrum-ColorHandle.is-focused,\n.spectrum-ColorHandle:focus-visible", + ".spectrum-ColorHandle:after" + ], + "mods": [ + "--mod-colorhandle-animation-duration", + "--mod-colorhandle-animation-easing", + "--mod-colorhandle-border-color", + "--mod-colorhandle-border-color-disabled", + "--mod-colorhandle-border-width", + "--mod-colorhandle-fill-color-disabled", + "--mod-colorhandle-focused-size", + "--mod-colorhandle-hitarea-border-radius", + "--mod-colorhandle-hitarea-size", + "--mod-colorhandle-inner-border-color", + "--mod-colorhandle-inner-border-width", + "--mod-colorhandle-outer-border-color", + "--mod-colorhandle-outer-border-width", + "--mod-colorhandle-size" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-black-rgb", + "--spectrum-color-control-track-width", + "--spectrum-color-handle-border-width", + "--spectrum-color-handle-inner-border-opacity", + "--spectrum-color-handle-inner-border-width", + "--spectrum-color-handle-outer-border-opacity", + "--spectrum-color-handle-outer-border-width", + "--spectrum-color-handle-size", + "--spectrum-color-handle-size-key-focus", + "--spectrum-colorhandle-animation-duration", + "--spectrum-colorhandle-animation-easing", + "--spectrum-colorhandle-border-color", + "--spectrum-colorhandle-border-color-disabled", + "--spectrum-colorhandle-border-width", + "--spectrum-colorhandle-fill-color-disabled", + "--spectrum-colorhandle-focused-size", + "--spectrum-colorhandle-hitarea-size", + "--spectrum-colorhandle-inner-border-color", + "--spectrum-colorhandle-inner-border-width", + "--spectrum-colorhandle-outer-border-color", + "--spectrum-colorhandle-outer-border-width", + "--spectrum-colorhandle-size", + "--spectrum-disabled-background-color", + "--spectrum-disabled-content-color", + "--spectrum-picked-color", + "--spectrum-white" + ], + "system": [], + "a11y": [ + "--highcontrast-colorhandle-border-color", + "--highcontrast-colorhandle-border-color-disabled", + "--highcontrast-colorhandle-fill-color-disabled" + ] +} diff --git a/components/colorhandle/package.json b/components/colorhandle/package.json new file mode 100644 index 0000000000..3a497461f2 --- /dev/null +++ b/components/colorhandle/package.json @@ -0,0 +1,48 @@ +{ + "name": "@spectrum-css/colorhandle", + "version": "8.1.1", + "description": "The Spectrum CSS Color Handle component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/colorhandle", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/colorhandle" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/colorloupe": ">=5", + "@spectrum-css/opacitycheckerboard": ">=2", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/colorloupe": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/colorloupe": "workspace:^", + "@spectrum-css/opacitycheckerboard": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/colorhandle/template.js b/components/colorhandle/template.js new file mode 100644 index 0000000000..85da38aebc --- /dev/null +++ b/components/colorhandle/template.js @@ -0,0 +1,44 @@ +import { Template as ColorLoupe } from "@spectrum-css/colorloupe/stories/template.js"; +import { Template as OpacityCheckerboard } from "@spectrum-css/opacitycheckerboard/stories/template.js"; +import { html } from "lit"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ColorHandle", + customClasses = [], + isDisabled = false, + isFocused = false, + isWithColorLoupe = false, + customStyles = { + "--spectrum-picked-color": "rgba(255, 0, 0, 0.5)", + }, +} = {}, context = {}) => { + return OpacityCheckerboard({ + customClasses: [ + `${rootClass}`, + ...!isDisabled && isFocused ? ["is-focused"] : [], + ...isDisabled ? ["is-disabled"] : [], + ...customClasses, + ], + content: [html ` +
    + ${when(isWithColorLoupe, () => html` + ${ColorLoupe({ + isOpen: true, + customStyles: { + "inset-inline-start": "unset", + "inset-block-start": "unset", + } + })} + `)} + `], + customStyles: { + ...customStyles, + "position": isWithColorLoupe ? "absolute" : undefined, + "inset-block": isWithColorLoupe ? "75%" : undefined, + "inset-inline": isWithColorLoupe ? "50%" : undefined, + }, + }, context); +}; diff --git a/components/colorloupe/index-base.css b/components/colorloupe/index-base.css new file mode 100644 index 0000000000..3f708f57d9 --- /dev/null +++ b/components/colorloupe/index-base.css @@ -0,0 +1,75 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorLoupe { + --spectrum-colorloupe-width: var(--spectrum-color-loupe-width); + --spectrum-colorloupe-height: var(--spectrum-color-loupe-height); + --spectrum-colorloupe-offset: var(--spectrum-color-loupe-bottom-to-color-handle); + --spectrum-colorloupe-animation-distance: 8px; + --spectrum-colorloupe-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-colorloupe-drop-shadow-y: var(--spectrum-color-loupe-drop-shadow-y); + --spectrum-colorloupe-drop-shadow-blur: var(--spectrum-color-loupe-drop-shadow-blur); + --spectrum-colorloupe-drop-shadow-color: var(--spectrum-color-loupe-drop-shadow-color); + --spectrum-colorloupe-outer-border-width: var(--spectrum-color-loupe-outer-border-width); + --spectrum-colorloupe-inner-border-width: var(--spectrum-color-loupe-inner-border-width); + --spectrum-colorloupe-outer-border-color: var(--spectrum-color-loupe-outer-border); + --spectrum-colorloupe-inner-border-color: var(--spectrum-color-loupe-inner-border); + --spectrum-colorloupe-checkerboard-dark-color: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-colorloupe-checkerboard-light-color: var(--spectrum-opacity-checkerboard-square-light); + inline-size: var(--spectrum-colorloupe-width); + block-size: var(--spectrum-colorloupe-height); + position: absolute; + transform: translateY(var(--mod-colorloupe-animation-distance, var(--spectrum-colorloupe-animation-distance))); + opacity: 0; + transform-origin: bottom center; + inset-block-end: calc(var(--spectrum-color-handle-size) - var(--spectrum-color-handle-outer-border-width) + var(--mod-colorloupe-offset, var(--spectrum-colorloupe-offset))); + inset-inline-end: calc(50% - var(--spectrum-colorloupe-width) / 2); + transition: + transform 0.1s ease-in-out, + opacity 125ms ease-in-out; + pointer-events: none; + filter: drop-shadow(var(--mod-colorloupe-drop-shadow-x, var(--spectrum-colorloupe-drop-shadow-x)) var(--mod-colorloupe-drop-shadow-y, var(--spectrum-colorloupe-drop-shadow-y)) var(--mod-colorloupe-drop-shadow-blur, var(--spectrum-colorloupe-drop-shadow-blur)) var(--mod-colorloupe-drop-shadow-color, var(--spectrum-colorloupe-drop-shadow-color))); +} +.spectrum-ColorLoupe:dir(rtl), +[dir="rtl"] .spectrum-ColorLoupe { + inset-inline-end: calc(50% - var(--spectrum-colorloupe-width) / 2 - 1px); +} +.spectrum-ColorLoupe.is-open { + transform: translate(0); + opacity: 1; +} +.spectrum-ColorLoupe-inner-border { + fill: var(--spectrum-picked-color); + stroke: var(--mod-colorloupe-inner-border-color, var(--spectrum-colorloupe-inner-border-color)); + stroke-width: var(--mod-colorloupe-inner-border-width, var(--spectrum-colorloupe-inner-border-width)); +} +.spectrum-ColorLoupe-outer-border { + fill: none; + stroke: var(--highcontrast-colorloupe-outer-border-color, var(--mod-colorloupe-outer-border-color, var(--spectrum-colorloupe-outer-border-color))); + stroke-width: calc(var(--mod-colorloupe-outer-border-width, var(--spectrum-colorloupe-outer-border-width)) + 2px); +} +.spectrum-ColorLoupe-checkerboard-pattern { + fill: var(--spectrum-colorloupe-checkerboard-dark-color); +} +.spectrum-ColorLoupe-checkerboard-background { + fill: var(--spectrum-colorloupe-checkerboard-light-color); +} +.spectrum-ColorLoupe-checkerboard-fill { + fill: var(--spectrum-colorloupe-checkerboard-fill); +} +@media (forced-colors: active) { + .spectrum-ColorLoupe { + --highcontrast-colorloupe-outer-border-color: CanvasText; + } +} +/*# sourceMappingURL=components/colorloupe/index.css.map */ diff --git a/components/colorloupe/index-vars.css b/components/colorloupe/index-vars.css new file mode 100644 index 0000000000..3f708f57d9 --- /dev/null +++ b/components/colorloupe/index-vars.css @@ -0,0 +1,75 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorLoupe { + --spectrum-colorloupe-width: var(--spectrum-color-loupe-width); + --spectrum-colorloupe-height: var(--spectrum-color-loupe-height); + --spectrum-colorloupe-offset: var(--spectrum-color-loupe-bottom-to-color-handle); + --spectrum-colorloupe-animation-distance: 8px; + --spectrum-colorloupe-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-colorloupe-drop-shadow-y: var(--spectrum-color-loupe-drop-shadow-y); + --spectrum-colorloupe-drop-shadow-blur: var(--spectrum-color-loupe-drop-shadow-blur); + --spectrum-colorloupe-drop-shadow-color: var(--spectrum-color-loupe-drop-shadow-color); + --spectrum-colorloupe-outer-border-width: var(--spectrum-color-loupe-outer-border-width); + --spectrum-colorloupe-inner-border-width: var(--spectrum-color-loupe-inner-border-width); + --spectrum-colorloupe-outer-border-color: var(--spectrum-color-loupe-outer-border); + --spectrum-colorloupe-inner-border-color: var(--spectrum-color-loupe-inner-border); + --spectrum-colorloupe-checkerboard-dark-color: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-colorloupe-checkerboard-light-color: var(--spectrum-opacity-checkerboard-square-light); + inline-size: var(--spectrum-colorloupe-width); + block-size: var(--spectrum-colorloupe-height); + position: absolute; + transform: translateY(var(--mod-colorloupe-animation-distance, var(--spectrum-colorloupe-animation-distance))); + opacity: 0; + transform-origin: bottom center; + inset-block-end: calc(var(--spectrum-color-handle-size) - var(--spectrum-color-handle-outer-border-width) + var(--mod-colorloupe-offset, var(--spectrum-colorloupe-offset))); + inset-inline-end: calc(50% - var(--spectrum-colorloupe-width) / 2); + transition: + transform 0.1s ease-in-out, + opacity 125ms ease-in-out; + pointer-events: none; + filter: drop-shadow(var(--mod-colorloupe-drop-shadow-x, var(--spectrum-colorloupe-drop-shadow-x)) var(--mod-colorloupe-drop-shadow-y, var(--spectrum-colorloupe-drop-shadow-y)) var(--mod-colorloupe-drop-shadow-blur, var(--spectrum-colorloupe-drop-shadow-blur)) var(--mod-colorloupe-drop-shadow-color, var(--spectrum-colorloupe-drop-shadow-color))); +} +.spectrum-ColorLoupe:dir(rtl), +[dir="rtl"] .spectrum-ColorLoupe { + inset-inline-end: calc(50% - var(--spectrum-colorloupe-width) / 2 - 1px); +} +.spectrum-ColorLoupe.is-open { + transform: translate(0); + opacity: 1; +} +.spectrum-ColorLoupe-inner-border { + fill: var(--spectrum-picked-color); + stroke: var(--mod-colorloupe-inner-border-color, var(--spectrum-colorloupe-inner-border-color)); + stroke-width: var(--mod-colorloupe-inner-border-width, var(--spectrum-colorloupe-inner-border-width)); +} +.spectrum-ColorLoupe-outer-border { + fill: none; + stroke: var(--highcontrast-colorloupe-outer-border-color, var(--mod-colorloupe-outer-border-color, var(--spectrum-colorloupe-outer-border-color))); + stroke-width: calc(var(--mod-colorloupe-outer-border-width, var(--spectrum-colorloupe-outer-border-width)) + 2px); +} +.spectrum-ColorLoupe-checkerboard-pattern { + fill: var(--spectrum-colorloupe-checkerboard-dark-color); +} +.spectrum-ColorLoupe-checkerboard-background { + fill: var(--spectrum-colorloupe-checkerboard-light-color); +} +.spectrum-ColorLoupe-checkerboard-fill { + fill: var(--spectrum-colorloupe-checkerboard-fill); +} +@media (forced-colors: active) { + .spectrum-ColorLoupe { + --highcontrast-colorloupe-outer-border-color: CanvasText; + } +} +/*# sourceMappingURL=components/colorloupe/index.css.map */ diff --git a/components/colorloupe/index.css b/components/colorloupe/index.css new file mode 100644 index 0000000000..3f708f57d9 --- /dev/null +++ b/components/colorloupe/index.css @@ -0,0 +1,75 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorLoupe { + --spectrum-colorloupe-width: var(--spectrum-color-loupe-width); + --spectrum-colorloupe-height: var(--spectrum-color-loupe-height); + --spectrum-colorloupe-offset: var(--spectrum-color-loupe-bottom-to-color-handle); + --spectrum-colorloupe-animation-distance: 8px; + --spectrum-colorloupe-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-colorloupe-drop-shadow-y: var(--spectrum-color-loupe-drop-shadow-y); + --spectrum-colorloupe-drop-shadow-blur: var(--spectrum-color-loupe-drop-shadow-blur); + --spectrum-colorloupe-drop-shadow-color: var(--spectrum-color-loupe-drop-shadow-color); + --spectrum-colorloupe-outer-border-width: var(--spectrum-color-loupe-outer-border-width); + --spectrum-colorloupe-inner-border-width: var(--spectrum-color-loupe-inner-border-width); + --spectrum-colorloupe-outer-border-color: var(--spectrum-color-loupe-outer-border); + --spectrum-colorloupe-inner-border-color: var(--spectrum-color-loupe-inner-border); + --spectrum-colorloupe-checkerboard-dark-color: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-colorloupe-checkerboard-light-color: var(--spectrum-opacity-checkerboard-square-light); + inline-size: var(--spectrum-colorloupe-width); + block-size: var(--spectrum-colorloupe-height); + position: absolute; + transform: translateY(var(--mod-colorloupe-animation-distance, var(--spectrum-colorloupe-animation-distance))); + opacity: 0; + transform-origin: bottom center; + inset-block-end: calc(var(--spectrum-color-handle-size) - var(--spectrum-color-handle-outer-border-width) + var(--mod-colorloupe-offset, var(--spectrum-colorloupe-offset))); + inset-inline-end: calc(50% - var(--spectrum-colorloupe-width) / 2); + transition: + transform 0.1s ease-in-out, + opacity 125ms ease-in-out; + pointer-events: none; + filter: drop-shadow(var(--mod-colorloupe-drop-shadow-x, var(--spectrum-colorloupe-drop-shadow-x)) var(--mod-colorloupe-drop-shadow-y, var(--spectrum-colorloupe-drop-shadow-y)) var(--mod-colorloupe-drop-shadow-blur, var(--spectrum-colorloupe-drop-shadow-blur)) var(--mod-colorloupe-drop-shadow-color, var(--spectrum-colorloupe-drop-shadow-color))); +} +.spectrum-ColorLoupe:dir(rtl), +[dir="rtl"] .spectrum-ColorLoupe { + inset-inline-end: calc(50% - var(--spectrum-colorloupe-width) / 2 - 1px); +} +.spectrum-ColorLoupe.is-open { + transform: translate(0); + opacity: 1; +} +.spectrum-ColorLoupe-inner-border { + fill: var(--spectrum-picked-color); + stroke: var(--mod-colorloupe-inner-border-color, var(--spectrum-colorloupe-inner-border-color)); + stroke-width: var(--mod-colorloupe-inner-border-width, var(--spectrum-colorloupe-inner-border-width)); +} +.spectrum-ColorLoupe-outer-border { + fill: none; + stroke: var(--highcontrast-colorloupe-outer-border-color, var(--mod-colorloupe-outer-border-color, var(--spectrum-colorloupe-outer-border-color))); + stroke-width: calc(var(--mod-colorloupe-outer-border-width, var(--spectrum-colorloupe-outer-border-width)) + 2px); +} +.spectrum-ColorLoupe-checkerboard-pattern { + fill: var(--spectrum-colorloupe-checkerboard-dark-color); +} +.spectrum-ColorLoupe-checkerboard-background { + fill: var(--spectrum-colorloupe-checkerboard-light-color); +} +.spectrum-ColorLoupe-checkerboard-fill { + fill: var(--spectrum-colorloupe-checkerboard-fill); +} +@media (forced-colors: active) { + .spectrum-ColorLoupe { + --highcontrast-colorloupe-outer-border-color: CanvasText; + } +} +/*# sourceMappingURL=components/colorloupe/index.css.map */ diff --git a/components/colorloupe/metadata.json b/components/colorloupe/metadata.json new file mode 100644 index 0000000000..26f5713472 --- /dev/null +++ b/components/colorloupe/metadata.json @@ -0,0 +1,59 @@ +{ + "selectors": [ + ".spectrum-ColorLoupe", + ".spectrum-ColorLoupe-checkerboard-background", + ".spectrum-ColorLoupe-checkerboard-fill", + ".spectrum-ColorLoupe-checkerboard-pattern", + ".spectrum-ColorLoupe-inner-border", + ".spectrum-ColorLoupe-outer-border", + ".spectrum-ColorLoupe.is-open", + ".spectrum-ColorLoupe:dir(rtl),\n[dir=\"rtl\"] .spectrum-ColorLoupe" + ], + "mods": [ + "--mod-colorloupe-animation-distance", + "--mod-colorloupe-drop-shadow-blur", + "--mod-colorloupe-drop-shadow-color", + "--mod-colorloupe-drop-shadow-x", + "--mod-colorloupe-drop-shadow-y", + "--mod-colorloupe-inner-border-color", + "--mod-colorloupe-inner-border-width", + "--mod-colorloupe-offset", + "--mod-colorloupe-outer-border-color", + "--mod-colorloupe-outer-border-width" + ], + "spectrum": [ + "--spectrum-color-handle-outer-border-width", + "--spectrum-color-handle-size", + "--spectrum-color-loupe-bottom-to-color-handle", + "--spectrum-color-loupe-drop-shadow-blur", + "--spectrum-color-loupe-drop-shadow-color", + "--spectrum-color-loupe-drop-shadow-y", + "--spectrum-color-loupe-height", + "--spectrum-color-loupe-inner-border", + "--spectrum-color-loupe-inner-border-width", + "--spectrum-color-loupe-outer-border", + "--spectrum-color-loupe-outer-border-width", + "--spectrum-color-loupe-width", + "--spectrum-colorloupe-animation-distance", + "--spectrum-colorloupe-checkerboard-dark-color", + "--spectrum-colorloupe-checkerboard-fill", + "--spectrum-colorloupe-checkerboard-light-color", + "--spectrum-colorloupe-drop-shadow-blur", + "--spectrum-colorloupe-drop-shadow-color", + "--spectrum-colorloupe-drop-shadow-x", + "--spectrum-colorloupe-drop-shadow-y", + "--spectrum-colorloupe-height", + "--spectrum-colorloupe-inner-border-color", + "--spectrum-colorloupe-inner-border-width", + "--spectrum-colorloupe-offset", + "--spectrum-colorloupe-outer-border-color", + "--spectrum-colorloupe-outer-border-width", + "--spectrum-colorloupe-width", + "--spectrum-drop-shadow-x", + "--spectrum-opacity-checkerboard-square-dark", + "--spectrum-opacity-checkerboard-square-light", + "--spectrum-picked-color" + ], + "system": [], + "a11y": ["--highcontrast-colorloupe-outer-border-color"] +} diff --git a/components/colorloupe/package.json b/components/colorloupe/package.json new file mode 100644 index 0000000000..91ca4ac834 --- /dev/null +++ b/components/colorloupe/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/colorloupe", + "version": "5.1.1", + "description": "The Spectrum CSS Color Loupe component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/colorloupe", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/colorloupe" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/colorloupe/template.js b/components/colorloupe/template.js new file mode 100644 index 0000000000..fce189c8a0 --- /dev/null +++ b/components/colorloupe/template.js @@ -0,0 +1,50 @@ +import { svg } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ColorLoupe", + isOpen, + customStyles = { + "--spectrum-picked-color": "rgba(255, 0, 0, 0.5)", + "inset-block-start": "5px", + "inset-inline-start": "5px", + }, + customClasses = [], +}) => svg` + ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + > + + + + + + + + + + + + + + + + + + + + + + +`; diff --git a/components/colorslider/index-base.css b/components/colorslider/index-base.css new file mode 100644 index 0000000000..08fed6fc0c --- /dev/null +++ b/components/colorslider/index-base.css @@ -0,0 +1,100 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorSlider { + --spectrum-color-slider-handle-margin-block: var(--spectrum-component-top-to-text-75); + --spectrum-color-slider-border-color-rgba: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-color-slider-border-opacity)); + --spectrum-color-slider-checkerboard-size: var(--spectrum-opacity-checkerboard-square-size); + --spectrum-color-slider-checkerboard-dark-color: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-color-slider-checkerboard-light-color: var(--spectrum-opacity-checkerboard-square-light); + --mod-colorhandle-hitarea-border-radius: var(--mod-color-slider-handle-hitarea-border-radius, 0px); +} +@media (forced-colors: active) { + .spectrum-ColorSlider { + --highcontrast-color-slider-border-color: CanvasText; + --highcontrast-color-slider-border-color-disabled: GrayText; + --highcontrast-color-slider-background-color-disabled: Canvas; + forced-color-adjust: none; + } +} +.spectrum-ColorSlider { + position: relative; + display: block; + min-inline-size: var(--mod-color-slider-minimum-length, var(--spectrum-color-slider-minimum-length)); + inline-size: var(--mod-color-slider-length, var(--spectrum-color-slider-length)); + block-size: var(--mod-color-slider-control-track-width, var(--spectrum-color-control-track-width)); + -webkit-user-select: none; + user-select: none; + cursor: default; +} +.spectrum-ColorSlider.is-focused { + z-index: 2; +} +.spectrum-ColorSlider.is-disabled { + pointer-events: none; +} +.spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-gradient { + display: none; +} +.spectrum-ColorSlider--vertical { + display: inline-block; + min-block-size: var(--mod-color-slider-vertical-minimum-height, var(--mod-color-slider-minimum-length, var(--spectrum-color-slider-minimum-length))); + block-size: var(--mod-color-slider-vertical-height, var(--mod-color-slider-length, var(--spectrum-color-slider-length))); + min-inline-size: 0; + inline-size: var(--mod-color-slider-vertical-control-track-width, var(--mod-color-slider-control-track-height, var(--spectrum-color-control-track-width))); +} +.spectrum-ColorSlider--vertical .spectrum-ColorSlider-handle { + inset-inline-start: 50%; + inset-block-start: 0; +} +.spectrum-ColorSlider-handle { + inset-inline-start: 0; + inset-block-start: 50%; +} +.spectrum-ColorSlider-checkerboard { + --spectrum-color-slider-border-color-local: var(--highcontrast-color-slider-border-color, var(--mod-color-slider-border-color, var(--spectrum-color-slider-border-color-rgba))); +} +.spectrum-ColorSlider-checkerboard:before { + content: ""; + z-index: 1; + position: absolute; + inset: 0; + box-shadow: inset 0 0 0 var(--mod-color-slider-border-width, var(--spectrum-color-slider-border-width)) var(--spectrum-color-slider-border-color-local); + border-radius: var(--mod-color-slider-border-rounding, var(--spectrum-color-slider-border-rounding)); +} +.spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-checkerboard { + --spectrum-color-slider-border-color-local: var(--highcontrast-color-slider-border-color-disabled, var(--mod-color-slider-border-color-disabled, var(--spectrum-disabled-background-color))); + background: var(--highcontrast-color-slider-background-color-disabled, var(--mod-color-slider-background-color-disabled, var(--spectrum-disabled-background-color))); +} +.spectrum-ColorSlider-checkerboard, +.spectrum-ColorSlider-gradient { + inline-size: 100%; + block-size: 100%; + border-radius: var(--mod-color-slider-border-rounding, var(--spectrum-color-slider-border-rounding)); +} +.spectrum-ColorSlider-gradient:dir(rtl), +[dir="rtl"] .spectrum-ColorSlider-gradient { + transform: scaleX(-1); +} +.spectrum-ColorSlider-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +/*# sourceMappingURL=components/colorslider/index.css.map */ diff --git a/components/colorslider/index-vars.css b/components/colorslider/index-vars.css new file mode 100644 index 0000000000..08fed6fc0c --- /dev/null +++ b/components/colorslider/index-vars.css @@ -0,0 +1,100 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorSlider { + --spectrum-color-slider-handle-margin-block: var(--spectrum-component-top-to-text-75); + --spectrum-color-slider-border-color-rgba: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-color-slider-border-opacity)); + --spectrum-color-slider-checkerboard-size: var(--spectrum-opacity-checkerboard-square-size); + --spectrum-color-slider-checkerboard-dark-color: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-color-slider-checkerboard-light-color: var(--spectrum-opacity-checkerboard-square-light); + --mod-colorhandle-hitarea-border-radius: var(--mod-color-slider-handle-hitarea-border-radius, 0px); +} +@media (forced-colors: active) { + .spectrum-ColorSlider { + --highcontrast-color-slider-border-color: CanvasText; + --highcontrast-color-slider-border-color-disabled: GrayText; + --highcontrast-color-slider-background-color-disabled: Canvas; + forced-color-adjust: none; + } +} +.spectrum-ColorSlider { + position: relative; + display: block; + min-inline-size: var(--mod-color-slider-minimum-length, var(--spectrum-color-slider-minimum-length)); + inline-size: var(--mod-color-slider-length, var(--spectrum-color-slider-length)); + block-size: var(--mod-color-slider-control-track-width, var(--spectrum-color-control-track-width)); + -webkit-user-select: none; + user-select: none; + cursor: default; +} +.spectrum-ColorSlider.is-focused { + z-index: 2; +} +.spectrum-ColorSlider.is-disabled { + pointer-events: none; +} +.spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-gradient { + display: none; +} +.spectrum-ColorSlider--vertical { + display: inline-block; + min-block-size: var(--mod-color-slider-vertical-minimum-height, var(--mod-color-slider-minimum-length, var(--spectrum-color-slider-minimum-length))); + block-size: var(--mod-color-slider-vertical-height, var(--mod-color-slider-length, var(--spectrum-color-slider-length))); + min-inline-size: 0; + inline-size: var(--mod-color-slider-vertical-control-track-width, var(--mod-color-slider-control-track-height, var(--spectrum-color-control-track-width))); +} +.spectrum-ColorSlider--vertical .spectrum-ColorSlider-handle { + inset-inline-start: 50%; + inset-block-start: 0; +} +.spectrum-ColorSlider-handle { + inset-inline-start: 0; + inset-block-start: 50%; +} +.spectrum-ColorSlider-checkerboard { + --spectrum-color-slider-border-color-local: var(--highcontrast-color-slider-border-color, var(--mod-color-slider-border-color, var(--spectrum-color-slider-border-color-rgba))); +} +.spectrum-ColorSlider-checkerboard:before { + content: ""; + z-index: 1; + position: absolute; + inset: 0; + box-shadow: inset 0 0 0 var(--mod-color-slider-border-width, var(--spectrum-color-slider-border-width)) var(--spectrum-color-slider-border-color-local); + border-radius: var(--mod-color-slider-border-rounding, var(--spectrum-color-slider-border-rounding)); +} +.spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-checkerboard { + --spectrum-color-slider-border-color-local: var(--highcontrast-color-slider-border-color-disabled, var(--mod-color-slider-border-color-disabled, var(--spectrum-disabled-background-color))); + background: var(--highcontrast-color-slider-background-color-disabled, var(--mod-color-slider-background-color-disabled, var(--spectrum-disabled-background-color))); +} +.spectrum-ColorSlider-checkerboard, +.spectrum-ColorSlider-gradient { + inline-size: 100%; + block-size: 100%; + border-radius: var(--mod-color-slider-border-rounding, var(--spectrum-color-slider-border-rounding)); +} +.spectrum-ColorSlider-gradient:dir(rtl), +[dir="rtl"] .spectrum-ColorSlider-gradient { + transform: scaleX(-1); +} +.spectrum-ColorSlider-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +/*# sourceMappingURL=components/colorslider/index.css.map */ diff --git a/components/colorslider/index.css b/components/colorslider/index.css new file mode 100644 index 0000000000..08fed6fc0c --- /dev/null +++ b/components/colorslider/index.css @@ -0,0 +1,100 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorSlider { + --spectrum-color-slider-handle-margin-block: var(--spectrum-component-top-to-text-75); + --spectrum-color-slider-border-color-rgba: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-color-slider-border-opacity)); + --spectrum-color-slider-checkerboard-size: var(--spectrum-opacity-checkerboard-square-size); + --spectrum-color-slider-checkerboard-dark-color: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-color-slider-checkerboard-light-color: var(--spectrum-opacity-checkerboard-square-light); + --mod-colorhandle-hitarea-border-radius: var(--mod-color-slider-handle-hitarea-border-radius, 0px); +} +@media (forced-colors: active) { + .spectrum-ColorSlider { + --highcontrast-color-slider-border-color: CanvasText; + --highcontrast-color-slider-border-color-disabled: GrayText; + --highcontrast-color-slider-background-color-disabled: Canvas; + forced-color-adjust: none; + } +} +.spectrum-ColorSlider { + position: relative; + display: block; + min-inline-size: var(--mod-color-slider-minimum-length, var(--spectrum-color-slider-minimum-length)); + inline-size: var(--mod-color-slider-length, var(--spectrum-color-slider-length)); + block-size: var(--mod-color-slider-control-track-width, var(--spectrum-color-control-track-width)); + -webkit-user-select: none; + user-select: none; + cursor: default; +} +.spectrum-ColorSlider.is-focused { + z-index: 2; +} +.spectrum-ColorSlider.is-disabled { + pointer-events: none; +} +.spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-gradient { + display: none; +} +.spectrum-ColorSlider--vertical { + display: inline-block; + min-block-size: var(--mod-color-slider-vertical-minimum-height, var(--mod-color-slider-minimum-length, var(--spectrum-color-slider-minimum-length))); + block-size: var(--mod-color-slider-vertical-height, var(--mod-color-slider-length, var(--spectrum-color-slider-length))); + min-inline-size: 0; + inline-size: var(--mod-color-slider-vertical-control-track-width, var(--mod-color-slider-control-track-height, var(--spectrum-color-control-track-width))); +} +.spectrum-ColorSlider--vertical .spectrum-ColorSlider-handle { + inset-inline-start: 50%; + inset-block-start: 0; +} +.spectrum-ColorSlider-handle { + inset-inline-start: 0; + inset-block-start: 50%; +} +.spectrum-ColorSlider-checkerboard { + --spectrum-color-slider-border-color-local: var(--highcontrast-color-slider-border-color, var(--mod-color-slider-border-color, var(--spectrum-color-slider-border-color-rgba))); +} +.spectrum-ColorSlider-checkerboard:before { + content: ""; + z-index: 1; + position: absolute; + inset: 0; + box-shadow: inset 0 0 0 var(--mod-color-slider-border-width, var(--spectrum-color-slider-border-width)) var(--spectrum-color-slider-border-color-local); + border-radius: var(--mod-color-slider-border-rounding, var(--spectrum-color-slider-border-rounding)); +} +.spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-checkerboard { + --spectrum-color-slider-border-color-local: var(--highcontrast-color-slider-border-color-disabled, var(--mod-color-slider-border-color-disabled, var(--spectrum-disabled-background-color))); + background: var(--highcontrast-color-slider-background-color-disabled, var(--mod-color-slider-background-color-disabled, var(--spectrum-disabled-background-color))); +} +.spectrum-ColorSlider-checkerboard, +.spectrum-ColorSlider-gradient { + inline-size: 100%; + block-size: 100%; + border-radius: var(--mod-color-slider-border-rounding, var(--spectrum-color-slider-border-rounding)); +} +.spectrum-ColorSlider-gradient:dir(rtl), +[dir="rtl"] .spectrum-ColorSlider-gradient { + transform: scaleX(-1); +} +.spectrum-ColorSlider-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +/*# sourceMappingURL=components/colorslider/index.css.map */ diff --git a/components/colorslider/metadata.json b/components/colorslider/metadata.json new file mode 100644 index 0000000000..3a5c56de30 --- /dev/null +++ b/components/colorslider/metadata.json @@ -0,0 +1,54 @@ +{ + "selectors": [ + ".spectrum-ColorSlider", + ".spectrum-ColorSlider--vertical", + ".spectrum-ColorSlider--vertical .spectrum-ColorSlider-handle", + ".spectrum-ColorSlider-checkerboard", + ".spectrum-ColorSlider-checkerboard,\n.spectrum-ColorSlider-gradient", + ".spectrum-ColorSlider-checkerboard:before", + ".spectrum-ColorSlider-gradient:dir(rtl),\n[dir=\"rtl\"] .spectrum-ColorSlider-gradient", + ".spectrum-ColorSlider-handle", + ".spectrum-ColorSlider-slider", + ".spectrum-ColorSlider.is-disabled", + ".spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-checkerboard", + ".spectrum-ColorSlider.is-disabled .spectrum-ColorSlider-gradient", + ".spectrum-ColorSlider.is-focused" + ], + "mods": [ + "--mod-color-slider-background-color-disabled", + "--mod-color-slider-border-color", + "--mod-color-slider-border-color-disabled", + "--mod-color-slider-border-rounding", + "--mod-color-slider-border-width", + "--mod-color-slider-control-track-height", + "--mod-color-slider-control-track-width", + "--mod-color-slider-handle-hitarea-border-radius", + "--mod-color-slider-length", + "--mod-color-slider-minimum-length", + "--mod-color-slider-vertical-control-track-width", + "--mod-color-slider-vertical-height", + "--mod-color-slider-vertical-minimum-height" + ], + "spectrum": [ + "--spectrum-color-control-track-width", + "--spectrum-color-slider-border-color-local", + "--spectrum-color-slider-border-color-rgba", + "--spectrum-color-slider-border-opacity", + "--spectrum-color-slider-border-rounding", + "--spectrum-color-slider-border-width", + "--spectrum-color-slider-length", + "--spectrum-color-slider-minimum-length", + "--spectrum-component-top-to-text-75", + "--spectrum-disabled-background-color", + "--spectrum-gray-900-rgb", + "--spectrum-opacity-checkerboard-square-dark", + "--spectrum-opacity-checkerboard-square-light", + "--spectrum-opacity-checkerboard-square-size" + ], + "system": [], + "a11y": [ + "--highcontrast-color-slider-background-color-disabled", + "--highcontrast-color-slider-border-color", + "--highcontrast-color-slider-border-color-disabled" + ] +} diff --git a/components/colorslider/package.json b/components/colorslider/package.json new file mode 100644 index 0000000000..ef4a8dc16b --- /dev/null +++ b/components/colorslider/package.json @@ -0,0 +1,43 @@ +{ + "name": "@spectrum-css/colorslider", + "version": "6.1.1", + "description": "The Spectrum CSS Color slider component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/colorslider", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/colorslider" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/colorhandle": ">=8", + "@spectrum-css/opacitycheckerboard": ">=2", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/colorhandle": "workspace:^", + "@spectrum-css/opacitycheckerboard": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/colorslider/template.js b/components/colorslider/template.js new file mode 100644 index 0000000000..5ec6e1e620 --- /dev/null +++ b/components/colorslider/template.js @@ -0,0 +1,122 @@ +import { Template as ColorHandle } from "@spectrum-css/colorhandle/stories/template.js"; +import { Template as OpacityCheckerboard } from "@spectrum-css/opacitycheckerboard/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ColorSlider", + customClasses = [], + customStyles = {}, + isDisabled = false, + isFocused = false, + vertical = false, + gradientStops = [ + "rgb(255, 0, 0) 0%", + "rgb(255, 255, 0) 17%", + "rgb(0, 255, 0) 33%", + "rgb(0, 255, 255) 50%", + "rgb(0, 0, 255) 67%", + "rgb(255, 0, 255) 83%", + "rgb(255, 0, 0)", + ], + gradientType = "gradient", + colorHandleStyle = { + "--spectrum-picked-color": "rgba(255, 0, 0)", + }, +} = {}, context = {}) => { + const { updateArgs } = context; + return html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + @focusin=${() => { + updateArgs({ isFocused: true }); + }} + @focusout=${() => { + updateArgs({ isFocused: false }); + }} + > + ${OpacityCheckerboard({ + customClasses: [`${rootClass}-checkerboard`], + content: [ + when( + gradientType === "image", + () => html``, + () => html`` + ), + ], + role: "presentation", + }, context)} + ${ColorHandle({ + isDisabled, + isFocused, + customClasses: [`${rootClass}-handle`], + customStyles: colorHandleStyle, + }, context)} + +
    + `; +}; + +export const ColorSliderGroup = Variants({ + Template, + testData: [ + { + testHeading: "Default", + }, + { + testHeading: "Vertical", + vertical: true, + }, + { + testHeading: "Alpha", + gradientStops: ["rgba(0, 0, 0, 1) 0%", "rgba(0, 0, 0, 0) 100%"], + colorHandleStyle: { + "--spectrum-picked-color": "rgba(0, 0, 0, 1)", + }, + }, + { + testHeading: "With Image", + gradientType: "image", + colorHandleStyle: { + "--spectrum-picked-color": "#df6a7d", + "inset-inline-start": "50%", + }, + }, + ], + stateData: [ + { + testHeading: "Disabled", + isDisabled: true, + }, + { + testHeading: "Focused", + isFocused: true, + }, + ], +}); diff --git a/components/colorwheel/index-base.css b/components/colorwheel/index-base.css new file mode 100644 index 0000000000..55c5371c76 --- /dev/null +++ b/components/colorwheel/index-base.css @@ -0,0 +1,117 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorWheel { + --spectrum-colorwheel-width: var(--spectrum-color-wheel-width); + --spectrum-colorwheel-min-width: var(--spectrum-color-wheel-minimum-width); + --spectrum-colorwheel-height: var(--spectrum-color-wheel-width); + --spectrum-colorwheel-border-color: var(--spectrum-transparent-black-200); + --spectrum-colorwheel-border-width: var(--spectrum-border-width-100); + --spectrum-colorwheel-fill-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-colorwheel-track-width: var(--spectrum-color-control-track-width); + --spectrum-colorwheel-colorarea-margin: var(--spectrum-color-wheel-color-area-margin); + --spectrum-colorwheel-colorhandle-position: calc(var(--spectrum-colorwheel-width) / 2 - var(--spectrum-colorwheel-track-width) / 2); +} +@media (forced-colors: active) { + .spectrum-ColorWheel { + --highcontrast-colorwheel-border-color-disabled: GrayText; + --highcontrast-colorwheel-fill-color-disabled: Canvas; + forced-color-adjust: none; + } +} +.spectrum-ColorWheel { + position: relative; + display: block; + min-inline-size: var(--mod-colorwheel-min-width, var(--spectrum-colorwheel-min-width)); + inline-size: var(--mod-colorwheel-width, var(--spectrum-colorwheel-width)); + block-size: var(--mod-colorwheel-height, var(--spectrum-colorwheel-height)); + -webkit-user-select: none; + user-select: none; + cursor: default; + --track-width: var(--mod-colorwheel-track-width, var(--spectrum-colorwheel-track-width)); + --border-width: var(--mod-colorwheel-border-width, var(--spectrum-colorwheel-border-width)); +} +.spectrum-ColorWheel.is-focused { + z-index: 1; +} +.spectrum-ColorWheel.is-disabled { + pointer-events: none; +} +.spectrum-ColorWheel.is-dragged { + z-index: 1; +} +.spectrum-ColorWheel-inner { + display: flex; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-start: 0; + inset-block-end: 0; + inline-size: var(--mod-colorwheel-colorarea-container-size, var(--spectrum-colorwheel-colorarea-container-size)); + block-size: var(--mod-colorwheel-colorarea-container-size, var(--spectrum-colorwheel-colorarea-container-size)); + margin: auto; +} +.spectrum-ColorWheel-colorarea-container { + block-size: auto; + inline-size: 100%; + display: flex; + align-items: center; + justify-content: center; + margin: var(--mod-colorwheel-colorarea-margin, var(--spectrum-colorwheel-colorarea-margin)); +} +.spectrum-ColorWheel-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +.spectrum-ColorWheel-handle { + transform: translate(var(--spectrum-colorwheel-colorhandle-position)); + inset-block-start: 50%; + inset-inline: 50%; +} +.spectrum-ColorWheel-ColorArea-handle { + inset-block-start: 0; + inset-inline-end: 0; +} +.spectrum-ColorWheel-ColorArea-handle:dir(rtl), +[dir="rtl"] .spectrum-ColorWheel-ColorArea-handle { + inset-inline-start: 0; +} +.spectrum-ColorWheel-border { + position: relative; + background-color: var(--mod-colorwheel-border-color, var(--spectrum-colorwheel-border-color)); + inline-size: var(--mod-colorwheel-width, var(--spectrum-colorwheel-width)); + block-size: var(--mod-colorwheel-height, var(--spectrum-colorwheel-height)); + clip-path: path(evenodd, var(--mod-colorwheel-path-borders, var(--spectrum-colorwheel-path-borders))); +} +.spectrum-ColorWheel-border.is-disabled { + background-color: var(--highcontrast-colorwheel-border-color-disabled, var(--mod-colorwheel-fill-color-disabled, var(--spectrum-colorwheel-fill-color-disabled))); +} +.spectrum-ColorWheel-wheel { + position: absolute; + background: conic-gradient(from 90deg, red, rgb(255, 128, 0), rgb(255, 255, 0), rgb(128, 255, 0), rgb(0, 255, 0), rgb(0, 255, 128), rgb(0, 255, 255), rgb(0, 128, 255), rgb(0, 0, 255), rgb(128, 0, 255), rgb(255, 0, 255), rgb(255, 0, 128), red); + inset-block: var(--spectrum-colorwheel-border-width); + inset-inline: var(--spectrum-colorwheel-border-width); + clip-path: path(evenodd, var(--mod-colorwheel-path, var(--spectrum-colorwheel-path))); +} +.spectrum-ColorWheel-wheel.is-disabled { + pointer-events: none; + background: var(--highcontrast-colorwheel-fill-color-disabled, var(--mod-colorwheel-fill-color-disabled, var(--spectrum-colorwheel-fill-color-disabled))); +} +/*# sourceMappingURL=components/colorwheel/index.css.map */ diff --git a/components/colorwheel/index-vars.css b/components/colorwheel/index-vars.css new file mode 100644 index 0000000000..55c5371c76 --- /dev/null +++ b/components/colorwheel/index-vars.css @@ -0,0 +1,117 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorWheel { + --spectrum-colorwheel-width: var(--spectrum-color-wheel-width); + --spectrum-colorwheel-min-width: var(--spectrum-color-wheel-minimum-width); + --spectrum-colorwheel-height: var(--spectrum-color-wheel-width); + --spectrum-colorwheel-border-color: var(--spectrum-transparent-black-200); + --spectrum-colorwheel-border-width: var(--spectrum-border-width-100); + --spectrum-colorwheel-fill-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-colorwheel-track-width: var(--spectrum-color-control-track-width); + --spectrum-colorwheel-colorarea-margin: var(--spectrum-color-wheel-color-area-margin); + --spectrum-colorwheel-colorhandle-position: calc(var(--spectrum-colorwheel-width) / 2 - var(--spectrum-colorwheel-track-width) / 2); +} +@media (forced-colors: active) { + .spectrum-ColorWheel { + --highcontrast-colorwheel-border-color-disabled: GrayText; + --highcontrast-colorwheel-fill-color-disabled: Canvas; + forced-color-adjust: none; + } +} +.spectrum-ColorWheel { + position: relative; + display: block; + min-inline-size: var(--mod-colorwheel-min-width, var(--spectrum-colorwheel-min-width)); + inline-size: var(--mod-colorwheel-width, var(--spectrum-colorwheel-width)); + block-size: var(--mod-colorwheel-height, var(--spectrum-colorwheel-height)); + -webkit-user-select: none; + user-select: none; + cursor: default; + --track-width: var(--mod-colorwheel-track-width, var(--spectrum-colorwheel-track-width)); + --border-width: var(--mod-colorwheel-border-width, var(--spectrum-colorwheel-border-width)); +} +.spectrum-ColorWheel.is-focused { + z-index: 1; +} +.spectrum-ColorWheel.is-disabled { + pointer-events: none; +} +.spectrum-ColorWheel.is-dragged { + z-index: 1; +} +.spectrum-ColorWheel-inner { + display: flex; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-start: 0; + inset-block-end: 0; + inline-size: var(--mod-colorwheel-colorarea-container-size, var(--spectrum-colorwheel-colorarea-container-size)); + block-size: var(--mod-colorwheel-colorarea-container-size, var(--spectrum-colorwheel-colorarea-container-size)); + margin: auto; +} +.spectrum-ColorWheel-colorarea-container { + block-size: auto; + inline-size: 100%; + display: flex; + align-items: center; + justify-content: center; + margin: var(--mod-colorwheel-colorarea-margin, var(--spectrum-colorwheel-colorarea-margin)); +} +.spectrum-ColorWheel-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +.spectrum-ColorWheel-handle { + transform: translate(var(--spectrum-colorwheel-colorhandle-position)); + inset-block-start: 50%; + inset-inline: 50%; +} +.spectrum-ColorWheel-ColorArea-handle { + inset-block-start: 0; + inset-inline-end: 0; +} +.spectrum-ColorWheel-ColorArea-handle:dir(rtl), +[dir="rtl"] .spectrum-ColorWheel-ColorArea-handle { + inset-inline-start: 0; +} +.spectrum-ColorWheel-border { + position: relative; + background-color: var(--mod-colorwheel-border-color, var(--spectrum-colorwheel-border-color)); + inline-size: var(--mod-colorwheel-width, var(--spectrum-colorwheel-width)); + block-size: var(--mod-colorwheel-height, var(--spectrum-colorwheel-height)); + clip-path: path(evenodd, var(--mod-colorwheel-path-borders, var(--spectrum-colorwheel-path-borders))); +} +.spectrum-ColorWheel-border.is-disabled { + background-color: var(--highcontrast-colorwheel-border-color-disabled, var(--mod-colorwheel-fill-color-disabled, var(--spectrum-colorwheel-fill-color-disabled))); +} +.spectrum-ColorWheel-wheel { + position: absolute; + background: conic-gradient(from 90deg, red, rgb(255, 128, 0), rgb(255, 255, 0), rgb(128, 255, 0), rgb(0, 255, 0), rgb(0, 255, 128), rgb(0, 255, 255), rgb(0, 128, 255), rgb(0, 0, 255), rgb(128, 0, 255), rgb(255, 0, 255), rgb(255, 0, 128), red); + inset-block: var(--spectrum-colorwheel-border-width); + inset-inline: var(--spectrum-colorwheel-border-width); + clip-path: path(evenodd, var(--mod-colorwheel-path, var(--spectrum-colorwheel-path))); +} +.spectrum-ColorWheel-wheel.is-disabled { + pointer-events: none; + background: var(--highcontrast-colorwheel-fill-color-disabled, var(--mod-colorwheel-fill-color-disabled, var(--spectrum-colorwheel-fill-color-disabled))); +} +/*# sourceMappingURL=components/colorwheel/index.css.map */ diff --git a/components/colorwheel/index.css b/components/colorwheel/index.css new file mode 100644 index 0000000000..55c5371c76 --- /dev/null +++ b/components/colorwheel/index.css @@ -0,0 +1,117 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ColorWheel { + --spectrum-colorwheel-width: var(--spectrum-color-wheel-width); + --spectrum-colorwheel-min-width: var(--spectrum-color-wheel-minimum-width); + --spectrum-colorwheel-height: var(--spectrum-color-wheel-width); + --spectrum-colorwheel-border-color: var(--spectrum-transparent-black-200); + --spectrum-colorwheel-border-width: var(--spectrum-border-width-100); + --spectrum-colorwheel-fill-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-colorwheel-track-width: var(--spectrum-color-control-track-width); + --spectrum-colorwheel-colorarea-margin: var(--spectrum-color-wheel-color-area-margin); + --spectrum-colorwheel-colorhandle-position: calc(var(--spectrum-colorwheel-width) / 2 - var(--spectrum-colorwheel-track-width) / 2); +} +@media (forced-colors: active) { + .spectrum-ColorWheel { + --highcontrast-colorwheel-border-color-disabled: GrayText; + --highcontrast-colorwheel-fill-color-disabled: Canvas; + forced-color-adjust: none; + } +} +.spectrum-ColorWheel { + position: relative; + display: block; + min-inline-size: var(--mod-colorwheel-min-width, var(--spectrum-colorwheel-min-width)); + inline-size: var(--mod-colorwheel-width, var(--spectrum-colorwheel-width)); + block-size: var(--mod-colorwheel-height, var(--spectrum-colorwheel-height)); + -webkit-user-select: none; + user-select: none; + cursor: default; + --track-width: var(--mod-colorwheel-track-width, var(--spectrum-colorwheel-track-width)); + --border-width: var(--mod-colorwheel-border-width, var(--spectrum-colorwheel-border-width)); +} +.spectrum-ColorWheel.is-focused { + z-index: 1; +} +.spectrum-ColorWheel.is-disabled { + pointer-events: none; +} +.spectrum-ColorWheel.is-dragged { + z-index: 1; +} +.spectrum-ColorWheel-inner { + display: flex; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-start: 0; + inset-block-end: 0; + inline-size: var(--mod-colorwheel-colorarea-container-size, var(--spectrum-colorwheel-colorarea-container-size)); + block-size: var(--mod-colorwheel-colorarea-container-size, var(--spectrum-colorwheel-colorarea-container-size)); + margin: auto; +} +.spectrum-ColorWheel-colorarea-container { + block-size: auto; + inline-size: 100%; + display: flex; + align-items: center; + justify-content: center; + margin: var(--mod-colorwheel-colorarea-margin, var(--spectrum-colorwheel-colorarea-margin)); +} +.spectrum-ColorWheel-slider { + opacity: 0; + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; + z-index: 0; + margin: 0; + pointer-events: none; +} +.spectrum-ColorWheel-handle { + transform: translate(var(--spectrum-colorwheel-colorhandle-position)); + inset-block-start: 50%; + inset-inline: 50%; +} +.spectrum-ColorWheel-ColorArea-handle { + inset-block-start: 0; + inset-inline-end: 0; +} +.spectrum-ColorWheel-ColorArea-handle:dir(rtl), +[dir="rtl"] .spectrum-ColorWheel-ColorArea-handle { + inset-inline-start: 0; +} +.spectrum-ColorWheel-border { + position: relative; + background-color: var(--mod-colorwheel-border-color, var(--spectrum-colorwheel-border-color)); + inline-size: var(--mod-colorwheel-width, var(--spectrum-colorwheel-width)); + block-size: var(--mod-colorwheel-height, var(--spectrum-colorwheel-height)); + clip-path: path(evenodd, var(--mod-colorwheel-path-borders, var(--spectrum-colorwheel-path-borders))); +} +.spectrum-ColorWheel-border.is-disabled { + background-color: var(--highcontrast-colorwheel-border-color-disabled, var(--mod-colorwheel-fill-color-disabled, var(--spectrum-colorwheel-fill-color-disabled))); +} +.spectrum-ColorWheel-wheel { + position: absolute; + background: conic-gradient(from 90deg, red, rgb(255, 128, 0), rgb(255, 255, 0), rgb(128, 255, 0), rgb(0, 255, 0), rgb(0, 255, 128), rgb(0, 255, 255), rgb(0, 128, 255), rgb(0, 0, 255), rgb(128, 0, 255), rgb(255, 0, 255), rgb(255, 0, 128), red); + inset-block: var(--spectrum-colorwheel-border-width); + inset-inline: var(--spectrum-colorwheel-border-width); + clip-path: path(evenodd, var(--mod-colorwheel-path, var(--spectrum-colorwheel-path))); +} +.spectrum-ColorWheel-wheel.is-disabled { + pointer-events: none; + background: var(--highcontrast-colorwheel-fill-color-disabled, var(--mod-colorwheel-fill-color-disabled, var(--spectrum-colorwheel-fill-color-disabled))); +} +/*# sourceMappingURL=components/colorwheel/index.css.map */ diff --git a/components/colorwheel/metadata.json b/components/colorwheel/metadata.json new file mode 100644 index 0000000000..5cba08761f --- /dev/null +++ b/components/colorwheel/metadata.json @@ -0,0 +1,57 @@ +{ + "selectors": [ + ".spectrum-ColorWheel", + ".spectrum-ColorWheel-ColorArea-handle", + ".spectrum-ColorWheel-ColorArea-handle:dir(rtl),\n[dir=\"rtl\"] .spectrum-ColorWheel-ColorArea-handle", + ".spectrum-ColorWheel-border", + ".spectrum-ColorWheel-border.is-disabled", + ".spectrum-ColorWheel-colorarea-container", + ".spectrum-ColorWheel-handle", + ".spectrum-ColorWheel-inner", + ".spectrum-ColorWheel-slider", + ".spectrum-ColorWheel-wheel", + ".spectrum-ColorWheel-wheel.is-disabled", + ".spectrum-ColorWheel.is-disabled", + ".spectrum-ColorWheel.is-dragged", + ".spectrum-ColorWheel.is-focused" + ], + "mods": [ + "--mod-colorwheel-border-color", + "--mod-colorwheel-border-width", + "--mod-colorwheel-colorarea-container-size", + "--mod-colorwheel-colorarea-margin", + "--mod-colorwheel-fill-color-disabled", + "--mod-colorwheel-height", + "--mod-colorwheel-min-width", + "--mod-colorwheel-path", + "--mod-colorwheel-path-borders", + "--mod-colorwheel-track-width", + "--mod-colorwheel-width" + ], + "spectrum": [ + "--spectrum-border-width-100", + "--spectrum-color-control-track-width", + "--spectrum-color-wheel-color-area-margin", + "--spectrum-color-wheel-minimum-width", + "--spectrum-color-wheel-width", + "--spectrum-colorwheel-border-color", + "--spectrum-colorwheel-border-width", + "--spectrum-colorwheel-colorarea-container-size", + "--spectrum-colorwheel-colorarea-margin", + "--spectrum-colorwheel-colorhandle-position", + "--spectrum-colorwheel-fill-color-disabled", + "--spectrum-colorwheel-height", + "--spectrum-colorwheel-min-width", + "--spectrum-colorwheel-path", + "--spectrum-colorwheel-path-borders", + "--spectrum-colorwheel-track-width", + "--spectrum-colorwheel-width", + "--spectrum-disabled-background-color", + "--spectrum-transparent-black-200" + ], + "system": [], + "a11y": [ + "--highcontrast-colorwheel-border-color-disabled", + "--highcontrast-colorwheel-fill-color-disabled" + ] +} diff --git a/components/colorwheel/package.json b/components/colorwheel/package.json new file mode 100644 index 0000000000..6dd6a9dac1 --- /dev/null +++ b/components/colorwheel/package.json @@ -0,0 +1,53 @@ +{ + "name": "@spectrum-css/colorwheel", + "version": "4.1.1", + "description": "The Spectrum CSS Color Area component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/colorwheel", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/colorwheel" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/colorarea": ">=5", + "@spectrum-css/colorhandle": ">=8", + "@spectrum-css/colorloupe": ">=5", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/colorarea": { + "optional": true + }, + "@spectrum-css/colorloupe": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/colorarea": "workspace:^", + "@spectrum-css/colorhandle": "workspace:^", + "@spectrum-css/colorloupe": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/colorwheel/template.js b/components/colorwheel/template.js new file mode 100644 index 0000000000..6fa5652d48 --- /dev/null +++ b/components/colorwheel/template.js @@ -0,0 +1,53 @@ +import { Template as ColorArea } from "@spectrum-css/colorarea/stories/template.js"; +import { Template as ColorHandle } from "@spectrum-css/colorhandle/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ColorWheel", + customClasses = [], + isDisabled = false, + isFocused = false, + isWithColorArea = false, + colorHandleStyle = { + "--spectrum-picked-color": "rgb(255, 0, 0)", + }, +}, context) => html` +
    ({ ...a, [c]: true }), {}), + })}> +
    +
    + ${when(isWithColorArea, () => html` + ${ColorArea({ + isDisabled, + customStyles: { + "--mod-colorarea-width": "80px", + "--mod-colorarea-height": "80px", + }, + }, context)} + `)} +
    +
    +
    +
    +
    + ${ColorHandle({ + isDisabled, + customClasses: [`${rootClass}-handle`], + customStyles: colorHandleStyle, + }, context)} + +
    `; diff --git a/components/combobox/index-base.css b/components/combobox/index-base.css new file mode 100644 index 0000000000..dfbaa84f4d --- /dev/null +++ b/components/combobox/index-base.css @@ -0,0 +1,322 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Combobox { + --spectrum-combobox-inline-size: var(--spectrum-field-width); + --spectrum-combobox-block-size: var(--spectrum-component-height-100); + --spectrum-combobox-min-inline-size: calc(var(--spectrum-combo-box-minimum-width-multiplier) * var(--spectrum-combobox-block-size)); + --spectrum-combobox-button-width: var(--spectrum-combobox-block-size); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-combobox-font-size: var(--spectrum-font-size-100); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-medium); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-medium); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-combobox-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-combobox-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-combobox-border-radius: var(--spectrum-corner-radius-100); + --spectrum-combobox-border-width: var(--spectrum-border-width-100); + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component); + --spectrum-combobox-font-style: var(--spectrum-default-font-style); + --spectrum-combobox-line-height: var(--spectrum-line-height-100); + --spectrum-combobox-border-color-invalid-default: var(--spectrum-negative-border-color-default); + --spectrum-combobox-border-color-invalid-hover: var(--spectrum-negative-border-color-hover); + --spectrum-combobox-border-color-invalid-focus: var(--spectrum-negative-border-color-focus); + --spectrum-combobox-border-color-invalid-focus-hover: var(--spectrum-negative-border-color-focus-hover); + --spectrum-combobox-border-color-invalid-key-focus: var(--spectrum-negative-border-color-key-focus); + --mod-textfield-focus-indicator-gap: var(--mod-combobox-focus-indicator-gap, var(--spectrum-combobox-focus-indicator-gap)); + --mod-textfield-focus-indicator-width: var(--mod-combobox-focus-indicator-thickness, var(--spectrum-combobox-focus-indicator-thickness)); + --mod-textfield-focus-indicator-color: var(--mod-combobox-focus-indicator-color, var(--spectrum-combobox-focus-indicator-color)); + --mod-textfield-background-color: var(--mod-combobox-background-color-default); + --mod-textfield-background-color-disabled: var(--mod-combobox-background-color-disabled); + --mod-textfield-font-family: var(--mod-combobox-font-family); + --mod-textfield-font-weight: var(--mod-combobox-font-weight); + --mod-textfield-text-color-default: var(--mod-combobox-font-color-default); + --mod-textfield-text-color-hover: var(--mod-combobox-font-color-hover); + --mod-textfield-text-color-focus: var(--mod-combobox-font-color-focus); + --mod-textfield-text-color-focus-hover: var(--mod-combobox-font-color-focus-hover); + --mod-textfield-text-color-keyboard-focus: var(--mod-combobox-font-color-key-focus); + --mod-textfield-text-color-disabled: var(--mod-combobox-font-color-disabled); + --mod-textfield-border-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + --mod-textfield-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); + --mod-textfield-border-color-disabled: var(--mod-combobox-border-color-disabled); + --mod-textfield-border-color-focus: var(--mod-combobox-border-color-focus, var(--spectrum-combobox-border-color-focus)); + --mod-textfield-border-color-focus-hover: var(--mod-combobox-border-color-focus-hover, var(--spectrum-combobox-border-color-focus-hover)); + --mod-textfield-border-color-hover: var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover)); + --mod-textfield-border-color-keyboard-focus: var(--mod-combobox-border-color-key-focus, var(--spectrum-combobox-border-color-key-focus)); + --mod-textfield-border-color-invalid-default: var(--mod-combobox-border-color-invalid-default, var(--spectrum-combobox-border-color-invalid-default)); + --mod-textfield-border-color-invalid-hover: var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover)); + --mod-textfield-border-color-invalid-focus: var(--mod-combobox-border-color-invalid-focus, var(--spectrum-combobox-border-color-invalid-focus)); + --mod-textfield-border-color-invalid-focus-hover: var(--mod-combobox-border-color-invalid-focus-hover, var(--spectrum-combobox-border-color-invalid-focus-hover)); + --mod-textfield-border-color-invalid-keyboard-focus: var(--mod-combobox-border-color-invalid-key-focus, var(--spectrum-combobox-border-color-invalid-key-focus)); + --mod-textfield-icon-color-invalid: var(--mod-combobox-alert-icon-color); + --mod-picker-button-border-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + --mod-picker-button-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); + --mod-picker-button-background-color: var(--mod-combobox-background-color-default); + --mod-picker-button-background-color-disabled: var(--mod-combobox-background-color-disabled); + --mod-picker-button-font-color-disabled: var(--mod-combobox-font-color-disabled); +} +.spectrum-Combobox--sizeS { + --spectrum-combobox-block-size: var(--spectrum-component-height-75); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-combobox-font-size: var(--spectrum-font-size-75); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-small); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-small); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-small); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-75); +} +.spectrum-Combobox--sizeM { + --spectrum-combobox-block-size: var(--spectrum-component-height-100); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-combobox-font-size: var(--spectrum-font-size-100); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-medium); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-medium); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-100); +} +.spectrum-Combobox--sizeL { + --spectrum-combobox-block-size: var(--spectrum-component-height-200); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-combobox-font-size: var(--spectrum-font-size-200); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-large); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-large); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-large); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-200); +} +.spectrum-Combobox--sizeXL { + --spectrum-combobox-block-size: var(--spectrum-component-height-300); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-combobox-font-size: var(--spectrum-font-size-300); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-extra-large); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-extra-large); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-extra-large); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-300); +} +.spectrum-Combobox--quiet { + --spectrum-combobox-min-inline-size: calc(var(--spectrum-combo-box-quiet-minimum-width-multiplier) * var(--spectrum-combobox-block-size)); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-quiet); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-field-edge-to-text-quiet); + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-combobox-button-inline-offset: calc(var(--mod-combobox-block-size, var(--spectrum-combobox-block-size)) / 2 - var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) / 2); + --mod-picker-button-background-color-quiet: transparent; + --mod-picker-button-border-color-quiet: transparent; +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeS { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-small); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeM { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-medium); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeL { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-large); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeXL { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-extra-large); +} +@media (forced-colors: active) { + .spectrum-Combobox { + --highcontrast-combobox-border-color-highlight: Highlight; + --highcontrast-combobox-border-color-invalid: Highlight; + } + .spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-fill { + forced-color-adjust: none; + } + .spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-icon { + color: initial; + } +} +.spectrum-Combobox { + position: relative; + display: inline-flex; + flex-flow: row nowrap; + inline-size: var(--mod-combobox-inline-size, var(--spectrum-combobox-inline-size)); + min-inline-size: var(--mod-combobox-min-inline-size, var(--spectrum-combobox-min-inline-size)); + block-size: var(--mod-combobox-block-size, var(--spectrum-combobox-block-size)); + margin-block-start: var(--mod-combobox-spacing-label-to-combobox, var(--spectrum-combobox-spacing-label-to-combobox)); + border-radius: var(--mod-combobox-border-radius, var(--spectrum-combobox-border-radius)); +} +.spectrum-Combobox .spectrum-Popover.is-open { + transform: translateY(var(--mod-combobox-spacing-edge-to-menu, var(--spectrum-combobox-spacing-edge-to-menu))); +} +.spectrum-Combobox-progress-circle { + position: absolute; + inset-inline-end: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); + inset-block-start: var(--mod-combobox-block-spacing-edge-to-progress-circle, var(--spectrum-combobox-block-spacing-edge-to-progress-circle)); + inset-block-end: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); +} +.spectrum-Combobox-progress-circle:dir(rtl), +[dir="rtl"] .spectrum-Combobox-progress-circle { + inset-inline-end: inherit; + inset-inline-start: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); +} +.spectrum-Combobox-button { + position: absolute; + inset-inline-end: calc(var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px)) * -1); +} +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); +} +.spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus, +.spectrum-Combobox.is-focused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-focus, var(--spectrum-combobox-border-color-focus))); +} +.spectrum-Combobox-button.is-keyboardFocused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus-visible, +.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--mod-combobox-border-color-key-focus, var(--spectrum-combobox-border-color-key-focus)); +} +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):active, +.spectrum-Combobox:has(:active) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover))); +} +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-default, var(--spectrum-combobox-border-color-invalid-default))); +} +.spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus, +.spectrum-Combobox.is-focused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-focus, var(--spectrum-combobox-border-color-invalid-focus))); +} +.spectrum-Combobox-button.is-invalid.is-keyboardFocused:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus-visible, +.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-key-focus, var(--spectrum-combobox-border-color-invalid-key-focus))); +} +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):active, +.spectrum-Combobox:has(:active) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover))); +} +.spectrum-Combobox-textfield { + inline-size: 100%; +} +.spectrum-Combobox-input { + padding-block-start: calc(var(--mod-combobox-spacing-block-start-edge-to-text, var(--spectrum-combobox-spacing-block-start-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-block-end: calc(var(--mod-combobox-spacing-block-end-edge-to-text, var(--spectrum-combobox-spacing-block-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-start: calc(var(--mod-combobox-spacing-inline-start-edge-to-text, var(--spectrum-combobox-spacing-inline-start-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)) * 2); + backface-visibility: hidden; + line-height: var(--mod-combobox-line-height, var(--spectrum-combobox-line-height)); + font-size: var(--mod-combobox-font-size, var(--spectrum-combobox-font-size)); + font-style: var(--mod-combobox-font-style, var(--spectrum-combobox-font-style)); +} +.spectrum-Combobox-input::placeholder { + --mod-textfield-text-color-default: var(--mod-combobox-font-color-placeholder); +} +.spectrum-Combobox-input:active { + --mod-textfield-background-color: var(--mod-combobox-background-color-hover); +} +.spectrum-Combobox-input:focus, +.spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-focus); +} +@media (hover: hover) { + .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover))); + } + .spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus:hover, + .spectrum-Combobox.is-focused:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), + .spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-focus-hover, var(--spectrum-combobox-border-color-focus-hover))); + } + .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover))); + } + .spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus:hover, + .spectrum-Combobox.is-focused:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet), + .spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-focus-hover, var(--spectrum-combobox-border-color-invalid-focus-hover))); + } + .spectrum-Combobox-input:hover, + .spectrum-Combobox-textfield:hover .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-hover); + } + .spectrum-Combobox-input:focus:hover, + .spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input:hover { + --mod-textfield-background-color: var(--mod-combobox-background-color-focus-hover); + } +} +.spectrum-Combobox-textfield.is-keyboardFocused .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-key-focus); +} +.spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input, +.spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input { + padding-inline-end: calc( + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px)) - + var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)) * 2 + ); +} +.spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon { + inline-size: var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)); + block-size: var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)); + inset-block-start: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); + inset-block-end: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); + inset-inline-end: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); +} +.spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-loading .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon { + display: none; +} +.spectrum-Combobox--quiet { + border-radius: 0; +} +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)); +} +.spectrum-Combobox--quiet .spectrum-Combobox-input { + border-block-end-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + padding-block-start: var(--mod-combobox-spacing-block-start-edge-to-text, var(--spectrum-combobox-spacing-block-start-edge-to-text)); + padding-block-end: calc(var(--mod-combobox-spacing-block-end-edge-to-text, var(--spectrum-combobox-spacing-block-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-start: var(--mod-combobox-spacing-inline-start-edge-to-text, var(--spectrum-combobox-spacing-inline-start-edge-to-text)); + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px))); +} +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input, +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input { + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px))); +} +.spectrum-Combobox { + --spectrum-combobox-border-color-default: var(--system-spectrum-combobox-border-color-default); + --spectrum-combobox-border-color-hover: var(--system-spectrum-combobox-border-color-hover); + --spectrum-combobox-border-color-focus: var(--system-spectrum-combobox-border-color-focus); + --spectrum-combobox-border-color-focus-hover: var(--system-spectrum-combobox-border-color-focus-hover); + --spectrum-combobox-border-color-key-focus: var(--system-spectrum-combobox-border-color-key-focus); +} +/*# sourceMappingURL=components/combobox/index.css.map */ diff --git a/components/combobox/index-theme.css b/components/combobox/index-theme.css new file mode 100644 index 0000000000..50003c06b1 --- /dev/null +++ b/components/combobox/index-theme.css @@ -0,0 +1,28 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-600); +} +.spectrum--express { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-400); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-900); +} +/*# sourceMappingURL=components/combobox/themes/express.css.map */ diff --git a/components/combobox/index-vars.css b/components/combobox/index-vars.css new file mode 100644 index 0000000000..64b1bac24e --- /dev/null +++ b/components/combobox/index-vars.css @@ -0,0 +1,336 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-600); +} +.spectrum--express { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-400); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-900); +} +.spectrum-Combobox { + --spectrum-combobox-inline-size: var(--spectrum-field-width); + --spectrum-combobox-block-size: var(--spectrum-component-height-100); + --spectrum-combobox-min-inline-size: calc(var(--spectrum-combo-box-minimum-width-multiplier) * var(--spectrum-combobox-block-size)); + --spectrum-combobox-button-width: var(--spectrum-combobox-block-size); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-combobox-font-size: var(--spectrum-font-size-100); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-medium); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-medium); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-combobox-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-combobox-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-combobox-border-radius: var(--spectrum-corner-radius-100); + --spectrum-combobox-border-width: var(--spectrum-border-width-100); + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component); + --spectrum-combobox-font-style: var(--spectrum-default-font-style); + --spectrum-combobox-line-height: var(--spectrum-line-height-100); + --spectrum-combobox-border-color-invalid-default: var(--spectrum-negative-border-color-default); + --spectrum-combobox-border-color-invalid-hover: var(--spectrum-negative-border-color-hover); + --spectrum-combobox-border-color-invalid-focus: var(--spectrum-negative-border-color-focus); + --spectrum-combobox-border-color-invalid-focus-hover: var(--spectrum-negative-border-color-focus-hover); + --spectrum-combobox-border-color-invalid-key-focus: var(--spectrum-negative-border-color-key-focus); + --mod-textfield-focus-indicator-gap: var(--mod-combobox-focus-indicator-gap, var(--spectrum-combobox-focus-indicator-gap)); + --mod-textfield-focus-indicator-width: var(--mod-combobox-focus-indicator-thickness, var(--spectrum-combobox-focus-indicator-thickness)); + --mod-textfield-focus-indicator-color: var(--mod-combobox-focus-indicator-color, var(--spectrum-combobox-focus-indicator-color)); + --mod-textfield-background-color: var(--mod-combobox-background-color-default); + --mod-textfield-background-color-disabled: var(--mod-combobox-background-color-disabled); + --mod-textfield-font-family: var(--mod-combobox-font-family); + --mod-textfield-font-weight: var(--mod-combobox-font-weight); + --mod-textfield-text-color-default: var(--mod-combobox-font-color-default); + --mod-textfield-text-color-hover: var(--mod-combobox-font-color-hover); + --mod-textfield-text-color-focus: var(--mod-combobox-font-color-focus); + --mod-textfield-text-color-focus-hover: var(--mod-combobox-font-color-focus-hover); + --mod-textfield-text-color-keyboard-focus: var(--mod-combobox-font-color-key-focus); + --mod-textfield-text-color-disabled: var(--mod-combobox-font-color-disabled); + --mod-textfield-border-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + --mod-textfield-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); + --mod-textfield-border-color-disabled: var(--mod-combobox-border-color-disabled); + --mod-textfield-border-color-focus: var(--mod-combobox-border-color-focus, var(--spectrum-combobox-border-color-focus)); + --mod-textfield-border-color-focus-hover: var(--mod-combobox-border-color-focus-hover, var(--spectrum-combobox-border-color-focus-hover)); + --mod-textfield-border-color-hover: var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover)); + --mod-textfield-border-color-keyboard-focus: var(--mod-combobox-border-color-key-focus, var(--spectrum-combobox-border-color-key-focus)); + --mod-textfield-border-color-invalid-default: var(--mod-combobox-border-color-invalid-default, var(--spectrum-combobox-border-color-invalid-default)); + --mod-textfield-border-color-invalid-hover: var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover)); + --mod-textfield-border-color-invalid-focus: var(--mod-combobox-border-color-invalid-focus, var(--spectrum-combobox-border-color-invalid-focus)); + --mod-textfield-border-color-invalid-focus-hover: var(--mod-combobox-border-color-invalid-focus-hover, var(--spectrum-combobox-border-color-invalid-focus-hover)); + --mod-textfield-border-color-invalid-keyboard-focus: var(--mod-combobox-border-color-invalid-key-focus, var(--spectrum-combobox-border-color-invalid-key-focus)); + --mod-textfield-icon-color-invalid: var(--mod-combobox-alert-icon-color); + --mod-picker-button-border-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + --mod-picker-button-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); + --mod-picker-button-background-color: var(--mod-combobox-background-color-default); + --mod-picker-button-background-color-disabled: var(--mod-combobox-background-color-disabled); + --mod-picker-button-font-color-disabled: var(--mod-combobox-font-color-disabled); +} +.spectrum-Combobox--sizeS { + --spectrum-combobox-block-size: var(--spectrum-component-height-75); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-combobox-font-size: var(--spectrum-font-size-75); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-small); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-small); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-small); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-75); +} +.spectrum-Combobox--sizeM { + --spectrum-combobox-block-size: var(--spectrum-component-height-100); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-combobox-font-size: var(--spectrum-font-size-100); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-medium); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-medium); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-100); +} +.spectrum-Combobox--sizeL { + --spectrum-combobox-block-size: var(--spectrum-component-height-200); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-combobox-font-size: var(--spectrum-font-size-200); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-large); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-large); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-large); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-200); +} +.spectrum-Combobox--sizeXL { + --spectrum-combobox-block-size: var(--spectrum-component-height-300); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-combobox-font-size: var(--spectrum-font-size-300); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-extra-large); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-extra-large); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-extra-large); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-300); +} +.spectrum-Combobox--quiet { + --spectrum-combobox-min-inline-size: calc(var(--spectrum-combo-box-quiet-minimum-width-multiplier) * var(--spectrum-combobox-block-size)); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-quiet); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-field-edge-to-text-quiet); + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-combobox-button-inline-offset: calc(var(--mod-combobox-block-size, var(--spectrum-combobox-block-size)) / 2 - var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) / 2); + --mod-picker-button-background-color-quiet: transparent; + --mod-picker-button-border-color-quiet: transparent; +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeS { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-small); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeM { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-medium); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeL { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-large); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeXL { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-extra-large); +} +@media (forced-colors: active) { + .spectrum-Combobox { + --highcontrast-combobox-border-color-highlight: Highlight; + --highcontrast-combobox-border-color-invalid: Highlight; + } + .spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-fill { + forced-color-adjust: none; + } + .spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-icon { + color: initial; + } +} +.spectrum-Combobox { + position: relative; + display: inline-flex; + flex-flow: row nowrap; + inline-size: var(--mod-combobox-inline-size, var(--spectrum-combobox-inline-size)); + min-inline-size: var(--mod-combobox-min-inline-size, var(--spectrum-combobox-min-inline-size)); + block-size: var(--mod-combobox-block-size, var(--spectrum-combobox-block-size)); + margin-block-start: var(--mod-combobox-spacing-label-to-combobox, var(--spectrum-combobox-spacing-label-to-combobox)); + border-radius: var(--mod-combobox-border-radius, var(--spectrum-combobox-border-radius)); +} +.spectrum-Combobox .spectrum-Popover.is-open { + transform: translateY(var(--mod-combobox-spacing-edge-to-menu, var(--spectrum-combobox-spacing-edge-to-menu))); +} +.spectrum-Combobox-progress-circle { + position: absolute; + inset-inline-end: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); + inset-block-start: var(--mod-combobox-block-spacing-edge-to-progress-circle, var(--spectrum-combobox-block-spacing-edge-to-progress-circle)); + inset-block-end: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); +} +.spectrum-Combobox-progress-circle:dir(rtl), +[dir="rtl"] .spectrum-Combobox-progress-circle { + inset-inline-end: inherit; + inset-inline-start: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); +} +.spectrum-Combobox-button { + position: absolute; + inset-inline-end: calc(var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px)) * -1); +} +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); +} +.spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus, +.spectrum-Combobox.is-focused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-focus, var(--spectrum-combobox-border-color-focus))); +} +.spectrum-Combobox-button.is-keyboardFocused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus-visible, +.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--mod-combobox-border-color-key-focus, var(--spectrum-combobox-border-color-key-focus)); +} +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):active, +.spectrum-Combobox:has(:active) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover))); +} +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-default, var(--spectrum-combobox-border-color-invalid-default))); +} +.spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus, +.spectrum-Combobox.is-focused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-focus, var(--spectrum-combobox-border-color-invalid-focus))); +} +.spectrum-Combobox-button.is-invalid.is-keyboardFocused:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus-visible, +.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-key-focus, var(--spectrum-combobox-border-color-invalid-key-focus))); +} +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):active, +.spectrum-Combobox:has(:active) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover))); +} +.spectrum-Combobox-textfield { + inline-size: 100%; +} +.spectrum-Combobox-input { + padding-block-start: calc(var(--mod-combobox-spacing-block-start-edge-to-text, var(--spectrum-combobox-spacing-block-start-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-block-end: calc(var(--mod-combobox-spacing-block-end-edge-to-text, var(--spectrum-combobox-spacing-block-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-start: calc(var(--mod-combobox-spacing-inline-start-edge-to-text, var(--spectrum-combobox-spacing-inline-start-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)) * 2); + backface-visibility: hidden; + line-height: var(--mod-combobox-line-height, var(--spectrum-combobox-line-height)); + font-size: var(--mod-combobox-font-size, var(--spectrum-combobox-font-size)); + font-style: var(--mod-combobox-font-style, var(--spectrum-combobox-font-style)); +} +.spectrum-Combobox-input::placeholder { + --mod-textfield-text-color-default: var(--mod-combobox-font-color-placeholder); +} +.spectrum-Combobox-input:active { + --mod-textfield-background-color: var(--mod-combobox-background-color-hover); +} +.spectrum-Combobox-input:focus, +.spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-focus); +} +@media (hover: hover) { + .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover))); + } + .spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus:hover, + .spectrum-Combobox.is-focused:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), + .spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-focus-hover, var(--spectrum-combobox-border-color-focus-hover))); + } + .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover))); + } + .spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus:hover, + .spectrum-Combobox.is-focused:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet), + .spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-focus-hover, var(--spectrum-combobox-border-color-invalid-focus-hover))); + } + .spectrum-Combobox-input:hover, + .spectrum-Combobox-textfield:hover .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-hover); + } + .spectrum-Combobox-input:focus:hover, + .spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input:hover { + --mod-textfield-background-color: var(--mod-combobox-background-color-focus-hover); + } +} +.spectrum-Combobox-textfield.is-keyboardFocused .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-key-focus); +} +.spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input, +.spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input { + padding-inline-end: calc( + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px)) - + var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)) * 2 + ); +} +.spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon { + inline-size: var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)); + block-size: var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)); + inset-block-start: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); + inset-block-end: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); + inset-inline-end: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); +} +.spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-loading .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon { + display: none; +} +.spectrum-Combobox--quiet { + border-radius: 0; +} +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)); +} +.spectrum-Combobox--quiet .spectrum-Combobox-input { + border-block-end-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + padding-block-start: var(--mod-combobox-spacing-block-start-edge-to-text, var(--spectrum-combobox-spacing-block-start-edge-to-text)); + padding-block-end: calc(var(--mod-combobox-spacing-block-end-edge-to-text, var(--spectrum-combobox-spacing-block-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-start: var(--mod-combobox-spacing-inline-start-edge-to-text, var(--spectrum-combobox-spacing-inline-start-edge-to-text)); + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px))); +} +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input, +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input { + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px))); +} +.spectrum-Combobox { + --spectrum-combobox-border-color-default: var(--system-spectrum-combobox-border-color-default); + --spectrum-combobox-border-color-hover: var(--system-spectrum-combobox-border-color-hover); + --spectrum-combobox-border-color-focus: var(--system-spectrum-combobox-border-color-focus); + --spectrum-combobox-border-color-focus-hover: var(--system-spectrum-combobox-border-color-focus-hover); + --spectrum-combobox-border-color-key-focus: var(--system-spectrum-combobox-border-color-key-focus); +} +/*# sourceMappingURL=components/combobox/index.css.map */ diff --git a/components/combobox/index.css b/components/combobox/index.css new file mode 100644 index 0000000000..64b1bac24e --- /dev/null +++ b/components/combobox/index.css @@ -0,0 +1,336 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-600); +} +.spectrum--express { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-400); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-900); +} +.spectrum-Combobox { + --spectrum-combobox-inline-size: var(--spectrum-field-width); + --spectrum-combobox-block-size: var(--spectrum-component-height-100); + --spectrum-combobox-min-inline-size: calc(var(--spectrum-combo-box-minimum-width-multiplier) * var(--spectrum-combobox-block-size)); + --spectrum-combobox-button-width: var(--spectrum-combobox-block-size); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-combobox-font-size: var(--spectrum-font-size-100); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-medium); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-medium); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-combobox-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-combobox-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-combobox-border-radius: var(--spectrum-corner-radius-100); + --spectrum-combobox-border-width: var(--spectrum-border-width-100); + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component); + --spectrum-combobox-font-style: var(--spectrum-default-font-style); + --spectrum-combobox-line-height: var(--spectrum-line-height-100); + --spectrum-combobox-border-color-invalid-default: var(--spectrum-negative-border-color-default); + --spectrum-combobox-border-color-invalid-hover: var(--spectrum-negative-border-color-hover); + --spectrum-combobox-border-color-invalid-focus: var(--spectrum-negative-border-color-focus); + --spectrum-combobox-border-color-invalid-focus-hover: var(--spectrum-negative-border-color-focus-hover); + --spectrum-combobox-border-color-invalid-key-focus: var(--spectrum-negative-border-color-key-focus); + --mod-textfield-focus-indicator-gap: var(--mod-combobox-focus-indicator-gap, var(--spectrum-combobox-focus-indicator-gap)); + --mod-textfield-focus-indicator-width: var(--mod-combobox-focus-indicator-thickness, var(--spectrum-combobox-focus-indicator-thickness)); + --mod-textfield-focus-indicator-color: var(--mod-combobox-focus-indicator-color, var(--spectrum-combobox-focus-indicator-color)); + --mod-textfield-background-color: var(--mod-combobox-background-color-default); + --mod-textfield-background-color-disabled: var(--mod-combobox-background-color-disabled); + --mod-textfield-font-family: var(--mod-combobox-font-family); + --mod-textfield-font-weight: var(--mod-combobox-font-weight); + --mod-textfield-text-color-default: var(--mod-combobox-font-color-default); + --mod-textfield-text-color-hover: var(--mod-combobox-font-color-hover); + --mod-textfield-text-color-focus: var(--mod-combobox-font-color-focus); + --mod-textfield-text-color-focus-hover: var(--mod-combobox-font-color-focus-hover); + --mod-textfield-text-color-keyboard-focus: var(--mod-combobox-font-color-key-focus); + --mod-textfield-text-color-disabled: var(--mod-combobox-font-color-disabled); + --mod-textfield-border-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + --mod-textfield-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); + --mod-textfield-border-color-disabled: var(--mod-combobox-border-color-disabled); + --mod-textfield-border-color-focus: var(--mod-combobox-border-color-focus, var(--spectrum-combobox-border-color-focus)); + --mod-textfield-border-color-focus-hover: var(--mod-combobox-border-color-focus-hover, var(--spectrum-combobox-border-color-focus-hover)); + --mod-textfield-border-color-hover: var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover)); + --mod-textfield-border-color-keyboard-focus: var(--mod-combobox-border-color-key-focus, var(--spectrum-combobox-border-color-key-focus)); + --mod-textfield-border-color-invalid-default: var(--mod-combobox-border-color-invalid-default, var(--spectrum-combobox-border-color-invalid-default)); + --mod-textfield-border-color-invalid-hover: var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover)); + --mod-textfield-border-color-invalid-focus: var(--mod-combobox-border-color-invalid-focus, var(--spectrum-combobox-border-color-invalid-focus)); + --mod-textfield-border-color-invalid-focus-hover: var(--mod-combobox-border-color-invalid-focus-hover, var(--spectrum-combobox-border-color-invalid-focus-hover)); + --mod-textfield-border-color-invalid-keyboard-focus: var(--mod-combobox-border-color-invalid-key-focus, var(--spectrum-combobox-border-color-invalid-key-focus)); + --mod-textfield-icon-color-invalid: var(--mod-combobox-alert-icon-color); + --mod-picker-button-border-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + --mod-picker-button-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); + --mod-picker-button-background-color: var(--mod-combobox-background-color-default); + --mod-picker-button-background-color-disabled: var(--mod-combobox-background-color-disabled); + --mod-picker-button-font-color-disabled: var(--mod-combobox-font-color-disabled); +} +.spectrum-Combobox--sizeS { + --spectrum-combobox-block-size: var(--spectrum-component-height-75); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-combobox-font-size: var(--spectrum-font-size-75); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-small); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-small); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-small); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-75); +} +.spectrum-Combobox--sizeM { + --spectrum-combobox-block-size: var(--spectrum-component-height-100); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-combobox-font-size: var(--spectrum-font-size-100); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-medium); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-medium); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-100); +} +.spectrum-Combobox--sizeL { + --spectrum-combobox-block-size: var(--spectrum-component-height-200); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-combobox-font-size: var(--spectrum-font-size-200); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-large); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-large); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-large); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-200); +} +.spectrum-Combobox--sizeXL { + --spectrum-combobox-block-size: var(--spectrum-component-height-300); + --spectrum-combobox-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-combobox-font-size: var(--spectrum-font-size-300); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-extra-large); + --spectrum-combobox-block-spacing-edge-to-progress-circle: var(--spectrum-field-top-to-progress-circle-extra-large); + --spectrum-combobox-block-spacing-edge-to-alert: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-combobox-spacing-edge-to-menu: var(--spectrum-component-to-menu-extra-large); + --spectrum-combobox-spacing-block-start-edge-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-combobox-spacing-block-end-edge-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-combobox-spacing-inline-end-edge-to-text: var(--spectrum-component-edge-to-text-300); +} +.spectrum-Combobox--quiet { + --spectrum-combobox-min-inline-size: calc(var(--spectrum-combo-box-quiet-minimum-width-multiplier) * var(--spectrum-combobox-block-size)); + --spectrum-combobox-spacing-inline-icon-to-button: var(--spectrum-combo-box-visual-to-field-button-quiet); + --spectrum-combobox-spacing-inline-start-edge-to-text: var(--spectrum-field-edge-to-text-quiet); + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-combobox-button-inline-offset: calc(var(--mod-combobox-block-size, var(--spectrum-combobox-block-size)) / 2 - var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) / 2); + --mod-picker-button-background-color-quiet: transparent; + --mod-picker-button-border-color-quiet: transparent; +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeS { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-small); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeM { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-medium); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeL { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-large); +} +.spectrum-Combobox--quiet.spectrum-Combobox--sizeXL { + --spectrum-combobox-spacing-label-to-combobox: var(--spectrum-field-label-to-component-quiet-extra-large); +} +@media (forced-colors: active) { + .spectrum-Combobox { + --highcontrast-combobox-border-color-highlight: Highlight; + --highcontrast-combobox-border-color-invalid: Highlight; + } + .spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-fill { + forced-color-adjust: none; + } + .spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-icon { + color: initial; + } +} +.spectrum-Combobox { + position: relative; + display: inline-flex; + flex-flow: row nowrap; + inline-size: var(--mod-combobox-inline-size, var(--spectrum-combobox-inline-size)); + min-inline-size: var(--mod-combobox-min-inline-size, var(--spectrum-combobox-min-inline-size)); + block-size: var(--mod-combobox-block-size, var(--spectrum-combobox-block-size)); + margin-block-start: var(--mod-combobox-spacing-label-to-combobox, var(--spectrum-combobox-spacing-label-to-combobox)); + border-radius: var(--mod-combobox-border-radius, var(--spectrum-combobox-border-radius)); +} +.spectrum-Combobox .spectrum-Popover.is-open { + transform: translateY(var(--mod-combobox-spacing-edge-to-menu, var(--spectrum-combobox-spacing-edge-to-menu))); +} +.spectrum-Combobox-progress-circle { + position: absolute; + inset-inline-end: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); + inset-block-start: var(--mod-combobox-block-spacing-edge-to-progress-circle, var(--spectrum-combobox-block-spacing-edge-to-progress-circle)); + inset-block-end: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); +} +.spectrum-Combobox-progress-circle:dir(rtl), +[dir="rtl"] .spectrum-Combobox-progress-circle { + inset-inline-end: inherit; + inset-inline-start: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); +} +.spectrum-Combobox-button { + position: absolute; + inset-inline-end: calc(var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px)) * -1); +} +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--mod-combobox-border-color-default, var(--spectrum-combobox-border-color-default)); +} +.spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus, +.spectrum-Combobox.is-focused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-focus, var(--spectrum-combobox-border-color-focus))); +} +.spectrum-Combobox-button.is-keyboardFocused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus-visible, +.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--mod-combobox-border-color-key-focus, var(--spectrum-combobox-border-color-key-focus)); +} +.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):active, +.spectrum-Combobox:has(:active) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover))); +} +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-default, var(--spectrum-combobox-border-color-invalid-default))); +} +.spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus, +.spectrum-Combobox.is-focused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-focus, var(--spectrum-combobox-border-color-invalid-focus))); +} +.spectrum-Combobox-button.is-invalid.is-keyboardFocused:not(:disabled, .spectrum-PickerButton--quiet), +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus-visible, +.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-key-focus, var(--spectrum-combobox-border-color-invalid-key-focus))); +} +.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):active, +.spectrum-Combobox:has(:active) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover))); +} +.spectrum-Combobox-textfield { + inline-size: 100%; +} +.spectrum-Combobox-input { + padding-block-start: calc(var(--mod-combobox-spacing-block-start-edge-to-text, var(--spectrum-combobox-spacing-block-start-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-block-end: calc(var(--mod-combobox-spacing-block-end-edge-to-text, var(--spectrum-combobox-spacing-block-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-start: calc(var(--mod-combobox-spacing-inline-start-edge-to-text, var(--spectrum-combobox-spacing-inline-start-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)) * 2); + backface-visibility: hidden; + line-height: var(--mod-combobox-line-height, var(--spectrum-combobox-line-height)); + font-size: var(--mod-combobox-font-size, var(--spectrum-combobox-font-size)); + font-style: var(--mod-combobox-font-style, var(--spectrum-combobox-font-style)); +} +.spectrum-Combobox-input::placeholder { + --mod-textfield-text-color-default: var(--mod-combobox-font-color-placeholder); +} +.spectrum-Combobox-input:active { + --mod-textfield-background-color: var(--mod-combobox-background-color-hover); +} +.spectrum-Combobox-input:focus, +.spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-focus); +} +@media (hover: hover) { + .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-hover, var(--spectrum-combobox-border-color-hover))); + } + .spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus:hover, + .spectrum-Combobox.is-focused:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet), + .spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-highlight, var(--mod-combobox-border-color-focus-hover, var(--spectrum-combobox-border-color-focus-hover))); + } + .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-hover, var(--spectrum-combobox-border-color-invalid-hover))); + } + .spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet):hover, + .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus:hover, + .spectrum-Combobox.is-focused:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet), + .spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet) { + --mod-picker-button-border-color: var(--highcontrast-combobox-border-color-invalid, var(--mod-combobox-border-color-invalid-focus-hover, var(--spectrum-combobox-border-color-invalid-focus-hover))); + } + .spectrum-Combobox-input:hover, + .spectrum-Combobox-textfield:hover .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-hover); + } + .spectrum-Combobox-input:focus:hover, + .spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input:hover { + --mod-textfield-background-color: var(--mod-combobox-background-color-focus-hover); + } +} +.spectrum-Combobox-textfield.is-keyboardFocused .spectrum-Combobox-input { + --mod-textfield-background-color: var(--mod-combobox-background-color-key-focus); +} +.spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input, +.spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input { + padding-inline-end: calc( + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px)) - + var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)) * 2 + ); +} +.spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon { + inline-size: var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)); + block-size: var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)); + inset-block-start: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); + inset-block-end: var(--mod-combobox-block-spacing-edge-to-alert, var(--spectrum-combobox-block-spacing-edge-to-alert)); + inset-inline-end: calc(var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-button-width, var(--spectrum-combobox-button-width))); +} +.spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-loading .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon { + display: none; +} +.spectrum-Combobox--quiet { + border-radius: 0; +} +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)); +} +.spectrum-Combobox--quiet .spectrum-Combobox-input { + border-block-end-width: var(--mod-combobox-border-width, var(--spectrum-combobox-border-width)); + padding-block-start: var(--mod-combobox-spacing-block-start-edge-to-text, var(--spectrum-combobox-spacing-block-start-edge-to-text)); + padding-block-end: calc(var(--mod-combobox-spacing-block-end-edge-to-text, var(--spectrum-combobox-spacing-block-end-edge-to-text)) - var(--mod-combobox-border-width, var(--spectrum-combobox-border-width))); + padding-inline-start: var(--mod-combobox-spacing-inline-start-edge-to-text, var(--spectrum-combobox-spacing-inline-start-edge-to-text)); + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px))); +} +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input, +.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input { + padding-inline-end: calc(var(--mod-combobox-button-width, var(--spectrum-combobox-button-width)) + var(--mod-combobox-spacing-inline-icon-to-button, var(--spectrum-combobox-spacing-inline-icon-to-button)) + var(--mod-combobox-icon-size, var(--spectrum-combobox-icon-size)) + var(--mod-combobox-spacing-inline-end-edge-to-text, var(--spectrum-combobox-spacing-inline-end-edge-to-text)) - var(--mod-combobox-button-inline-offset, var(--spectrum-combobox-button-inline-offset, 0px))); +} +.spectrum-Combobox { + --spectrum-combobox-border-color-default: var(--system-spectrum-combobox-border-color-default); + --spectrum-combobox-border-color-hover: var(--system-spectrum-combobox-border-color-hover); + --spectrum-combobox-border-color-focus: var(--system-spectrum-combobox-border-color-focus); + --spectrum-combobox-border-color-focus-hover: var(--system-spectrum-combobox-border-color-focus-hover); + --spectrum-combobox-border-color-key-focus: var(--system-spectrum-combobox-border-color-key-focus); +} +/*# sourceMappingURL=components/combobox/index.css.map */ diff --git a/components/combobox/metadata.json b/components/combobox/metadata.json new file mode 100644 index 0000000000..c0fa549a0e --- /dev/null +++ b/components/combobox/metadata.json @@ -0,0 +1,213 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Combobox", + ".spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-fill", + ".spectrum-Combobox .spectrum-Combobox-button.spectrum-PickerButton--quiet .spectrum-PickerButton-icon", + ".spectrum-Combobox .spectrum-Popover.is-open", + ".spectrum-Combobox--quiet", + ".spectrum-Combobox--quiet .spectrum-Combobox-input", + ".spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input,\n.spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input", + ".spectrum-Combobox--quiet .spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon", + ".spectrum-Combobox--quiet.spectrum-Combobox--sizeL", + ".spectrum-Combobox--quiet.spectrum-Combobox--sizeM", + ".spectrum-Combobox--quiet.spectrum-Combobox--sizeS", + ".spectrum-Combobox--quiet.spectrum-Combobox--sizeXL", + ".spectrum-Combobox--sizeL", + ".spectrum-Combobox--sizeM", + ".spectrum-Combobox--sizeS", + ".spectrum-Combobox--sizeXL", + ".spectrum-Combobox-button", + ".spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet),\n.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus,\n.spectrum-Combobox.is-focused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet),\n.spectrum-Combobox:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-focused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover,\n\t.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus:hover,\n\t.spectrum-Combobox.is-focused:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet),\n\t.spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet),\n.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus,\n.spectrum-Combobox.is-focused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet),\n.spectrum-Combobox:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-invalid.is-focused:not(:disabled, .spectrum-PickerButton--quiet):hover,\n\t.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus:hover,\n\t.spectrum-Combobox.is-focused:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet),\n\t.spectrum-Combobox:hover:has(:focus) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-invalid.is-keyboardFocused:not(:disabled, .spectrum-PickerButton--quiet),\n.spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):focus-visible,\n.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):active,\n.spectrum-Combobox:has(:active) .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet):hover,\n\t.spectrum-Combobox:hover .spectrum-Combobox-button.is-invalid:not(:disabled, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button.is-keyboardFocused:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet),\n.spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):focus-visible,\n.spectrum-Combobox.is-keyboardFocused .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):active,\n.spectrum-Combobox:has(:active) .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet):hover,\n\t.spectrum-Combobox:hover .spectrum-Combobox-button:not(:disabled, .is-invalid, .spectrum-PickerButton--quiet)", + ".spectrum-Combobox-input", + ".spectrum-Combobox-input::placeholder", + ".spectrum-Combobox-input:active", + ".spectrum-Combobox-input:focus,\n.spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input", + ".spectrum-Combobox-input:focus:hover,\n\t.spectrum-Combobox-textfield.is-focused .spectrum-Combobox-input:hover", + ".spectrum-Combobox-input:hover,\n\t.spectrum-Combobox-textfield:hover .spectrum-Combobox-input", + ".spectrum-Combobox-progress-circle", + ".spectrum-Combobox-progress-circle:dir(rtl),\n[dir=\"rtl\"] .spectrum-Combobox-progress-circle", + ".spectrum-Combobox-textfield", + ".spectrum-Combobox-textfield.is-invalid .spectrum-Combobox-input,\n.spectrum-Combobox-textfield.is-loading .spectrum-Combobox-input", + ".spectrum-Combobox-textfield.is-invalid .spectrum-Textfield-validationIcon", + ".spectrum-Combobox-textfield.is-keyboardFocused .spectrum-Combobox-input", + ".spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon,\n.spectrum-Textfield.is-loading .spectrum-Textfield-validationIcon,\n.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon" + ], + "mods": [ + "--mod-combobox-alert-icon-color", + "--mod-combobox-background-color-default", + "--mod-combobox-background-color-disabled", + "--mod-combobox-background-color-focus", + "--mod-combobox-background-color-focus-hover", + "--mod-combobox-background-color-hover", + "--mod-combobox-background-color-key-focus", + "--mod-combobox-block-size", + "--mod-combobox-block-spacing-edge-to-alert", + "--mod-combobox-block-spacing-edge-to-progress-circle", + "--mod-combobox-border-color-default", + "--mod-combobox-border-color-disabled", + "--mod-combobox-border-color-focus", + "--mod-combobox-border-color-focus-hover", + "--mod-combobox-border-color-hover", + "--mod-combobox-border-color-invalid-default", + "--mod-combobox-border-color-invalid-focus", + "--mod-combobox-border-color-invalid-focus-hover", + "--mod-combobox-border-color-invalid-hover", + "--mod-combobox-border-color-invalid-key-focus", + "--mod-combobox-border-color-key-focus", + "--mod-combobox-border-radius", + "--mod-combobox-border-width", + "--mod-combobox-button-inline-offset", + "--mod-combobox-button-width", + "--mod-combobox-focus-indicator-color", + "--mod-combobox-focus-indicator-gap", + "--mod-combobox-focus-indicator-thickness", + "--mod-combobox-font-color-default", + "--mod-combobox-font-color-disabled", + "--mod-combobox-font-color-focus", + "--mod-combobox-font-color-focus-hover", + "--mod-combobox-font-color-hover", + "--mod-combobox-font-color-key-focus", + "--mod-combobox-font-color-placeholder", + "--mod-combobox-font-family", + "--mod-combobox-font-size", + "--mod-combobox-font-style", + "--mod-combobox-font-weight", + "--mod-combobox-icon-size", + "--mod-combobox-inline-size", + "--mod-combobox-line-height", + "--mod-combobox-min-inline-size", + "--mod-combobox-spacing-block-end-edge-to-text", + "--mod-combobox-spacing-block-start-edge-to-text", + "--mod-combobox-spacing-edge-to-menu", + "--mod-combobox-spacing-inline-end-edge-to-text", + "--mod-combobox-spacing-inline-icon-to-button", + "--mod-combobox-spacing-inline-start-edge-to-text", + "--mod-combobox-spacing-label-to-combobox" + ], + "spectrum": [ + "--spectrum-border-width-100", + "--spectrum-combo-box-minimum-width-multiplier", + "--spectrum-combo-box-quiet-minimum-width-multiplier", + "--spectrum-combo-box-visual-to-field-button-extra-large", + "--spectrum-combo-box-visual-to-field-button-large", + "--spectrum-combo-box-visual-to-field-button-medium", + "--spectrum-combo-box-visual-to-field-button-quiet", + "--spectrum-combo-box-visual-to-field-button-small", + "--spectrum-combobox-block-size", + "--spectrum-combobox-block-spacing-edge-to-alert", + "--spectrum-combobox-block-spacing-edge-to-progress-circle", + "--spectrum-combobox-border-color-default", + "--spectrum-combobox-border-color-focus", + "--spectrum-combobox-border-color-focus-hover", + "--spectrum-combobox-border-color-hover", + "--spectrum-combobox-border-color-invalid-default", + "--spectrum-combobox-border-color-invalid-focus", + "--spectrum-combobox-border-color-invalid-focus-hover", + "--spectrum-combobox-border-color-invalid-hover", + "--spectrum-combobox-border-color-invalid-key-focus", + "--spectrum-combobox-border-color-key-focus", + "--spectrum-combobox-border-radius", + "--spectrum-combobox-border-width", + "--spectrum-combobox-button-inline-offset", + "--spectrum-combobox-button-width", + "--spectrum-combobox-focus-indicator-color", + "--spectrum-combobox-focus-indicator-gap", + "--spectrum-combobox-focus-indicator-thickness", + "--spectrum-combobox-font-size", + "--spectrum-combobox-font-style", + "--spectrum-combobox-icon-size", + "--spectrum-combobox-inline-size", + "--spectrum-combobox-line-height", + "--spectrum-combobox-min-inline-size", + "--spectrum-combobox-spacing-block-end-edge-to-text", + "--spectrum-combobox-spacing-block-start-edge-to-text", + "--spectrum-combobox-spacing-edge-to-menu", + "--spectrum-combobox-spacing-inline-end-edge-to-text", + "--spectrum-combobox-spacing-inline-icon-to-button", + "--spectrum-combobox-spacing-inline-start-edge-to-text", + "--spectrum-combobox-spacing-label-to-combobox", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-300", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-to-menu-extra-large", + "--spectrum-component-to-menu-large", + "--spectrum-component-to-menu-medium", + "--spectrum-component-to-menu-small", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-field-edge-to-text-quiet", + "--spectrum-field-label-to-component", + "--spectrum-field-label-to-component-quiet-extra-large", + "--spectrum-field-label-to-component-quiet-large", + "--spectrum-field-label-to-component-quiet-medium", + "--spectrum-field-label-to-component-quiet-small", + "--spectrum-field-top-to-alert-icon-extra-large", + "--spectrum-field-top-to-alert-icon-large", + "--spectrum-field-top-to-alert-icon-medium", + "--spectrum-field-top-to-alert-icon-small", + "--spectrum-field-top-to-progress-circle-extra-large", + "--spectrum-field-top-to-progress-circle-large", + "--spectrum-field-top-to-progress-circle-medium", + "--spectrum-field-top-to-progress-circle-small", + "--spectrum-field-width", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-400", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-line-height-100", + "--spectrum-negative-border-color-default", + "--spectrum-negative-border-color-focus", + "--spectrum-negative-border-color-focus-hover", + "--spectrum-negative-border-color-hover", + "--spectrum-negative-border-color-key-focus", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-75" + ], + "system": [ + "--system-spectrum-combobox-border-color-default", + "--system-spectrum-combobox-border-color-focus", + "--system-spectrum-combobox-border-color-focus-hover", + "--system-spectrum-combobox-border-color-hover", + "--system-spectrum-combobox-border-color-key-focus" + ], + "a11y": [ + "--highcontrast-combobox-border-color-highlight", + "--highcontrast-combobox-border-color-invalid" + ] +} diff --git a/components/combobox/package.json b/components/combobox/package.json new file mode 100644 index 0000000000..c02a7bd534 --- /dev/null +++ b/components/combobox/package.json @@ -0,0 +1,54 @@ +{ + "name": "@spectrum-css/combobox", + "version": "3.1.2", + "description": "The Spectrum CSS combobox component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/combobox" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/menu": ">=7", + "@spectrum-css/pickerbutton": ">=5", + "@spectrum-css/popover": ">=7", + "@spectrum-css/progresscircle": ">=3", + "@spectrum-css/textfield": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/progresscircle": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/menu": "workspace:^", + "@spectrum-css/pickerbutton": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/progresscircle": "workspace:^", + "@spectrum-css/textfield": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/combobox/template.js b/components/combobox/template.js new file mode 100644 index 0000000000..7b835db15e --- /dev/null +++ b/components/combobox/template.js @@ -0,0 +1,141 @@ +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { Template as Menu } from "@spectrum-css/menu/stories/template.js"; +import { Template as PickerButton } from "@spectrum-css/pickerbutton/stories/template.js"; +import { Template as Popover } from "@spectrum-css/popover/stories/template.js"; +import { Template as TextField } from "@spectrum-css/textfield/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Combobox", + id, + customClasses = [], + size = "m", + isOpen = true, + isInvalid = false, + isQuiet = false, + isDisabled = false, + showFieldLabel = false, + fieldLabelText = "Select location", + fieldLabelPosition = "top", + isFocused = false, + isKeyboardFocused = false, + isLoading = false, + selectedDay, +} = {}, context = {}) => { + const { globals = {}, updateArgs } = context; + const lang = globals.lang ?? "en-US"; + + // If selectedDay is a string, convert it to a Date object + if (typeof selectedDay === "string" && selectedDay.length > 0) { + selectedDay = new Date(selectedDay).toLocaleDateString({ language: lang }); + } + + return html` + ${when(showFieldLabel, () => + FieldLabel({ + size, + label: fieldLabelText, + customStyles: { "max-inline-size": "100px"}, + alignment: fieldLabelPosition === "left" && "left", + }, context))} +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + > + ${[ + TextField({ + size, + isQuiet, + isDisabled, + isInvalid, + isFocused, + isKeyboardFocused, + customClasses: [ + `${rootClass}-textfield`, + ...(isLoading ? ["is-loading"] : []), + ], + customInputClasses: [`${rootClass}-input`], + isLoading, + customProgressCircleClasses: ["spectrum-Combobox-progress-circle"], + placeholder: "Type here this text should truncate", + name: "field", + value: selectedDay + ? new Date(selectedDay).toLocaleDateString(lang) + : undefined, + onclick: function () { + if (!isOpen) updateArgs({ isOpen: true }); + }, + }, context), + PickerButton({ + customClasses: [ + `${rootClass}-button`, + ... isInvalid ? ["is-invalid"] : [], + ], + size, + iconType: "ui", + iconName: "ChevronDown", + isQuiet, + isOpen, + isFocused, + isKeyboardFocused, + isDisabled, + position: "right", + onclick: function () { + updateArgs({ isOpen: !isOpen }); + }, + }, context), + Popover({ + isOpen: isOpen && !isDisabled, + withTip: false, + position: "bottom", + isQuiet, + customStyles: isOpen + ? { + position: "absolute", + top: "100%", + left: "0", + width: "100%", + } + : {}, + content: [ + Menu({ + size, + items: [ + { + label: "Ballard", + }, + { + label: "Fremont", + }, + { + label: "Greenwood", + }, + { + label: "United States of America", + isDisabled: true, + }, + ], + }, context), + ], + }, context), + ]} +
    + `; +}; diff --git a/components/combobox/themes/express.css b/components/combobox/themes/express.css new file mode 100644 index 0000000000..2771cb90cf --- /dev/null +++ b/components/combobox/themes/express.css @@ -0,0 +1,21 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-400); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-900); +} +/*# sourceMappingURL=components/combobox/themes/express.css.map */ diff --git a/components/combobox/themes/spectrum.css b/components/combobox/themes/spectrum.css new file mode 100644 index 0000000000..1c556ed393 --- /dev/null +++ b/components/combobox/themes/spectrum.css @@ -0,0 +1,21 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-combobox-border-color-default: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-focus: var(--spectrum-gray-500); + --system-spectrum-combobox-border-color-focus-hover: var(--spectrum-gray-600); + --system-spectrum-combobox-border-color-key-focus: var(--spectrum-gray-600); +} +/*# sourceMappingURL=components/combobox/themes/spectrum.css.map */ diff --git a/components/commons/package.json b/components/commons/package.json new file mode 100644 index 0000000000..2e480bf4bb --- /dev/null +++ b/components/commons/package.json @@ -0,0 +1,26 @@ +{ + "name": "@spectrum-css/commons", + "version": "10.1.0", + "description": "Common mixins for Spectrum CSS components", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/commons" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "index.css", + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/components/contextualhelp/index-base.css b/components/contextualhelp/index-base.css new file mode 100644 index 0000000000..68e9b62aa9 --- /dev/null +++ b/components/contextualhelp/index-base.css @@ -0,0 +1,56 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ContextualHelp { + --spectrum-contextual-help-padding: var(--spectrum-spacing-400); + --spectrum-contextual-help-content-spacing: var(--spectrum-spacing-100); + --spectrum-contextual-help-link-spacing: var(--spectrum-spacing-300); + --spectrum-contextual-help-heading-size: var(--spectrum-contextual-help-title-size); + --spectrum-contextual-help-heading-color: var(--spectrum-heading-color); + --spectrum-contextual-help-body-color: var(--spectrum-body-color); +} +.spectrum--large .spectrum-ContextualHelp { + --spectrum-contextual-help-content-spacing: var(--spectrum-spacing-200); +} +.spectrum-ContextualHelp { + position: relative; + min-inline-size: var(--mod-spectrum-contextual-help-minimum-width, var(--spectrum-contextual-help-minimum-width)); +} +.spectrum-ContextualHelp-button { + display: flex; +} +.spectrum-ContextualHelp-popover { + padding-block: var(--mod-spectrum-contextual-help-padding, var(--spectrum-contextual-help-padding)); + padding-inline: var(--mod-spectrum-contextual-help-padding, var(--spectrum-contextual-help-padding)); + font-size: var(--mod-spectrum-contextual-help-body-size, var(--spectrum-contextual-help-body-size)); + color: var(--highcontrast-contextual-help-body-color, var(--mod-contextual-help-body-color, var(--spectrum-contextual-help-body-color))); +} +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-body, +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading { + margin: 0; +} +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading { + margin-block-end: var(--mod-spectrum-contextual-help-content-spacing, var(--spectrum-contextual-help-content-spacing)); + font-size: var(--mod-spectrum-contextual-help-heading-size, var(--spectrum-contextual-help-heading-size)); + color: var(--highcontrast-contextual-help-heading-color, var(--mod-contextual-help-heading-color, var(--spectrum-contextual-help-heading-color))); +} +.spectrum-ContextualHelp-link { + margin-block-start: var(--mod-spectrum-contextual-help-link-spacing, var(--spectrum-contextual-help-link-spacing)); +} +@media (forced-colors: active) { + .spectrum-ContextualHelp { + --highcontrast-contextual-help-heading-color: CanvasText; + --highcontrast-contextual-help-body-color: CanvasText; + } +} +/*# sourceMappingURL=components/contextualhelp/index.css.map */ diff --git a/components/contextualhelp/index-vars.css b/components/contextualhelp/index-vars.css new file mode 100644 index 0000000000..68e9b62aa9 --- /dev/null +++ b/components/contextualhelp/index-vars.css @@ -0,0 +1,56 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ContextualHelp { + --spectrum-contextual-help-padding: var(--spectrum-spacing-400); + --spectrum-contextual-help-content-spacing: var(--spectrum-spacing-100); + --spectrum-contextual-help-link-spacing: var(--spectrum-spacing-300); + --spectrum-contextual-help-heading-size: var(--spectrum-contextual-help-title-size); + --spectrum-contextual-help-heading-color: var(--spectrum-heading-color); + --spectrum-contextual-help-body-color: var(--spectrum-body-color); +} +.spectrum--large .spectrum-ContextualHelp { + --spectrum-contextual-help-content-spacing: var(--spectrum-spacing-200); +} +.spectrum-ContextualHelp { + position: relative; + min-inline-size: var(--mod-spectrum-contextual-help-minimum-width, var(--spectrum-contextual-help-minimum-width)); +} +.spectrum-ContextualHelp-button { + display: flex; +} +.spectrum-ContextualHelp-popover { + padding-block: var(--mod-spectrum-contextual-help-padding, var(--spectrum-contextual-help-padding)); + padding-inline: var(--mod-spectrum-contextual-help-padding, var(--spectrum-contextual-help-padding)); + font-size: var(--mod-spectrum-contextual-help-body-size, var(--spectrum-contextual-help-body-size)); + color: var(--highcontrast-contextual-help-body-color, var(--mod-contextual-help-body-color, var(--spectrum-contextual-help-body-color))); +} +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-body, +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading { + margin: 0; +} +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading { + margin-block-end: var(--mod-spectrum-contextual-help-content-spacing, var(--spectrum-contextual-help-content-spacing)); + font-size: var(--mod-spectrum-contextual-help-heading-size, var(--spectrum-contextual-help-heading-size)); + color: var(--highcontrast-contextual-help-heading-color, var(--mod-contextual-help-heading-color, var(--spectrum-contextual-help-heading-color))); +} +.spectrum-ContextualHelp-link { + margin-block-start: var(--mod-spectrum-contextual-help-link-spacing, var(--spectrum-contextual-help-link-spacing)); +} +@media (forced-colors: active) { + .spectrum-ContextualHelp { + --highcontrast-contextual-help-heading-color: CanvasText; + --highcontrast-contextual-help-body-color: CanvasText; + } +} +/*# sourceMappingURL=components/contextualhelp/index.css.map */ diff --git a/components/contextualhelp/index.css b/components/contextualhelp/index.css new file mode 100644 index 0000000000..68e9b62aa9 --- /dev/null +++ b/components/contextualhelp/index.css @@ -0,0 +1,56 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ContextualHelp { + --spectrum-contextual-help-padding: var(--spectrum-spacing-400); + --spectrum-contextual-help-content-spacing: var(--spectrum-spacing-100); + --spectrum-contextual-help-link-spacing: var(--spectrum-spacing-300); + --spectrum-contextual-help-heading-size: var(--spectrum-contextual-help-title-size); + --spectrum-contextual-help-heading-color: var(--spectrum-heading-color); + --spectrum-contextual-help-body-color: var(--spectrum-body-color); +} +.spectrum--large .spectrum-ContextualHelp { + --spectrum-contextual-help-content-spacing: var(--spectrum-spacing-200); +} +.spectrum-ContextualHelp { + position: relative; + min-inline-size: var(--mod-spectrum-contextual-help-minimum-width, var(--spectrum-contextual-help-minimum-width)); +} +.spectrum-ContextualHelp-button { + display: flex; +} +.spectrum-ContextualHelp-popover { + padding-block: var(--mod-spectrum-contextual-help-padding, var(--spectrum-contextual-help-padding)); + padding-inline: var(--mod-spectrum-contextual-help-padding, var(--spectrum-contextual-help-padding)); + font-size: var(--mod-spectrum-contextual-help-body-size, var(--spectrum-contextual-help-body-size)); + color: var(--highcontrast-contextual-help-body-color, var(--mod-contextual-help-body-color, var(--spectrum-contextual-help-body-color))); +} +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-body, +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading { + margin: 0; +} +.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading { + margin-block-end: var(--mod-spectrum-contextual-help-content-spacing, var(--spectrum-contextual-help-content-spacing)); + font-size: var(--mod-spectrum-contextual-help-heading-size, var(--spectrum-contextual-help-heading-size)); + color: var(--highcontrast-contextual-help-heading-color, var(--mod-contextual-help-heading-color, var(--spectrum-contextual-help-heading-color))); +} +.spectrum-ContextualHelp-link { + margin-block-start: var(--mod-spectrum-contextual-help-link-spacing, var(--spectrum-contextual-help-link-spacing)); +} +@media (forced-colors: active) { + .spectrum-ContextualHelp { + --highcontrast-contextual-help-heading-color: CanvasText; + --highcontrast-contextual-help-body-color: CanvasText; + } +} +/*# sourceMappingURL=components/contextualhelp/index.css.map */ diff --git a/components/contextualhelp/metadata.json b/components/contextualhelp/metadata.json new file mode 100644 index 0000000000..c5568fa837 --- /dev/null +++ b/components/contextualhelp/metadata.json @@ -0,0 +1,43 @@ +{ + "selectors": [ + ".spectrum--large .spectrum-ContextualHelp", + ".spectrum-ContextualHelp", + ".spectrum-ContextualHelp-button", + ".spectrum-ContextualHelp-link", + ".spectrum-ContextualHelp-popover", + ".spectrum-ContextualHelp-popover .spectrum-ContextualHelp-body,\n.spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading", + ".spectrum-ContextualHelp-popover .spectrum-ContextualHelp-heading" + ], + "mods": [ + "--mod-contextual-help-body-color", + "--mod-contextual-help-heading-color", + "--mod-spectrum-contextual-help-body-size", + "--mod-spectrum-contextual-help-content-spacing", + "--mod-spectrum-contextual-help-heading-size", + "--mod-spectrum-contextual-help-link-spacing", + "--mod-spectrum-contextual-help-minimum-width", + "--mod-spectrum-contextual-help-padding" + ], + "spectrum": [ + "--spectrum-body-color", + "--spectrum-contextual-help-body-color", + "--spectrum-contextual-help-body-size", + "--spectrum-contextual-help-content-spacing", + "--spectrum-contextual-help-heading-color", + "--spectrum-contextual-help-heading-size", + "--spectrum-contextual-help-link-spacing", + "--spectrum-contextual-help-minimum-width", + "--spectrum-contextual-help-padding", + "--spectrum-contextual-help-title-size", + "--spectrum-heading-color", + "--spectrum-spacing-100", + "--spectrum-spacing-200", + "--spectrum-spacing-300", + "--spectrum-spacing-400" + ], + "system": [], + "a11y": [ + "--highcontrast-contextual-help-body-color", + "--highcontrast-contextual-help-heading-color" + ] +} diff --git a/components/contextualhelp/package.json b/components/contextualhelp/package.json new file mode 100644 index 0000000000..3df96ee9c3 --- /dev/null +++ b/components/contextualhelp/package.json @@ -0,0 +1,50 @@ +{ + "name": "@spectrum-css/contextualhelp", + "version": "3.1.1", + "description": "The Spectrum CSS contextualhelp component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/contextualhelp" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/link": ">=5", + "@spectrum-css/popover": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/link": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/link": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/contextualhelp/template.js b/components/contextualhelp/template.js new file mode 100644 index 0000000000..1d0f478bd6 --- /dev/null +++ b/components/contextualhelp/template.js @@ -0,0 +1,59 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Template as Link } from "@spectrum-css/link/stories/template.js"; +import { Template as Popover } from "@spectrum-css/popover/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ContextualHelp", + id, + iconName, + title, + body, + link, + popoverPlacement, + customStyles = {}, + customClasses = [], +}, context) => html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + > + ${popoverPlacement.includes("top") + ? html`
    ` + : ""} + ${ActionButton({ + size: "xs", + iconName, + customClasses: [`${rootClass}-button`], + }, context)} + ${Popover({ + isOpen: true, + content: [ + title ? html`

    ${title}

    ` : "", + body ? html`

    ${body}

    ` : "", + link + ? Link({ + text: link.text, + url: link.url, + customClasses: [`${rootClass}-link`], + }) + : "", + ], + position: popoverPlacement, + customClasses: [`${rootClass}-popover`], + customStyles: { top: "25px" }, + }, context)} +
    +`; diff --git a/components/datepicker/index-base.css b/components/datepicker/index-base.css new file mode 100644 index 0000000000..d1010cd30d --- /dev/null +++ b/components/datepicker/index-base.css @@ -0,0 +1,228 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-DatePicker { + --spectrum-datepicker-border-radius: var(--spectrum-corner-radius-100); + --spectrum-datepicker-border-radius-quiet: 0; + --spectrum-datepicker-border-width: var(--spectrum-border-width-100); + --spectrum-datepicker-min-width: var(--spectrum-field-width); + --spectrum-datepicker-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-datepicker-pickerbutton-border-color: var(--spectrum-gray-500); + --spectrum-datepicker-pickerbutton-border-color-invalid: var(--spectrum-negative-border-color-default); + --spectrum-datepicker-pickerbutton-width: calc(var(--spectrum-field-edge-to-disclosure-icon-100) * 2 + var(--spectrum-workflow-icon-size-100)); + --spectrum-datepicker-pickerbutton-width-quiet: calc(var(--spectrum-datepicker-pickerbutton-width) - var(--spectrum-datepicker-quiet-button-offset)); + --spectrum-datepicker-quiet-button-offset: var(--spectrum-text-to-visual-100); + --spectrum-datepicker-icon-to-button: var(--spectrum-text-to-visual-100); + --spectrum-datepicker-icon-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-datepicker-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-datepicker-focus-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-datepicker-focus-animation: var(--spectrum-animation-duration-100); + --spectrum-datepicker-focus-ring-width: var(--spectrum-border-width-100); + --spectrum-datepicker-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-datepicker-focus-line-gap: var(--spectrum-spacing-75); + --spectrum-datepicker-invalid-quiet-color: var(--spectrum-negative-border-color-default); + --spectrum-datepicker-quiet-border-color-hover: var(--spectrum-gray-500); + --spectrum-datepicker-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-datepicker-dash-font-size: var(--spectrum-font-size-100); + --spectrum-datepicker-dash-color: var(--spectrum-neutral-content-color-default); + --spectrum-datepicker-dash-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-datepicker-range-dash-marin-inline-start: calc(var(--spectrum-datepicker-dash-font-size) * -0.5); + --spectrum-datepicker-range-dash-padding-top: 0; + --spectrum-datepicker-input-width-base: calc(var(--spectrum-datepicker-range-input-width-first) + var(--spectrum-datepicker-icon-size)); + --spectrum-datepicker-input-width: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-input-width-quiet: calc(var(--spectrum-datepicker-range-input-width-quiet-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-range-input-width-first: calc(var(--spectrum-datepicker-initial-width) - var(--spectrum-datepicker-generic-padding) * 2); + --spectrum-datepicker-range-input-width-quiet-first: calc(var(--spectrum-datepicker-width-quiet-first) + var(--spectrum-datepicker-width-quiet-second)); + --spectrum-datepicker-datetime-input-width-first: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-datetime-width-first)); + --spectrum-datepicker-datetime-input-width: calc(var(--spectrum-datepicker-datetime-input-width-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-datetime-quiet-input-width-first: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-input-datetime-width)); + --spectrum-datepicker-datetime-quiet-input-width: calc(var(--spectrum-datepicker-datetime-quiet-input-width-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-padding-inline-end: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) - var(--spectrum-datepicker-border-width) * 2); + --spectrum-datepicker-padding-inline-end-quiet: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) - var(--spectrum-datepicker-quiet-button-offset)); + --spectrum-datepicker-padding-inline-end-invalid: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) + var(--spectrum-datepicker-icon-to-button) + var(--spectrum-datepicker-icon-size) - var(--spectrum-datepicker-border-width) * 2); + --spectrum-datepicker-padding-inline-end-invalid-quiet: calc(var(--spectrum-datepicker-pickerbutton-width-quiet) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-icon-to-text)); + position: relative; + display: inline-flex; + flex-direction: row; + flex-wrap: nowrap; + min-inline-size: var(--mod-datepicker-min-width, var(--spectrum-datepicker-min-width)); + border-radius: var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)); +} +.spectrum-DatePicker.is-disabled .spectrum-DatePicker-rangeDash { + color: var(--highcontrast-datepicker-dash-color-disabled, var(--mod-datepicker-dash-color-disabled, var(--spectrum-datepicker-dash-color-disabled))); +} +.spectrum-DatePicker.is-invalid { + --mod-textfield-icon-spacing-inline-end-invalid: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-datepicker-invalid-icon-to-button)); + --mod-textfield-icon-spacing-inline-end-quiet-invalid: calc(var(--spectrum-datepicker-pickerbutton-width-quiet) + var(--spectrum-datepicker-invalid-icon-to-button-quiet)); +} +.spectrum-DatePicker:not(.spectrum-DatePicker--quiet, .is-disabled) { + --mod-picker-button-border-color: var(--highcontrast-datepicker-pickerbutton-border-color, var(--mod-datepicker-pickerbutton-border-color, var(--spectrum-datepicker-pickerbutton-border-color))); +} +.spectrum-DatePicker.is-invalid:not(.spectrum-DatePicker--quiet, .is-disabled) { + --mod-picker-button-border-color: var(--highcontrast-datepicker-pickerbutton-border-color, var(--mod-datepicker-pickerbutton-border-color-invalid, var(--spectrum-datepicker-pickerbutton-border-color-invalid))); +} +.spectrum-DatePicker-input, +.spectrum-DatePicker-input.spectrum-DatePicker-endField { + padding-inline-end: var(--mod-datepicker-padding-inline, var(--spectrum-datepicker-padding-inline-end)); +} +.is-invalid .spectrum-DatePicker-input { + padding-inline-end: var(--mod-datepicker-padding-inline-end-invalid, var(--spectrum-datepicker-padding-inline-end-invalid)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-input { + padding-inline-end: var(--mod-datepicker-padding-inline-end-quiet, var(--spectrum-datepicker-padding-inline-end-quiet)); +} +.spectrum-DatePicker--quiet .is-invalid .spectrum-DatePicker-input:not(.spectrum-DatePicker-startField) { + padding-inline-end: var(--mod-datepicker-padding-inline-end-invalid-quiet, var(--spectrum-datepicker-padding-inline-end-invalid-quiet)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-input.spectrum-DatePicker-endField { + padding-inline-end: var(--mod-datepicker-padding-inline-end-quiet, var(--spectrum-datepicker-padding-inline-end-quiet)); +} +.spectrum-DatePicker-button { + position: absolute; + inset-inline-end: 0; +} +.spectrum-DatePicker--quiet { + border-radius: var(--mod-datepicker-border-radius-quiet, var(--spectrum-datepicker-border-radius-quiet)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button { + inline-size: auto; + inset-inline-end: calc(var(--mod-datepicker-quiet-button-offset, var(--spectrum-datepicker-quiet-button-offset)) * -1); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled { + border-color: var(--mod-datepicker-border-color-disabled, var(--spectrum-datepicker-border-color-disabled)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:not(.is-open) .spectrum-PickerButton-fill { + border-color: transparent; +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:not(:disabled, .is-open) .spectrum-PickerButton-fill { + background-color: initial; +} +@media (hover: hover) { + .spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:hover { + border-color: var(--mod-datepicker-border-color-disabled, var(--spectrum-datepicker-border-color-disabled)); + } + .spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-button, + .spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-input { + border-color: var(--mod-datepicker-quiet-border-color-hover, var(--spectrum-datepicker-quiet-border-color-hover)); + } +} +.spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-button, +.spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-input { + border-color: var(--highcontrast-datepicker-invalid-quiet-color, var(--mod-datepicker-invalid-quiet-color, var(--spectrum-datepicker-invalid-quiet-color))); +} +.spectrum-DatePicker--range { + border-radius: var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)); +} +.spectrum-DatePicker--range:after { + pointer-events: none; + content: ""; + position: absolute; + inset: 0; + margin: calc(var(--mod-datepicker-focus-ring-gap, var(--spectrum-datepicker-focus-ring-gap)) * -1); + border-radius: calc(var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)) + var(--mod-datepicker-focus-ring-gap, var(--spectrum-datepicker-focus-ring-gap))); + border-color: transparent; + transition: + box-shadow var(--mod-datepicker-focus-animation, var(--spectrum-datepicker-focus-animation)) ease-in-out, + border-color var(--mod-datepicker-focus-animation, var(--spectrum-datepicker-focus-animation)) ease-in-out; +} +.spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet):after { + box-shadow: 0 0 0 var(--mod-datepicker-focus-ring-width, var(--spectrum-datepicker-focus-ring-width)) var(--highcontrast-datepicker-focus-ring-color, var(--mod-datepicker-focus-ring-color, var(--spectrum-datepicker-focus-ring-color))); +} +.spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet) .spectrum-DatePicker-textfield:after { + display: none; +} +.spectrum-DatePicker--range.is-keyboardFocused.spectrum-DatePicker--quiet:after { + margin: 0; + box-shadow: none; + border-radius: 0; + border-block-end: var(--mod-datepicker-focus-thickness, var(--spectrum-datepicker-focus-thickness)) solid var(--highcontrast-datepicker-focus-ring-color, var(--mod-datepicker-focus-ring-color, var(--spectrum-datepicker-focus-ring-color))); + inset-block-end: calc(var(--mod-datepicker-focus-line-gap, var(--spectrum-datepicker-focus-line-gap)) * -1); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet { + border-radius: var(--mod-datepicker-border-radius-quiet, var(--spectrum-datepicker-border-radius-quiet)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield { + min-inline-size: 0; + inline-size: var(--mod-datepicker-input-width-quiet, var(--spectrum-datepicker-input-width-quiet)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-range-input-width-quiet-first, var(--spectrum-datepicker-range-input-width-quiet-first)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield { + inline-size: var(--mod-datepicker-datetime-input-width, var(--spectrum-datepicker-datetime-input-width)); + min-inline-size: 0; +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-datetime-input-width-first, var(--spectrum-datepicker-datetime-input-width-first)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield { + inline-size: var(--mod-datepicker-datetime-quiet-input-width, var(--spectrum-datepicker-datetime-quiet-input-width)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-datetime-quiet-input-width-first, var(--spectrum-datepicker-datetime-quiet-input-width-first)); +} +.spectrum-DatePicker--range .spectrum-DatePicker-textfield { + flex: initial; + min-inline-size: 0; + inline-size: var(--mod-datepicker-input-width, var(--spectrum-datepicker-input-width)); +} +.spectrum-DatePicker--range .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-range-input-width-first, var(--spectrum-datepicker-range-input-width-first)); +} +.spectrum-DatePicker-input { + flex: 1; + inline-size: 100%; +} +.spectrum-DatePicker-input.spectrum-DatePicker-startField { + border-inline-end: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; + padding-inline-end: var(--mod-datepicker-generic-padding, var(--spectrum-datepicker-generic-padding)); +} +.spectrum-DatePicker-input.spectrum-DatePicker-endField { + border-inline-start: 0; + border-start-start-radius: 0; + border-end-start-radius: 0; + padding-inline-start: var(--mod-datepicker-generic-padding, var(--spectrum-datepicker-generic-padding)); +} +.spectrum-DatePicker-rangeDash { + color: var(--highcontrast-datepicker-dash-color, var(--mod-datepicker-dash-color, var(--spectrum-datepicker-dash-color))); + line-height: var(--mod-datepicker-dash-line-height, var(--spectrum-datepicker-dash-line-height)); + padding-block-start: var(--mod-datepicker-range-dash-padding-top, var(--spectrum-datepicker-range-dash-padding-top)); + flex: initial; + inline-size: 0; + z-index: 1; +} +.spectrum-DatePicker-rangeDash:before { + content: "–"; + display: inline-block; + margin-block: 0; + margin-inline: var(--mod-datepicker-range-dash-margin-left, var(--spectrum-datepicker-range-dash-marin-inline-start)); + overflow: hidden; + text-align: center; + vertical-align: middle; + inline-size: var(--mod-datepicker-dash-font-size, var(--spectrum-datepicker-dash-font-size)); +} +@media (forced-colors: active) { + .spectrum-DatePicker { + --highcontrast-datepicker-dash-color: CanvasText; + --highcontrast-datepicker-dash-color-disabled: GrayText; + --highcontrast-datepicker-focus-ring-color: Highlight; + --highcontrast-datepicker-pickerbutton-border-color: Highlight; + --highcontrast-datepicker-invalid-quiet-color: Highlight; + } +} +.spectrum-DatePicker { + --spectrum-datepicker-initial-height: var(--system-spectrum-datepicker-initial-height); +} +/*# sourceMappingURL=components/datepicker/index.css.map */ diff --git a/components/datepicker/index-theme.css b/components/datepicker/index-theme.css new file mode 100644 index 0000000000..3fe00620c5 --- /dev/null +++ b/components/datepicker/index-theme.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-100); +} +.spectrum--express { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-75); +} +/*# sourceMappingURL=components/datepicker/themes/express.css.map */ diff --git a/components/datepicker/index-vars.css b/components/datepicker/index-vars.css new file mode 100644 index 0000000000..28e285ebf2 --- /dev/null +++ b/components/datepicker/index-vars.css @@ -0,0 +1,234 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-100); +} +.spectrum--express { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-75); +} +.spectrum-DatePicker { + --spectrum-datepicker-border-radius: var(--spectrum-corner-radius-100); + --spectrum-datepicker-border-radius-quiet: 0; + --spectrum-datepicker-border-width: var(--spectrum-border-width-100); + --spectrum-datepicker-min-width: var(--spectrum-field-width); + --spectrum-datepicker-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-datepicker-pickerbutton-border-color: var(--spectrum-gray-500); + --spectrum-datepicker-pickerbutton-border-color-invalid: var(--spectrum-negative-border-color-default); + --spectrum-datepicker-pickerbutton-width: calc(var(--spectrum-field-edge-to-disclosure-icon-100) * 2 + var(--spectrum-workflow-icon-size-100)); + --spectrum-datepicker-pickerbutton-width-quiet: calc(var(--spectrum-datepicker-pickerbutton-width) - var(--spectrum-datepicker-quiet-button-offset)); + --spectrum-datepicker-quiet-button-offset: var(--spectrum-text-to-visual-100); + --spectrum-datepicker-icon-to-button: var(--spectrum-text-to-visual-100); + --spectrum-datepicker-icon-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-datepicker-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-datepicker-focus-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-datepicker-focus-animation: var(--spectrum-animation-duration-100); + --spectrum-datepicker-focus-ring-width: var(--spectrum-border-width-100); + --spectrum-datepicker-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-datepicker-focus-line-gap: var(--spectrum-spacing-75); + --spectrum-datepicker-invalid-quiet-color: var(--spectrum-negative-border-color-default); + --spectrum-datepicker-quiet-border-color-hover: var(--spectrum-gray-500); + --spectrum-datepicker-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-datepicker-dash-font-size: var(--spectrum-font-size-100); + --spectrum-datepicker-dash-color: var(--spectrum-neutral-content-color-default); + --spectrum-datepicker-dash-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-datepicker-range-dash-marin-inline-start: calc(var(--spectrum-datepicker-dash-font-size) * -0.5); + --spectrum-datepicker-range-dash-padding-top: 0; + --spectrum-datepicker-input-width-base: calc(var(--spectrum-datepicker-range-input-width-first) + var(--spectrum-datepicker-icon-size)); + --spectrum-datepicker-input-width: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-input-width-quiet: calc(var(--spectrum-datepicker-range-input-width-quiet-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-range-input-width-first: calc(var(--spectrum-datepicker-initial-width) - var(--spectrum-datepicker-generic-padding) * 2); + --spectrum-datepicker-range-input-width-quiet-first: calc(var(--spectrum-datepicker-width-quiet-first) + var(--spectrum-datepicker-width-quiet-second)); + --spectrum-datepicker-datetime-input-width-first: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-datetime-width-first)); + --spectrum-datepicker-datetime-input-width: calc(var(--spectrum-datepicker-datetime-input-width-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-datetime-quiet-input-width-first: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-input-datetime-width)); + --spectrum-datepicker-datetime-quiet-input-width: calc(var(--spectrum-datepicker-datetime-quiet-input-width-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-padding-inline-end: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) - var(--spectrum-datepicker-border-width) * 2); + --spectrum-datepicker-padding-inline-end-quiet: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) - var(--spectrum-datepicker-quiet-button-offset)); + --spectrum-datepicker-padding-inline-end-invalid: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) + var(--spectrum-datepicker-icon-to-button) + var(--spectrum-datepicker-icon-size) - var(--spectrum-datepicker-border-width) * 2); + --spectrum-datepicker-padding-inline-end-invalid-quiet: calc(var(--spectrum-datepicker-pickerbutton-width-quiet) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-icon-to-text)); + position: relative; + display: inline-flex; + flex-direction: row; + flex-wrap: nowrap; + min-inline-size: var(--mod-datepicker-min-width, var(--spectrum-datepicker-min-width)); + border-radius: var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)); +} +.spectrum-DatePicker.is-disabled .spectrum-DatePicker-rangeDash { + color: var(--highcontrast-datepicker-dash-color-disabled, var(--mod-datepicker-dash-color-disabled, var(--spectrum-datepicker-dash-color-disabled))); +} +.spectrum-DatePicker.is-invalid { + --mod-textfield-icon-spacing-inline-end-invalid: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-datepicker-invalid-icon-to-button)); + --mod-textfield-icon-spacing-inline-end-quiet-invalid: calc(var(--spectrum-datepicker-pickerbutton-width-quiet) + var(--spectrum-datepicker-invalid-icon-to-button-quiet)); +} +.spectrum-DatePicker:not(.spectrum-DatePicker--quiet, .is-disabled) { + --mod-picker-button-border-color: var(--highcontrast-datepicker-pickerbutton-border-color, var(--mod-datepicker-pickerbutton-border-color, var(--spectrum-datepicker-pickerbutton-border-color))); +} +.spectrum-DatePicker.is-invalid:not(.spectrum-DatePicker--quiet, .is-disabled) { + --mod-picker-button-border-color: var(--highcontrast-datepicker-pickerbutton-border-color, var(--mod-datepicker-pickerbutton-border-color-invalid, var(--spectrum-datepicker-pickerbutton-border-color-invalid))); +} +.spectrum-DatePicker-input, +.spectrum-DatePicker-input.spectrum-DatePicker-endField { + padding-inline-end: var(--mod-datepicker-padding-inline, var(--spectrum-datepicker-padding-inline-end)); +} +.is-invalid .spectrum-DatePicker-input { + padding-inline-end: var(--mod-datepicker-padding-inline-end-invalid, var(--spectrum-datepicker-padding-inline-end-invalid)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-input { + padding-inline-end: var(--mod-datepicker-padding-inline-end-quiet, var(--spectrum-datepicker-padding-inline-end-quiet)); +} +.spectrum-DatePicker--quiet .is-invalid .spectrum-DatePicker-input:not(.spectrum-DatePicker-startField) { + padding-inline-end: var(--mod-datepicker-padding-inline-end-invalid-quiet, var(--spectrum-datepicker-padding-inline-end-invalid-quiet)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-input.spectrum-DatePicker-endField { + padding-inline-end: var(--mod-datepicker-padding-inline-end-quiet, var(--spectrum-datepicker-padding-inline-end-quiet)); +} +.spectrum-DatePicker-button { + position: absolute; + inset-inline-end: 0; +} +.spectrum-DatePicker--quiet { + border-radius: var(--mod-datepicker-border-radius-quiet, var(--spectrum-datepicker-border-radius-quiet)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button { + inline-size: auto; + inset-inline-end: calc(var(--mod-datepicker-quiet-button-offset, var(--spectrum-datepicker-quiet-button-offset)) * -1); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled { + border-color: var(--mod-datepicker-border-color-disabled, var(--spectrum-datepicker-border-color-disabled)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:not(.is-open) .spectrum-PickerButton-fill { + border-color: transparent; +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:not(:disabled, .is-open) .spectrum-PickerButton-fill { + background-color: initial; +} +@media (hover: hover) { + .spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:hover { + border-color: var(--mod-datepicker-border-color-disabled, var(--spectrum-datepicker-border-color-disabled)); + } + .spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-button, + .spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-input { + border-color: var(--mod-datepicker-quiet-border-color-hover, var(--spectrum-datepicker-quiet-border-color-hover)); + } +} +.spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-button, +.spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-input { + border-color: var(--highcontrast-datepicker-invalid-quiet-color, var(--mod-datepicker-invalid-quiet-color, var(--spectrum-datepicker-invalid-quiet-color))); +} +.spectrum-DatePicker--range { + border-radius: var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)); +} +.spectrum-DatePicker--range:after { + pointer-events: none; + content: ""; + position: absolute; + inset: 0; + margin: calc(var(--mod-datepicker-focus-ring-gap, var(--spectrum-datepicker-focus-ring-gap)) * -1); + border-radius: calc(var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)) + var(--mod-datepicker-focus-ring-gap, var(--spectrum-datepicker-focus-ring-gap))); + border-color: transparent; + transition: + box-shadow var(--mod-datepicker-focus-animation, var(--spectrum-datepicker-focus-animation)) ease-in-out, + border-color var(--mod-datepicker-focus-animation, var(--spectrum-datepicker-focus-animation)) ease-in-out; +} +.spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet):after { + box-shadow: 0 0 0 var(--mod-datepicker-focus-ring-width, var(--spectrum-datepicker-focus-ring-width)) var(--highcontrast-datepicker-focus-ring-color, var(--mod-datepicker-focus-ring-color, var(--spectrum-datepicker-focus-ring-color))); +} +.spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet) .spectrum-DatePicker-textfield:after { + display: none; +} +.spectrum-DatePicker--range.is-keyboardFocused.spectrum-DatePicker--quiet:after { + margin: 0; + box-shadow: none; + border-radius: 0; + border-block-end: var(--mod-datepicker-focus-thickness, var(--spectrum-datepicker-focus-thickness)) solid var(--highcontrast-datepicker-focus-ring-color, var(--mod-datepicker-focus-ring-color, var(--spectrum-datepicker-focus-ring-color))); + inset-block-end: calc(var(--mod-datepicker-focus-line-gap, var(--spectrum-datepicker-focus-line-gap)) * -1); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet { + border-radius: var(--mod-datepicker-border-radius-quiet, var(--spectrum-datepicker-border-radius-quiet)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield { + min-inline-size: 0; + inline-size: var(--mod-datepicker-input-width-quiet, var(--spectrum-datepicker-input-width-quiet)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-range-input-width-quiet-first, var(--spectrum-datepicker-range-input-width-quiet-first)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield { + inline-size: var(--mod-datepicker-datetime-input-width, var(--spectrum-datepicker-datetime-input-width)); + min-inline-size: 0; +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-datetime-input-width-first, var(--spectrum-datepicker-datetime-input-width-first)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield { + inline-size: var(--mod-datepicker-datetime-quiet-input-width, var(--spectrum-datepicker-datetime-quiet-input-width)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-datetime-quiet-input-width-first, var(--spectrum-datepicker-datetime-quiet-input-width-first)); +} +.spectrum-DatePicker--range .spectrum-DatePicker-textfield { + flex: initial; + min-inline-size: 0; + inline-size: var(--mod-datepicker-input-width, var(--spectrum-datepicker-input-width)); +} +.spectrum-DatePicker--range .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-range-input-width-first, var(--spectrum-datepicker-range-input-width-first)); +} +.spectrum-DatePicker-input { + flex: 1; + inline-size: 100%; +} +.spectrum-DatePicker-input.spectrum-DatePicker-startField { + border-inline-end: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; + padding-inline-end: var(--mod-datepicker-generic-padding, var(--spectrum-datepicker-generic-padding)); +} +.spectrum-DatePicker-input.spectrum-DatePicker-endField { + border-inline-start: 0; + border-start-start-radius: 0; + border-end-start-radius: 0; + padding-inline-start: var(--mod-datepicker-generic-padding, var(--spectrum-datepicker-generic-padding)); +} +.spectrum-DatePicker-rangeDash { + color: var(--highcontrast-datepicker-dash-color, var(--mod-datepicker-dash-color, var(--spectrum-datepicker-dash-color))); + line-height: var(--mod-datepicker-dash-line-height, var(--spectrum-datepicker-dash-line-height)); + padding-block-start: var(--mod-datepicker-range-dash-padding-top, var(--spectrum-datepicker-range-dash-padding-top)); + flex: initial; + inline-size: 0; + z-index: 1; +} +.spectrum-DatePicker-rangeDash:before { + content: "–"; + display: inline-block; + margin-block: 0; + margin-inline: var(--mod-datepicker-range-dash-margin-left, var(--spectrum-datepicker-range-dash-marin-inline-start)); + overflow: hidden; + text-align: center; + vertical-align: middle; + inline-size: var(--mod-datepicker-dash-font-size, var(--spectrum-datepicker-dash-font-size)); +} +@media (forced-colors: active) { + .spectrum-DatePicker { + --highcontrast-datepicker-dash-color: CanvasText; + --highcontrast-datepicker-dash-color-disabled: GrayText; + --highcontrast-datepicker-focus-ring-color: Highlight; + --highcontrast-datepicker-pickerbutton-border-color: Highlight; + --highcontrast-datepicker-invalid-quiet-color: Highlight; + } +} +.spectrum-DatePicker { + --spectrum-datepicker-initial-height: var(--system-spectrum-datepicker-initial-height); +} +/*# sourceMappingURL=components/datepicker/index.css.map */ diff --git a/components/datepicker/index.css b/components/datepicker/index.css new file mode 100644 index 0000000000..28e285ebf2 --- /dev/null +++ b/components/datepicker/index.css @@ -0,0 +1,234 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-100); +} +.spectrum--express { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-75); +} +.spectrum-DatePicker { + --spectrum-datepicker-border-radius: var(--spectrum-corner-radius-100); + --spectrum-datepicker-border-radius-quiet: 0; + --spectrum-datepicker-border-width: var(--spectrum-border-width-100); + --spectrum-datepicker-min-width: var(--spectrum-field-width); + --spectrum-datepicker-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-datepicker-pickerbutton-border-color: var(--spectrum-gray-500); + --spectrum-datepicker-pickerbutton-border-color-invalid: var(--spectrum-negative-border-color-default); + --spectrum-datepicker-pickerbutton-width: calc(var(--spectrum-field-edge-to-disclosure-icon-100) * 2 + var(--spectrum-workflow-icon-size-100)); + --spectrum-datepicker-pickerbutton-width-quiet: calc(var(--spectrum-datepicker-pickerbutton-width) - var(--spectrum-datepicker-quiet-button-offset)); + --spectrum-datepicker-quiet-button-offset: var(--spectrum-text-to-visual-100); + --spectrum-datepicker-icon-to-button: var(--spectrum-text-to-visual-100); + --spectrum-datepicker-icon-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-datepicker-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-datepicker-focus-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-datepicker-focus-animation: var(--spectrum-animation-duration-100); + --spectrum-datepicker-focus-ring-width: var(--spectrum-border-width-100); + --spectrum-datepicker-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-datepicker-focus-line-gap: var(--spectrum-spacing-75); + --spectrum-datepicker-invalid-quiet-color: var(--spectrum-negative-border-color-default); + --spectrum-datepicker-quiet-border-color-hover: var(--spectrum-gray-500); + --spectrum-datepicker-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-datepicker-dash-font-size: var(--spectrum-font-size-100); + --spectrum-datepicker-dash-color: var(--spectrum-neutral-content-color-default); + --spectrum-datepicker-dash-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-datepicker-range-dash-marin-inline-start: calc(var(--spectrum-datepicker-dash-font-size) * -0.5); + --spectrum-datepicker-range-dash-padding-top: 0; + --spectrum-datepicker-input-width-base: calc(var(--spectrum-datepicker-range-input-width-first) + var(--spectrum-datepicker-icon-size)); + --spectrum-datepicker-input-width: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-input-width-quiet: calc(var(--spectrum-datepicker-range-input-width-quiet-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-range-input-width-first: calc(var(--spectrum-datepicker-initial-width) - var(--spectrum-datepicker-generic-padding) * 2); + --spectrum-datepicker-range-input-width-quiet-first: calc(var(--spectrum-datepicker-width-quiet-first) + var(--spectrum-datepicker-width-quiet-second)); + --spectrum-datepicker-datetime-input-width-first: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-datetime-width-first)); + --spectrum-datepicker-datetime-input-width: calc(var(--spectrum-datepicker-datetime-input-width-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-datetime-quiet-input-width-first: calc(var(--spectrum-datepicker-input-width-base) + var(--spectrum-datepicker-input-datetime-width)); + --spectrum-datepicker-datetime-quiet-input-width: calc(var(--spectrum-datepicker-datetime-quiet-input-width-first) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-initial-height)); + --spectrum-datepicker-padding-inline-end: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) - var(--spectrum-datepicker-border-width) * 2); + --spectrum-datepicker-padding-inline-end-quiet: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) - var(--spectrum-datepicker-quiet-button-offset)); + --spectrum-datepicker-padding-inline-end-invalid: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-component-edge-to-text-100) + var(--spectrum-datepicker-icon-to-button) + var(--spectrum-datepicker-icon-size) - var(--spectrum-datepicker-border-width) * 2); + --spectrum-datepicker-padding-inline-end-invalid-quiet: calc(var(--spectrum-datepicker-pickerbutton-width-quiet) + var(--spectrum-datepicker-icon-size) + var(--spectrum-datepicker-icon-to-text)); + position: relative; + display: inline-flex; + flex-direction: row; + flex-wrap: nowrap; + min-inline-size: var(--mod-datepicker-min-width, var(--spectrum-datepicker-min-width)); + border-radius: var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)); +} +.spectrum-DatePicker.is-disabled .spectrum-DatePicker-rangeDash { + color: var(--highcontrast-datepicker-dash-color-disabled, var(--mod-datepicker-dash-color-disabled, var(--spectrum-datepicker-dash-color-disabled))); +} +.spectrum-DatePicker.is-invalid { + --mod-textfield-icon-spacing-inline-end-invalid: calc(var(--spectrum-datepicker-pickerbutton-width) + var(--spectrum-datepicker-invalid-icon-to-button)); + --mod-textfield-icon-spacing-inline-end-quiet-invalid: calc(var(--spectrum-datepicker-pickerbutton-width-quiet) + var(--spectrum-datepicker-invalid-icon-to-button-quiet)); +} +.spectrum-DatePicker:not(.spectrum-DatePicker--quiet, .is-disabled) { + --mod-picker-button-border-color: var(--highcontrast-datepicker-pickerbutton-border-color, var(--mod-datepicker-pickerbutton-border-color, var(--spectrum-datepicker-pickerbutton-border-color))); +} +.spectrum-DatePicker.is-invalid:not(.spectrum-DatePicker--quiet, .is-disabled) { + --mod-picker-button-border-color: var(--highcontrast-datepicker-pickerbutton-border-color, var(--mod-datepicker-pickerbutton-border-color-invalid, var(--spectrum-datepicker-pickerbutton-border-color-invalid))); +} +.spectrum-DatePicker-input, +.spectrum-DatePicker-input.spectrum-DatePicker-endField { + padding-inline-end: var(--mod-datepicker-padding-inline, var(--spectrum-datepicker-padding-inline-end)); +} +.is-invalid .spectrum-DatePicker-input { + padding-inline-end: var(--mod-datepicker-padding-inline-end-invalid, var(--spectrum-datepicker-padding-inline-end-invalid)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-input { + padding-inline-end: var(--mod-datepicker-padding-inline-end-quiet, var(--spectrum-datepicker-padding-inline-end-quiet)); +} +.spectrum-DatePicker--quiet .is-invalid .spectrum-DatePicker-input:not(.spectrum-DatePicker-startField) { + padding-inline-end: var(--mod-datepicker-padding-inline-end-invalid-quiet, var(--spectrum-datepicker-padding-inline-end-invalid-quiet)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-input.spectrum-DatePicker-endField { + padding-inline-end: var(--mod-datepicker-padding-inline-end-quiet, var(--spectrum-datepicker-padding-inline-end-quiet)); +} +.spectrum-DatePicker-button { + position: absolute; + inset-inline-end: 0; +} +.spectrum-DatePicker--quiet { + border-radius: var(--mod-datepicker-border-radius-quiet, var(--spectrum-datepicker-border-radius-quiet)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button { + inline-size: auto; + inset-inline-end: calc(var(--mod-datepicker-quiet-button-offset, var(--spectrum-datepicker-quiet-button-offset)) * -1); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled { + border-color: var(--mod-datepicker-border-color-disabled, var(--spectrum-datepicker-border-color-disabled)); +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:not(.is-open) .spectrum-PickerButton-fill { + border-color: transparent; +} +.spectrum-DatePicker--quiet .spectrum-DatePicker-button:not(:disabled, .is-open) .spectrum-PickerButton-fill { + background-color: initial; +} +@media (hover: hover) { + .spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:hover { + border-color: var(--mod-datepicker-border-color-disabled, var(--spectrum-datepicker-border-color-disabled)); + } + .spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-button, + .spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-input { + border-color: var(--mod-datepicker-quiet-border-color-hover, var(--spectrum-datepicker-quiet-border-color-hover)); + } +} +.spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-button, +.spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-input { + border-color: var(--highcontrast-datepicker-invalid-quiet-color, var(--mod-datepicker-invalid-quiet-color, var(--spectrum-datepicker-invalid-quiet-color))); +} +.spectrum-DatePicker--range { + border-radius: var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)); +} +.spectrum-DatePicker--range:after { + pointer-events: none; + content: ""; + position: absolute; + inset: 0; + margin: calc(var(--mod-datepicker-focus-ring-gap, var(--spectrum-datepicker-focus-ring-gap)) * -1); + border-radius: calc(var(--mod-datepicker-border-radius, var(--spectrum-datepicker-border-radius)) + var(--mod-datepicker-focus-ring-gap, var(--spectrum-datepicker-focus-ring-gap))); + border-color: transparent; + transition: + box-shadow var(--mod-datepicker-focus-animation, var(--spectrum-datepicker-focus-animation)) ease-in-out, + border-color var(--mod-datepicker-focus-animation, var(--spectrum-datepicker-focus-animation)) ease-in-out; +} +.spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet):after { + box-shadow: 0 0 0 var(--mod-datepicker-focus-ring-width, var(--spectrum-datepicker-focus-ring-width)) var(--highcontrast-datepicker-focus-ring-color, var(--mod-datepicker-focus-ring-color, var(--spectrum-datepicker-focus-ring-color))); +} +.spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet) .spectrum-DatePicker-textfield:after { + display: none; +} +.spectrum-DatePicker--range.is-keyboardFocused.spectrum-DatePicker--quiet:after { + margin: 0; + box-shadow: none; + border-radius: 0; + border-block-end: var(--mod-datepicker-focus-thickness, var(--spectrum-datepicker-focus-thickness)) solid var(--highcontrast-datepicker-focus-ring-color, var(--mod-datepicker-focus-ring-color, var(--spectrum-datepicker-focus-ring-color))); + inset-block-end: calc(var(--mod-datepicker-focus-line-gap, var(--spectrum-datepicker-focus-line-gap)) * -1); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet { + border-radius: var(--mod-datepicker-border-radius-quiet, var(--spectrum-datepicker-border-radius-quiet)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield { + min-inline-size: 0; + inline-size: var(--mod-datepicker-input-width-quiet, var(--spectrum-datepicker-input-width-quiet)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-range-input-width-quiet-first, var(--spectrum-datepicker-range-input-width-quiet-first)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield { + inline-size: var(--mod-datepicker-datetime-input-width, var(--spectrum-datepicker-datetime-input-width)); + min-inline-size: 0; +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-datetime-input-width-first, var(--spectrum-datepicker-datetime-input-width-first)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield { + inline-size: var(--mod-datepicker-datetime-quiet-input-width, var(--spectrum-datepicker-datetime-quiet-input-width)); +} +.spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-datetime-quiet-input-width-first, var(--spectrum-datepicker-datetime-quiet-input-width-first)); +} +.spectrum-DatePicker--range .spectrum-DatePicker-textfield { + flex: initial; + min-inline-size: 0; + inline-size: var(--mod-datepicker-input-width, var(--spectrum-datepicker-input-width)); +} +.spectrum-DatePicker--range .spectrum-DatePicker-textfield:first-of-type { + inline-size: var(--mod-datepicker-range-input-width-first, var(--spectrum-datepicker-range-input-width-first)); +} +.spectrum-DatePicker-input { + flex: 1; + inline-size: 100%; +} +.spectrum-DatePicker-input.spectrum-DatePicker-startField { + border-inline-end: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; + padding-inline-end: var(--mod-datepicker-generic-padding, var(--spectrum-datepicker-generic-padding)); +} +.spectrum-DatePicker-input.spectrum-DatePicker-endField { + border-inline-start: 0; + border-start-start-radius: 0; + border-end-start-radius: 0; + padding-inline-start: var(--mod-datepicker-generic-padding, var(--spectrum-datepicker-generic-padding)); +} +.spectrum-DatePicker-rangeDash { + color: var(--highcontrast-datepicker-dash-color, var(--mod-datepicker-dash-color, var(--spectrum-datepicker-dash-color))); + line-height: var(--mod-datepicker-dash-line-height, var(--spectrum-datepicker-dash-line-height)); + padding-block-start: var(--mod-datepicker-range-dash-padding-top, var(--spectrum-datepicker-range-dash-padding-top)); + flex: initial; + inline-size: 0; + z-index: 1; +} +.spectrum-DatePicker-rangeDash:before { + content: "–"; + display: inline-block; + margin-block: 0; + margin-inline: var(--mod-datepicker-range-dash-margin-left, var(--spectrum-datepicker-range-dash-marin-inline-start)); + overflow: hidden; + text-align: center; + vertical-align: middle; + inline-size: var(--mod-datepicker-dash-font-size, var(--spectrum-datepicker-dash-font-size)); +} +@media (forced-colors: active) { + .spectrum-DatePicker { + --highcontrast-datepicker-dash-color: CanvasText; + --highcontrast-datepicker-dash-color-disabled: GrayText; + --highcontrast-datepicker-focus-ring-color: Highlight; + --highcontrast-datepicker-pickerbutton-border-color: Highlight; + --highcontrast-datepicker-invalid-quiet-color: Highlight; + } +} +.spectrum-DatePicker { + --spectrum-datepicker-initial-height: var(--system-spectrum-datepicker-initial-height); +} +/*# sourceMappingURL=components/datepicker/index.css.map */ diff --git a/components/datepicker/metadata.json b/components/datepicker/metadata.json new file mode 100644 index 0000000000..299b981d50 --- /dev/null +++ b/components/datepicker/metadata.json @@ -0,0 +1,159 @@ +{ + "selectors": [ + ".is-invalid .spectrum-DatePicker-input", + ".spectrum", + ".spectrum--express", + ".spectrum-DatePicker", + ".spectrum-DatePicker--quiet", + ".spectrum-DatePicker--quiet .is-invalid .spectrum-DatePicker-input:not(.spectrum-DatePicker-startField)", + ".spectrum-DatePicker--quiet .spectrum-DatePicker-button", + ".spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled", + ".spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:hover", + ".spectrum-DatePicker--quiet .spectrum-DatePicker-button:disabled:not(.is-open) .spectrum-PickerButton-fill", + ".spectrum-DatePicker--quiet .spectrum-DatePicker-button:not(:disabled, .is-open) .spectrum-PickerButton-fill", + ".spectrum-DatePicker--quiet .spectrum-DatePicker-input", + ".spectrum-DatePicker--quiet .spectrum-DatePicker-input.spectrum-DatePicker-endField", + ".spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-button,\n.spectrum-DatePicker--quiet.is-invalid .spectrum-DatePicker-input", + ".spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-button,\n\t.spectrum-DatePicker--quiet:hover:not(.is-focused, .is-keyboardFocused, .is-disabled, .is-invalid) .spectrum-DatePicker-input", + ".spectrum-DatePicker--range", + ".spectrum-DatePicker--range .spectrum-DatePicker-textfield", + ".spectrum-DatePicker--range .spectrum-DatePicker-textfield:first-of-type", + ".spectrum-DatePicker--range.is-keyboardFocused.spectrum-DatePicker--quiet:after", + ".spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet) .spectrum-DatePicker-textfield:after", + ".spectrum-DatePicker--range.is-keyboardFocused:not(.spectrum-DatePicker--quiet):after", + ".spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield", + ".spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange .spectrum-DatePicker-textfield:first-of-type", + ".spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield", + ".spectrum-DatePicker--range.spectrum-DatePicker--datetimeRange.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type", + ".spectrum-DatePicker--range.spectrum-DatePicker--quiet", + ".spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield", + ".spectrum-DatePicker--range.spectrum-DatePicker--quiet .spectrum-DatePicker-textfield:first-of-type", + ".spectrum-DatePicker--range:after", + ".spectrum-DatePicker-button", + ".spectrum-DatePicker-input", + ".spectrum-DatePicker-input,\n.spectrum-DatePicker-input.spectrum-DatePicker-endField", + ".spectrum-DatePicker-input.spectrum-DatePicker-endField", + ".spectrum-DatePicker-input.spectrum-DatePicker-startField", + ".spectrum-DatePicker-rangeDash", + ".spectrum-DatePicker-rangeDash:before", + ".spectrum-DatePicker.is-disabled .spectrum-DatePicker-rangeDash", + ".spectrum-DatePicker.is-invalid", + ".spectrum-DatePicker.is-invalid:not(.spectrum-DatePicker--quiet, .is-disabled)", + ".spectrum-DatePicker:not(.spectrum-DatePicker--quiet, .is-disabled)" + ], + "mods": [ + "--mod-datepicker-border-color-disabled", + "--mod-datepicker-border-radius", + "--mod-datepicker-border-radius-quiet", + "--mod-datepicker-dash-color", + "--mod-datepicker-dash-color-disabled", + "--mod-datepicker-dash-font-size", + "--mod-datepicker-dash-line-height", + "--mod-datepicker-datetime-input-width", + "--mod-datepicker-datetime-input-width-first", + "--mod-datepicker-datetime-quiet-input-width", + "--mod-datepicker-datetime-quiet-input-width-first", + "--mod-datepicker-focus-animation", + "--mod-datepicker-focus-line-gap", + "--mod-datepicker-focus-ring-color", + "--mod-datepicker-focus-ring-gap", + "--mod-datepicker-focus-ring-width", + "--mod-datepicker-focus-thickness", + "--mod-datepicker-generic-padding", + "--mod-datepicker-input-width", + "--mod-datepicker-input-width-quiet", + "--mod-datepicker-invalid-quiet-color", + "--mod-datepicker-min-width", + "--mod-datepicker-padding-inline", + "--mod-datepicker-padding-inline-end-invalid", + "--mod-datepicker-padding-inline-end-invalid-quiet", + "--mod-datepicker-padding-inline-end-quiet", + "--mod-datepicker-pickerbutton-border-color", + "--mod-datepicker-pickerbutton-border-color-invalid", + "--mod-datepicker-quiet-border-color-hover", + "--mod-datepicker-quiet-button-offset", + "--mod-datepicker-range-dash-margin-left", + "--mod-datepicker-range-dash-padding-top", + "--mod-datepicker-range-input-width-first", + "--mod-datepicker-range-input-width-quiet-first" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-border-width-100", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-height-100", + "--spectrum-component-height-75", + "--spectrum-corner-radius-100", + "--spectrum-datepicker-border-color-disabled", + "--spectrum-datepicker-border-radius", + "--spectrum-datepicker-border-radius-quiet", + "--spectrum-datepicker-border-width", + "--spectrum-datepicker-dash-color", + "--spectrum-datepicker-dash-color-disabled", + "--spectrum-datepicker-dash-font-size", + "--spectrum-datepicker-dash-line-height", + "--spectrum-datepicker-datetime-input-width", + "--spectrum-datepicker-datetime-input-width-first", + "--spectrum-datepicker-datetime-quiet-input-width", + "--spectrum-datepicker-datetime-quiet-input-width-first", + "--spectrum-datepicker-datetime-width-first", + "--spectrum-datepicker-focus-animation", + "--spectrum-datepicker-focus-line-gap", + "--spectrum-datepicker-focus-ring-color", + "--spectrum-datepicker-focus-ring-gap", + "--spectrum-datepicker-focus-ring-width", + "--spectrum-datepicker-focus-thickness", + "--spectrum-datepicker-generic-padding", + "--spectrum-datepicker-icon-size", + "--spectrum-datepicker-icon-to-button", + "--spectrum-datepicker-icon-to-text", + "--spectrum-datepicker-initial-height", + "--spectrum-datepicker-initial-width", + "--spectrum-datepicker-input-datetime-width", + "--spectrum-datepicker-input-width", + "--spectrum-datepicker-input-width-base", + "--spectrum-datepicker-input-width-quiet", + "--spectrum-datepicker-invalid-icon-to-button", + "--spectrum-datepicker-invalid-icon-to-button-quiet", + "--spectrum-datepicker-invalid-quiet-color", + "--spectrum-datepicker-min-width", + "--spectrum-datepicker-padding-inline-end", + "--spectrum-datepicker-padding-inline-end-invalid", + "--spectrum-datepicker-padding-inline-end-invalid-quiet", + "--spectrum-datepicker-padding-inline-end-quiet", + "--spectrum-datepicker-pickerbutton-border-color", + "--spectrum-datepicker-pickerbutton-border-color-invalid", + "--spectrum-datepicker-pickerbutton-width", + "--spectrum-datepicker-pickerbutton-width-quiet", + "--spectrum-datepicker-quiet-border-color-hover", + "--spectrum-datepicker-quiet-button-offset", + "--spectrum-datepicker-range-dash-marin-inline-start", + "--spectrum-datepicker-range-dash-padding-top", + "--spectrum-datepicker-range-input-width-first", + "--spectrum-datepicker-range-input-width-quiet-first", + "--spectrum-datepicker-width-quiet-first", + "--spectrum-datepicker-width-quiet-second", + "--spectrum-disabled-border-color", + "--spectrum-disabled-content-color", + "--spectrum-field-edge-to-disclosure-icon-100", + "--spectrum-field-width", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-gray-500", + "--spectrum-negative-border-color-default", + "--spectrum-neutral-content-color-default", + "--spectrum-spacing-75", + "--spectrum-text-to-visual-100", + "--spectrum-workflow-icon-size-100" + ], + "system": ["--system-spectrum-datepicker-initial-height"], + "a11y": [ + "--highcontrast-datepicker-dash-color", + "--highcontrast-datepicker-dash-color-disabled", + "--highcontrast-datepicker-focus-ring-color", + "--highcontrast-datepicker-invalid-quiet-color", + "--highcontrast-datepicker-pickerbutton-border-color" + ] +} diff --git a/components/datepicker/package.json b/components/datepicker/package.json new file mode 100644 index 0000000000..b037dd1724 --- /dev/null +++ b/components/datepicker/package.json @@ -0,0 +1,47 @@ +{ + "name": "@spectrum-css/datepicker", + "version": "3.2.1", + "description": "The Spectrum CSS datepicker component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/datepicker" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/calendar": ">=5", + "@spectrum-css/pickerbutton": ">=5", + "@spectrum-css/popover": ">=7", + "@spectrum-css/textfield": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/calendar": "workspace:^", + "@spectrum-css/pickerbutton": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/textfield": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/datepicker/template.js b/components/datepicker/template.js new file mode 100644 index 0000000000..14ced13cfb --- /dev/null +++ b/components/datepicker/template.js @@ -0,0 +1,117 @@ +import { Template as Calendar } from "@spectrum-css/calendar/stories/template.js"; +import { Template as PickerButton } from "@spectrum-css/pickerbutton/stories/template.js"; +import { Template as Popover } from "@spectrum-css/popover/stories/template.js"; +import { Template as TextField } from "@spectrum-css/textfield/stories/template.js"; +import { html } from "lit"; +import { when } from "lit-html/directives/when.js"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-DatePicker", + id, + customClasses = [], + isOpen = true, + isInvalid = false, + isValid = false, + isQuiet = false, + isRange = false, + isDateTimeRange = false, + isDisabled = false, + isRequired = false, + readOnly = false, + selectedDay, + lastDay, +} = {}, context = {}) => { + const { globals = {}, updateArgs } = context; + const lang = globals.lang ?? "en-US"; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + aria-disabled=${isDisabled ? "true" : "false"} + aria-invalid=${ifDefined(isInvalid && !isDisabled ? "false" : undefined)} + aria-readonly=${ifDefined(readOnly ? "true" : "false")} + aria-required=${ifDefined(isRequired ? "true" : "false")} + aria-haspopup="dialog" + > + ${TextField({ + size: "m", + isQuiet, + isDisabled, + isReadOnly: readOnly, + isInvalid: !isRange ? isInvalid : undefined, + customClasses: [`${rootClass}-textfield`], + customInputClasses: isRange ? [`${rootClass}-input`, `${rootClass}-startField`] : [`${rootClass}-input`], + placeholder: "Choose a date", + name: "field", + value: selectedDay ? new Date(selectedDay).toLocaleDateString(lang) : undefined, + onclick: function () { + if (!isOpen) updateArgs({ isOpen: true }); + }, + }, context)} + ${when(isRange, () => html`
    `)} + ${when(isRange, () => TextField({ + size: "m", + isQuiet, + isDisabled, + isInvalid, + isReadOnly: readOnly, + customClasses: [`${rootClass}-textfield`], + customInputClasses: [`${rootClass}-input`, `${rootClass}-endField`], + placeholder: "Choose a date", + name: "field", + value: lastDay + ? new Date(lastDay).toLocaleDateString(lang) + : undefined, + }, context))} + ${PickerButton({ + customClasses: [`${rootClass}-button`], + size: "m", + iconType: "workflow", + iconName: "Calendar", + isQuiet, + customStyles: readOnly ? { "display": "none" } : undefined, + // @todo this is not added to the button on the website; need to make sure it's not a bug + // isOpen, + isInvalid, + isDisabled, + position: "right", + onclick: function () { + updateArgs({ isOpen: !isOpen }); + }, + }, context)} + ${when(!readOnly && !isDisabled, () => html` + ${Popover({ + isOpen: isOpen && !isDisabled && !readOnly, + withTip: false, + position: "bottom", + isQuiet, + customStyles: isOpen + ? { + position: "absolute", + top: "100%", + left: "0", + width: undefined, + } + : {}, + content: [Calendar({}, context)], + // @todo this implementation of calendar does not currently display range selections or selected date on first load + }, context)}` + )} +
    + `; +}; diff --git a/components/datepicker/themes/express.css b/components/datepicker/themes/express.css new file mode 100644 index 0000000000..129d211dce --- /dev/null +++ b/components/datepicker/themes/express.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-75); +} +/*# sourceMappingURL=components/datepicker/themes/express.css.map */ diff --git a/components/datepicker/themes/spectrum.css b/components/datepicker/themes/spectrum.css new file mode 100644 index 0000000000..aeab40f896 --- /dev/null +++ b/components/datepicker/themes/spectrum.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-datepicker-initial-height: var(--spectrum-component-height-100); +} +/*# sourceMappingURL=components/datepicker/themes/spectrum.css.map */ diff --git a/components/dial/index-base.css b/components/dial/index-base.css new file mode 100644 index 0000000000..e220040fe8 --- /dev/null +++ b/components/dial/index-base.css @@ -0,0 +1,251 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Dial { + --spectrum-dial-background-color-default: var(--spectrum-gray-100); + --spectrum-dial-handle-marker-color-disabled: var(--spectrum-gray-300); + --spectrum-dial-border-color-disabled: var(--spectrum-gray-300); + --spectrum-dial-handle-marker-color: var(--spectrum-gray-700); + --spectrum-dial-border-color: var(--spectrum-gray-700); + --spectrum-dial-handle-marker-color-down: var(--spectrum-gray-800); + --spectrum-dial-border-color-down: var(--spectrum-gray-800); + --spectrum-dial-handle-marker-color-hover: var(--spectrum-gray-800); + --spectrum-dial-border-color-hover: var(--spectrum-gray-800); + --spectrum-dial-handle-marker-color-key-focus: var(--spectrum-gray-50); + --spectrum-dial-border-color-key-focus: var(--spectrum-gray-50); + --spectrum-dial-handle-marker-color-mouse-focus: var(--spectrum-gray-700); + --spectrum-dial-border-color-mouse-focus: var(--spectrum-gray-700); + --spectrum-dial-min-max-tick-color: var(--spectrum-gray-600); + --spectrum-dial-label-text-color: var(--spectrum-gray-700); + --spectrum-dial-label-text-color-disabled: var(--spectrum-gray-700); + --spectrum-dial-handle-border-color-disabled: var(--spectrum-gray-400); + --spectrum-dial-container-width: 48px; + --spectrum-dial-handle-marker-width: 12px; + --spectrum-dial-handle-marker-height: 2px; + --spectrum-dial-handle-marker-border-radius: 1px; + --spectrum-dial-handle-size: 100%; + --spectrum-dial-min-height: 0; + --spectrum-dial-controls-min-height: 0; + --spectrum-dial-min-max-tick-angles: 45deg; + --spectrum-dial-width: 32px; + --spectrum-dial-height: 32px; + --spectrum-dial-handle-border-size: var(--spectrum-border-width-200); + --spectrum-dial-label-text-size: var(--spectrum-font-size-75); + --spectrum-dial-label-line-height: var(--spectrum-line-height-200); +} +.spectrum-Dial--small { + --spectrum-dial-width: 24px; + --spectrum-dial-height: 24px; +} +.spectrum-Dial { + position: relative; + z-index: 1; + -webkit-user-select: none; + user-select: none; + display: inline-flex; + flex-direction: column; + block-size: auto; + min-inline-size: var(--mod-dial-min-height, var(--spectrum-dial-min-height)); + min-block-size: var(--mod-dial-min-height, var(--spectrum-dial-min-height)); + inline-size: var(--mod-dial-container-width, var(--spectrum-dial-container-width)); +} +.spectrum-Dial-label { + padding-inline-start: 0; + flex-grow: 1; +} +.spectrum-Dial-label:only-child { + text-align: center; +} +.spectrum-Dial-value { + flex-grow: 0; + padding-inline-end: 0; + cursor: default; +} +.spectrum-Dial-labelContainer { + color: var(--highcontrast-dial-label-text-color, var(--mod-dial-label-text-color, var(--spectrum-dial-label-text-color))); + display: flex; + position: relative; + inline-size: auto; + padding-block-start: var(--mod-dial-label-container-top-to-text, var(--spectrum-dial-label-container-top-to-text)); + font-size: var(--mod-dial-label-text-size, var(--spectrum-dial-label-text-size)); + line-height: var(--mod-dial-label-line-height, var(--spectrum-dial-label-line-height)); + margin-block-end: var(--mod-dial-label-gap-y, var(--spectrum-dial-label-gap-y)); +} +.spectrum-Dial-controls { + display: inline-block; + box-sizing: border-box; + position: relative; + z-index: auto; + vertical-align: top; + inline-size: var(--mod-dial-width, var(--spectrum-dial-width)); + block-size: var(--mod-dial-height, var(--spectrum-dial-height)); + min-block-size: var(--mod-dial-controls-min-height, var(--spectrum-dial-controls-min-height)); + margin-inline-start: var(--mod-dial-controls-margin, var(--spectrum-dial-controls-margin)); + border-radius: var(--mod-dial-border-radius, var(--spectrum-dial-border-radius)); + margin-block: 0; + outline: none; +} +.spectrum-Dial-controls:after, +.spectrum-Dial-controls:before { + background-color: var(--highcontrast-dial-min-max-tick-color, var(--mod-dial-min-max-tick-color, var(--spectrum-dial-min-max-tick-color))); + content: ""; + inline-size: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * 2); + block-size: var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)); + border-radius: var(--mod-dial-handle-marker-border-radius, var(--spectrum-dial-handle-marker-border-radius)); + position: absolute; + inset-block-end: 0; +} +.spectrum-Dial-controls:before { + inset-inline-start: auto; + inset-inline-end: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); + transform: rotate(var(--mod-dial-min-max-tick-angles, var(--spectrum-dial-min-max-tick-angles))); +} +.spectrum-Dial-controls:after { + inset-inline-start: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); +} +.spectrum-Dial-controls:after, +.spectrum-Dial-handle { + transform: rotate(calc(var(--mod-dial-min-max-tick-angles, var(--spectrum-dial-min-max-tick-angles)) * -1)); +} +.spectrum-Dial-handle { + box-shadow: none; + border-color: var(--highcontrast-dial-border-color, var(--mod-dial-border-color, var(--spectrum-dial-border-color))); + position: absolute; + z-index: 2; + display: inline-block; + box-sizing: border-box; + margin-block: calc(var(--mod-dial-handle-block-margin, var(--spectrum-dial-handle-block-margin)) / -2) 0; + margin-inline: calc(var(--mod-dial-handle-inline-margin, var(--spectrum-dial-handle-inline-margin)) / -2) 0; + outline: none; + inline-size: var(--mod-dial-handle-size, var(--spectrum-dial-handle-size)); + block-size: var(--mod-dial-handle-size, var(--spectrum-dial-handle-size)); + border-width: var(--mod-dial-handle-border-size, var(--spectrum-dial-handle-border-size)); + border-style: solid; + inset-block-start: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-inline-start: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-inline-end: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-block-end: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + border-radius: var(--mod-dial-border-radius, var(--spectrum-dial-border-radius)); + cursor: grab; +} +.spectrum-Dial-handle:before { + display: none; +} +.spectrum-Dial-handle:after { + content: ""; + position: absolute; + inset-block-start: 50%; + inset-inline-start: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); + inline-size: var(--mod-dial-handle-marker-width, var(--spectrum-dial-handle-marker-width)); + block-size: var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)); + border-radius: var(--mod-dial-handle-marker-border-radius, var(--spectrum-dial-handle-marker-border-radius)); + transform: translateY(-50%); + background-color: var(--highcontrast-dial-handle-marker-color, var(--mod-dial-handle-marker-color, var(--spectrum-dial-handle-marker-color))); +} +.js-focus-within .spectrum-Dial-handle[focus-within], +.spectrum-Dial-handle.is-dragged, +.spectrum-Dial-handle:active, +.spectrum-Dial-handle:focus-visible, +.spectrum-Dial-handle:focus-within, +.spectrum-Dial-handle[focus-within].js-focus-within { + border-width: var(--mod-dial-handle-border-size, var(--spectrum-dial-handle-border-size)); + cursor: ns-resize; + cursor: grabbing; +} +@media (hover: hover) { + .spectrum-Dial-handle:hover { + border-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); + } + .spectrum-Dial-handle:hover:after { + background-color: var(--highcontrast-dial-handle-marker-color-hover, var(--mod-dial-handle-marker-color-hover, var(--spectrum-dial-handle-marker-color-hover))); + } +} +.js-focus-within .spectrum-Dial-handle[focus-within], +.spectrum-Dial-handle:focus-visible, +.spectrum-Dial-handle:focus-within, +.spectrum-Dial-handle[focus-within].js-focus-within { + background-color: var(--highcontrast-dial-handle-marker-color-mouse-focus, var(--mod-dial-handle-marker-color-mouse-focus, var(--spectrum-dial-handle-marker-color-mouse-focus))); + border-color: var(--highcontrast-dial-handle-marker-color-mouse-focus, var(--mod-dial-handle-marker-color-mouse-focus, var(--spectrum-dial-handle-marker-color-mouse-focus))); +} +.js-focus-within .spectrum-Dial-handle[focus-within]:after, +.spectrum-Dial-handle:focus-visible:after, +.spectrum-Dial-handle:focus-within:after, +.spectrum-Dial-handle[focus-within].js-focus-within:after { + background-color: var(--highcontrast-dial-handle-marker-color-key-focus, var(--mod-dial-handle-marker-color-key-focus, var(--spectrum-dial-handle-marker-color-key-focus))); +} +.spectrum-Dial-handle.is-dragged, +.spectrum-Dial-handle:active { + background-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); + border-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); +} +.spectrum-Dial-handle.is-dragged:after, +.spectrum-Dial-handle:active:after { + background-color: var(--highcontrast-dial-handle-marker-color-key-focus, var(--mod-dial-handle-marker-color-key-focus, var(--spectrum-dial-handle-marker-color-key-focus))); +} +.spectrum-Dial-input { + margin: 0; + padding: 0; + position: absolute; + overflow: hidden; + opacity: 0.000001; + cursor: default; + appearance: none; + border: 0; + pointer-events: none; + inline-size: var(--spectrum-dial-handle-size); + block-size: var(--spectrum-dial-handle-size); + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Dial-input:focus { + outline: none; +} +.spectrum-Dial.is-disabled .spectrum-Dial-labelContainer { + color: var(--highcontrast-dial-label-text-color-disabled, var(--mod-dial-label-text-color-disabled, var(--spectrum-dial-label-text-color-disabled))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-controls:after, +.spectrum-Dial.is-disabled .spectrum-Dial-controls:before { + background-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-handle { + cursor: default; + border-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); + background: var(--highcontrast-dial-background-color-default, var(--mod-dial-background-color-default, var(--spectrum-dial-background-color-default))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-handle:after, +.spectrum-Dial.is-disabled .spectrum-Dial-handle:before { + background-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); +} +.u-isGrabbing { + cursor: ns-resize; + cursor: grabbing; + -webkit-user-select: none; + user-select: none; +} +.u-isGrabbing .spectrum-Dial .spectrum-Dial-label, +.u-isGrabbing .spectrum-Dial .spectrum-Dial-value { + cursor: inherit; +} +@media (forced-colors: active) { + .spectrum-Dial { + --highcontrast-dial-min-max-tick-color: Highlight; + --highcontrast-dial-border-color: Highlight; + --highcontrast-dial-handle-marker-color: Highlight; + --highcontrast-dial-border-color-hover: Highlight; + --highcontrast-dial-handle-marker-color-hover: Highlight; + --highcontrast-dial-handle-marker-color-key-focus: HighlightText; + --highcontrast-dial-label-text-color-disabled: GrayText; + --highcontrast-dial-handle-border-color-disabled: GrayText; + } +} +/*# sourceMappingURL=components/dial/index.css.map */ diff --git a/components/dial/index-vars.css b/components/dial/index-vars.css new file mode 100644 index 0000000000..e220040fe8 --- /dev/null +++ b/components/dial/index-vars.css @@ -0,0 +1,251 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Dial { + --spectrum-dial-background-color-default: var(--spectrum-gray-100); + --spectrum-dial-handle-marker-color-disabled: var(--spectrum-gray-300); + --spectrum-dial-border-color-disabled: var(--spectrum-gray-300); + --spectrum-dial-handle-marker-color: var(--spectrum-gray-700); + --spectrum-dial-border-color: var(--spectrum-gray-700); + --spectrum-dial-handle-marker-color-down: var(--spectrum-gray-800); + --spectrum-dial-border-color-down: var(--spectrum-gray-800); + --spectrum-dial-handle-marker-color-hover: var(--spectrum-gray-800); + --spectrum-dial-border-color-hover: var(--spectrum-gray-800); + --spectrum-dial-handle-marker-color-key-focus: var(--spectrum-gray-50); + --spectrum-dial-border-color-key-focus: var(--spectrum-gray-50); + --spectrum-dial-handle-marker-color-mouse-focus: var(--spectrum-gray-700); + --spectrum-dial-border-color-mouse-focus: var(--spectrum-gray-700); + --spectrum-dial-min-max-tick-color: var(--spectrum-gray-600); + --spectrum-dial-label-text-color: var(--spectrum-gray-700); + --spectrum-dial-label-text-color-disabled: var(--spectrum-gray-700); + --spectrum-dial-handle-border-color-disabled: var(--spectrum-gray-400); + --spectrum-dial-container-width: 48px; + --spectrum-dial-handle-marker-width: 12px; + --spectrum-dial-handle-marker-height: 2px; + --spectrum-dial-handle-marker-border-radius: 1px; + --spectrum-dial-handle-size: 100%; + --spectrum-dial-min-height: 0; + --spectrum-dial-controls-min-height: 0; + --spectrum-dial-min-max-tick-angles: 45deg; + --spectrum-dial-width: 32px; + --spectrum-dial-height: 32px; + --spectrum-dial-handle-border-size: var(--spectrum-border-width-200); + --spectrum-dial-label-text-size: var(--spectrum-font-size-75); + --spectrum-dial-label-line-height: var(--spectrum-line-height-200); +} +.spectrum-Dial--small { + --spectrum-dial-width: 24px; + --spectrum-dial-height: 24px; +} +.spectrum-Dial { + position: relative; + z-index: 1; + -webkit-user-select: none; + user-select: none; + display: inline-flex; + flex-direction: column; + block-size: auto; + min-inline-size: var(--mod-dial-min-height, var(--spectrum-dial-min-height)); + min-block-size: var(--mod-dial-min-height, var(--spectrum-dial-min-height)); + inline-size: var(--mod-dial-container-width, var(--spectrum-dial-container-width)); +} +.spectrum-Dial-label { + padding-inline-start: 0; + flex-grow: 1; +} +.spectrum-Dial-label:only-child { + text-align: center; +} +.spectrum-Dial-value { + flex-grow: 0; + padding-inline-end: 0; + cursor: default; +} +.spectrum-Dial-labelContainer { + color: var(--highcontrast-dial-label-text-color, var(--mod-dial-label-text-color, var(--spectrum-dial-label-text-color))); + display: flex; + position: relative; + inline-size: auto; + padding-block-start: var(--mod-dial-label-container-top-to-text, var(--spectrum-dial-label-container-top-to-text)); + font-size: var(--mod-dial-label-text-size, var(--spectrum-dial-label-text-size)); + line-height: var(--mod-dial-label-line-height, var(--spectrum-dial-label-line-height)); + margin-block-end: var(--mod-dial-label-gap-y, var(--spectrum-dial-label-gap-y)); +} +.spectrum-Dial-controls { + display: inline-block; + box-sizing: border-box; + position: relative; + z-index: auto; + vertical-align: top; + inline-size: var(--mod-dial-width, var(--spectrum-dial-width)); + block-size: var(--mod-dial-height, var(--spectrum-dial-height)); + min-block-size: var(--mod-dial-controls-min-height, var(--spectrum-dial-controls-min-height)); + margin-inline-start: var(--mod-dial-controls-margin, var(--spectrum-dial-controls-margin)); + border-radius: var(--mod-dial-border-radius, var(--spectrum-dial-border-radius)); + margin-block: 0; + outline: none; +} +.spectrum-Dial-controls:after, +.spectrum-Dial-controls:before { + background-color: var(--highcontrast-dial-min-max-tick-color, var(--mod-dial-min-max-tick-color, var(--spectrum-dial-min-max-tick-color))); + content: ""; + inline-size: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * 2); + block-size: var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)); + border-radius: var(--mod-dial-handle-marker-border-radius, var(--spectrum-dial-handle-marker-border-radius)); + position: absolute; + inset-block-end: 0; +} +.spectrum-Dial-controls:before { + inset-inline-start: auto; + inset-inline-end: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); + transform: rotate(var(--mod-dial-min-max-tick-angles, var(--spectrum-dial-min-max-tick-angles))); +} +.spectrum-Dial-controls:after { + inset-inline-start: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); +} +.spectrum-Dial-controls:after, +.spectrum-Dial-handle { + transform: rotate(calc(var(--mod-dial-min-max-tick-angles, var(--spectrum-dial-min-max-tick-angles)) * -1)); +} +.spectrum-Dial-handle { + box-shadow: none; + border-color: var(--highcontrast-dial-border-color, var(--mod-dial-border-color, var(--spectrum-dial-border-color))); + position: absolute; + z-index: 2; + display: inline-block; + box-sizing: border-box; + margin-block: calc(var(--mod-dial-handle-block-margin, var(--spectrum-dial-handle-block-margin)) / -2) 0; + margin-inline: calc(var(--mod-dial-handle-inline-margin, var(--spectrum-dial-handle-inline-margin)) / -2) 0; + outline: none; + inline-size: var(--mod-dial-handle-size, var(--spectrum-dial-handle-size)); + block-size: var(--mod-dial-handle-size, var(--spectrum-dial-handle-size)); + border-width: var(--mod-dial-handle-border-size, var(--spectrum-dial-handle-border-size)); + border-style: solid; + inset-block-start: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-inline-start: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-inline-end: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-block-end: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + border-radius: var(--mod-dial-border-radius, var(--spectrum-dial-border-radius)); + cursor: grab; +} +.spectrum-Dial-handle:before { + display: none; +} +.spectrum-Dial-handle:after { + content: ""; + position: absolute; + inset-block-start: 50%; + inset-inline-start: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); + inline-size: var(--mod-dial-handle-marker-width, var(--spectrum-dial-handle-marker-width)); + block-size: var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)); + border-radius: var(--mod-dial-handle-marker-border-radius, var(--spectrum-dial-handle-marker-border-radius)); + transform: translateY(-50%); + background-color: var(--highcontrast-dial-handle-marker-color, var(--mod-dial-handle-marker-color, var(--spectrum-dial-handle-marker-color))); +} +.js-focus-within .spectrum-Dial-handle[focus-within], +.spectrum-Dial-handle.is-dragged, +.spectrum-Dial-handle:active, +.spectrum-Dial-handle:focus-visible, +.spectrum-Dial-handle:focus-within, +.spectrum-Dial-handle[focus-within].js-focus-within { + border-width: var(--mod-dial-handle-border-size, var(--spectrum-dial-handle-border-size)); + cursor: ns-resize; + cursor: grabbing; +} +@media (hover: hover) { + .spectrum-Dial-handle:hover { + border-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); + } + .spectrum-Dial-handle:hover:after { + background-color: var(--highcontrast-dial-handle-marker-color-hover, var(--mod-dial-handle-marker-color-hover, var(--spectrum-dial-handle-marker-color-hover))); + } +} +.js-focus-within .spectrum-Dial-handle[focus-within], +.spectrum-Dial-handle:focus-visible, +.spectrum-Dial-handle:focus-within, +.spectrum-Dial-handle[focus-within].js-focus-within { + background-color: var(--highcontrast-dial-handle-marker-color-mouse-focus, var(--mod-dial-handle-marker-color-mouse-focus, var(--spectrum-dial-handle-marker-color-mouse-focus))); + border-color: var(--highcontrast-dial-handle-marker-color-mouse-focus, var(--mod-dial-handle-marker-color-mouse-focus, var(--spectrum-dial-handle-marker-color-mouse-focus))); +} +.js-focus-within .spectrum-Dial-handle[focus-within]:after, +.spectrum-Dial-handle:focus-visible:after, +.spectrum-Dial-handle:focus-within:after, +.spectrum-Dial-handle[focus-within].js-focus-within:after { + background-color: var(--highcontrast-dial-handle-marker-color-key-focus, var(--mod-dial-handle-marker-color-key-focus, var(--spectrum-dial-handle-marker-color-key-focus))); +} +.spectrum-Dial-handle.is-dragged, +.spectrum-Dial-handle:active { + background-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); + border-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); +} +.spectrum-Dial-handle.is-dragged:after, +.spectrum-Dial-handle:active:after { + background-color: var(--highcontrast-dial-handle-marker-color-key-focus, var(--mod-dial-handle-marker-color-key-focus, var(--spectrum-dial-handle-marker-color-key-focus))); +} +.spectrum-Dial-input { + margin: 0; + padding: 0; + position: absolute; + overflow: hidden; + opacity: 0.000001; + cursor: default; + appearance: none; + border: 0; + pointer-events: none; + inline-size: var(--spectrum-dial-handle-size); + block-size: var(--spectrum-dial-handle-size); + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Dial-input:focus { + outline: none; +} +.spectrum-Dial.is-disabled .spectrum-Dial-labelContainer { + color: var(--highcontrast-dial-label-text-color-disabled, var(--mod-dial-label-text-color-disabled, var(--spectrum-dial-label-text-color-disabled))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-controls:after, +.spectrum-Dial.is-disabled .spectrum-Dial-controls:before { + background-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-handle { + cursor: default; + border-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); + background: var(--highcontrast-dial-background-color-default, var(--mod-dial-background-color-default, var(--spectrum-dial-background-color-default))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-handle:after, +.spectrum-Dial.is-disabled .spectrum-Dial-handle:before { + background-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); +} +.u-isGrabbing { + cursor: ns-resize; + cursor: grabbing; + -webkit-user-select: none; + user-select: none; +} +.u-isGrabbing .spectrum-Dial .spectrum-Dial-label, +.u-isGrabbing .spectrum-Dial .spectrum-Dial-value { + cursor: inherit; +} +@media (forced-colors: active) { + .spectrum-Dial { + --highcontrast-dial-min-max-tick-color: Highlight; + --highcontrast-dial-border-color: Highlight; + --highcontrast-dial-handle-marker-color: Highlight; + --highcontrast-dial-border-color-hover: Highlight; + --highcontrast-dial-handle-marker-color-hover: Highlight; + --highcontrast-dial-handle-marker-color-key-focus: HighlightText; + --highcontrast-dial-label-text-color-disabled: GrayText; + --highcontrast-dial-handle-border-color-disabled: GrayText; + } +} +/*# sourceMappingURL=components/dial/index.css.map */ diff --git a/components/dial/index.css b/components/dial/index.css new file mode 100644 index 0000000000..e220040fe8 --- /dev/null +++ b/components/dial/index.css @@ -0,0 +1,251 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Dial { + --spectrum-dial-background-color-default: var(--spectrum-gray-100); + --spectrum-dial-handle-marker-color-disabled: var(--spectrum-gray-300); + --spectrum-dial-border-color-disabled: var(--spectrum-gray-300); + --spectrum-dial-handle-marker-color: var(--spectrum-gray-700); + --spectrum-dial-border-color: var(--spectrum-gray-700); + --spectrum-dial-handle-marker-color-down: var(--spectrum-gray-800); + --spectrum-dial-border-color-down: var(--spectrum-gray-800); + --spectrum-dial-handle-marker-color-hover: var(--spectrum-gray-800); + --spectrum-dial-border-color-hover: var(--spectrum-gray-800); + --spectrum-dial-handle-marker-color-key-focus: var(--spectrum-gray-50); + --spectrum-dial-border-color-key-focus: var(--spectrum-gray-50); + --spectrum-dial-handle-marker-color-mouse-focus: var(--spectrum-gray-700); + --spectrum-dial-border-color-mouse-focus: var(--spectrum-gray-700); + --spectrum-dial-min-max-tick-color: var(--spectrum-gray-600); + --spectrum-dial-label-text-color: var(--spectrum-gray-700); + --spectrum-dial-label-text-color-disabled: var(--spectrum-gray-700); + --spectrum-dial-handle-border-color-disabled: var(--spectrum-gray-400); + --spectrum-dial-container-width: 48px; + --spectrum-dial-handle-marker-width: 12px; + --spectrum-dial-handle-marker-height: 2px; + --spectrum-dial-handle-marker-border-radius: 1px; + --spectrum-dial-handle-size: 100%; + --spectrum-dial-min-height: 0; + --spectrum-dial-controls-min-height: 0; + --spectrum-dial-min-max-tick-angles: 45deg; + --spectrum-dial-width: 32px; + --spectrum-dial-height: 32px; + --spectrum-dial-handle-border-size: var(--spectrum-border-width-200); + --spectrum-dial-label-text-size: var(--spectrum-font-size-75); + --spectrum-dial-label-line-height: var(--spectrum-line-height-200); +} +.spectrum-Dial--small { + --spectrum-dial-width: 24px; + --spectrum-dial-height: 24px; +} +.spectrum-Dial { + position: relative; + z-index: 1; + -webkit-user-select: none; + user-select: none; + display: inline-flex; + flex-direction: column; + block-size: auto; + min-inline-size: var(--mod-dial-min-height, var(--spectrum-dial-min-height)); + min-block-size: var(--mod-dial-min-height, var(--spectrum-dial-min-height)); + inline-size: var(--mod-dial-container-width, var(--spectrum-dial-container-width)); +} +.spectrum-Dial-label { + padding-inline-start: 0; + flex-grow: 1; +} +.spectrum-Dial-label:only-child { + text-align: center; +} +.spectrum-Dial-value { + flex-grow: 0; + padding-inline-end: 0; + cursor: default; +} +.spectrum-Dial-labelContainer { + color: var(--highcontrast-dial-label-text-color, var(--mod-dial-label-text-color, var(--spectrum-dial-label-text-color))); + display: flex; + position: relative; + inline-size: auto; + padding-block-start: var(--mod-dial-label-container-top-to-text, var(--spectrum-dial-label-container-top-to-text)); + font-size: var(--mod-dial-label-text-size, var(--spectrum-dial-label-text-size)); + line-height: var(--mod-dial-label-line-height, var(--spectrum-dial-label-line-height)); + margin-block-end: var(--mod-dial-label-gap-y, var(--spectrum-dial-label-gap-y)); +} +.spectrum-Dial-controls { + display: inline-block; + box-sizing: border-box; + position: relative; + z-index: auto; + vertical-align: top; + inline-size: var(--mod-dial-width, var(--spectrum-dial-width)); + block-size: var(--mod-dial-height, var(--spectrum-dial-height)); + min-block-size: var(--mod-dial-controls-min-height, var(--spectrum-dial-controls-min-height)); + margin-inline-start: var(--mod-dial-controls-margin, var(--spectrum-dial-controls-margin)); + border-radius: var(--mod-dial-border-radius, var(--spectrum-dial-border-radius)); + margin-block: 0; + outline: none; +} +.spectrum-Dial-controls:after, +.spectrum-Dial-controls:before { + background-color: var(--highcontrast-dial-min-max-tick-color, var(--mod-dial-min-max-tick-color, var(--spectrum-dial-min-max-tick-color))); + content: ""; + inline-size: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * 2); + block-size: var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)); + border-radius: var(--mod-dial-handle-marker-border-radius, var(--spectrum-dial-handle-marker-border-radius)); + position: absolute; + inset-block-end: 0; +} +.spectrum-Dial-controls:before { + inset-inline-start: auto; + inset-inline-end: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); + transform: rotate(var(--mod-dial-min-max-tick-angles, var(--spectrum-dial-min-max-tick-angles))); +} +.spectrum-Dial-controls:after { + inset-inline-start: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); +} +.spectrum-Dial-controls:after, +.spectrum-Dial-handle { + transform: rotate(calc(var(--mod-dial-min-max-tick-angles, var(--spectrum-dial-min-max-tick-angles)) * -1)); +} +.spectrum-Dial-handle { + box-shadow: none; + border-color: var(--highcontrast-dial-border-color, var(--mod-dial-border-color, var(--spectrum-dial-border-color))); + position: absolute; + z-index: 2; + display: inline-block; + box-sizing: border-box; + margin-block: calc(var(--mod-dial-handle-block-margin, var(--spectrum-dial-handle-block-margin)) / -2) 0; + margin-inline: calc(var(--mod-dial-handle-inline-margin, var(--spectrum-dial-handle-inline-margin)) / -2) 0; + outline: none; + inline-size: var(--mod-dial-handle-size, var(--spectrum-dial-handle-size)); + block-size: var(--mod-dial-handle-size, var(--spectrum-dial-handle-size)); + border-width: var(--mod-dial-handle-border-size, var(--spectrum-dial-handle-border-size)); + border-style: solid; + inset-block-start: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-inline-start: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-inline-end: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + inset-block-end: var(--mod-dial-handle-position, var(--spectrum-dial-handle-position)); + border-radius: var(--mod-dial-border-radius, var(--spectrum-dial-border-radius)); + cursor: grab; +} +.spectrum-Dial-handle:before { + display: none; +} +.spectrum-Dial-handle:after { + content: ""; + position: absolute; + inset-block-start: 50%; + inset-inline-start: calc(var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)) * -1); + inline-size: var(--mod-dial-handle-marker-width, var(--spectrum-dial-handle-marker-width)); + block-size: var(--mod-dial-handle-marker-height, var(--spectrum-dial-handle-marker-height)); + border-radius: var(--mod-dial-handle-marker-border-radius, var(--spectrum-dial-handle-marker-border-radius)); + transform: translateY(-50%); + background-color: var(--highcontrast-dial-handle-marker-color, var(--mod-dial-handle-marker-color, var(--spectrum-dial-handle-marker-color))); +} +.js-focus-within .spectrum-Dial-handle[focus-within], +.spectrum-Dial-handle.is-dragged, +.spectrum-Dial-handle:active, +.spectrum-Dial-handle:focus-visible, +.spectrum-Dial-handle:focus-within, +.spectrum-Dial-handle[focus-within].js-focus-within { + border-width: var(--mod-dial-handle-border-size, var(--spectrum-dial-handle-border-size)); + cursor: ns-resize; + cursor: grabbing; +} +@media (hover: hover) { + .spectrum-Dial-handle:hover { + border-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); + } + .spectrum-Dial-handle:hover:after { + background-color: var(--highcontrast-dial-handle-marker-color-hover, var(--mod-dial-handle-marker-color-hover, var(--spectrum-dial-handle-marker-color-hover))); + } +} +.js-focus-within .spectrum-Dial-handle[focus-within], +.spectrum-Dial-handle:focus-visible, +.spectrum-Dial-handle:focus-within, +.spectrum-Dial-handle[focus-within].js-focus-within { + background-color: var(--highcontrast-dial-handle-marker-color-mouse-focus, var(--mod-dial-handle-marker-color-mouse-focus, var(--spectrum-dial-handle-marker-color-mouse-focus))); + border-color: var(--highcontrast-dial-handle-marker-color-mouse-focus, var(--mod-dial-handle-marker-color-mouse-focus, var(--spectrum-dial-handle-marker-color-mouse-focus))); +} +.js-focus-within .spectrum-Dial-handle[focus-within]:after, +.spectrum-Dial-handle:focus-visible:after, +.spectrum-Dial-handle:focus-within:after, +.spectrum-Dial-handle[focus-within].js-focus-within:after { + background-color: var(--highcontrast-dial-handle-marker-color-key-focus, var(--mod-dial-handle-marker-color-key-focus, var(--spectrum-dial-handle-marker-color-key-focus))); +} +.spectrum-Dial-handle.is-dragged, +.spectrum-Dial-handle:active { + background-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); + border-color: var(--highcontrast-dial-border-color-hover, var(--mod-dial-border-color-hover, var(--spectrum-dial-border-color-hover))); +} +.spectrum-Dial-handle.is-dragged:after, +.spectrum-Dial-handle:active:after { + background-color: var(--highcontrast-dial-handle-marker-color-key-focus, var(--mod-dial-handle-marker-color-key-focus, var(--spectrum-dial-handle-marker-color-key-focus))); +} +.spectrum-Dial-input { + margin: 0; + padding: 0; + position: absolute; + overflow: hidden; + opacity: 0.000001; + cursor: default; + appearance: none; + border: 0; + pointer-events: none; + inline-size: var(--spectrum-dial-handle-size); + block-size: var(--spectrum-dial-handle-size); + inset-inline-start: 0; + inset-block-start: 0; +} +.spectrum-Dial-input:focus { + outline: none; +} +.spectrum-Dial.is-disabled .spectrum-Dial-labelContainer { + color: var(--highcontrast-dial-label-text-color-disabled, var(--mod-dial-label-text-color-disabled, var(--spectrum-dial-label-text-color-disabled))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-controls:after, +.spectrum-Dial.is-disabled .spectrum-Dial-controls:before { + background-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-handle { + cursor: default; + border-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); + background: var(--highcontrast-dial-background-color-default, var(--mod-dial-background-color-default, var(--spectrum-dial-background-color-default))); +} +.spectrum-Dial.is-disabled .spectrum-Dial-handle:after, +.spectrum-Dial.is-disabled .spectrum-Dial-handle:before { + background-color: var(--highcontrast-dial-handle-border-color-disabled, var(--mod-dial-handle-border-color-disabled, var(--spectrum-dial-handle-border-color-disabled))); +} +.u-isGrabbing { + cursor: ns-resize; + cursor: grabbing; + -webkit-user-select: none; + user-select: none; +} +.u-isGrabbing .spectrum-Dial .spectrum-Dial-label, +.u-isGrabbing .spectrum-Dial .spectrum-Dial-value { + cursor: inherit; +} +@media (forced-colors: active) { + .spectrum-Dial { + --highcontrast-dial-min-max-tick-color: Highlight; + --highcontrast-dial-border-color: Highlight; + --highcontrast-dial-handle-marker-color: Highlight; + --highcontrast-dial-border-color-hover: Highlight; + --highcontrast-dial-handle-marker-color-hover: Highlight; + --highcontrast-dial-handle-marker-color-key-focus: HighlightText; + --highcontrast-dial-label-text-color-disabled: GrayText; + --highcontrast-dial-handle-border-color-disabled: GrayText; + } +} +/*# sourceMappingURL=components/dial/index.css.map */ diff --git a/components/dial/metadata.json b/components/dial/metadata.json new file mode 100644 index 0000000000..336b297556 --- /dev/null +++ b/components/dial/metadata.json @@ -0,0 +1,123 @@ +{ + "selectors": [ + ".js-focus-within .spectrum-Dial-handle[focus-within],\n.spectrum-Dial-handle.is-dragged,\n.spectrum-Dial-handle:active,\n.spectrum-Dial-handle:focus-visible,\n.spectrum-Dial-handle:focus-within,\n.spectrum-Dial-handle[focus-within].js-focus-within", + ".js-focus-within .spectrum-Dial-handle[focus-within],\n.spectrum-Dial-handle:focus-visible,\n.spectrum-Dial-handle:focus-within,\n.spectrum-Dial-handle[focus-within].js-focus-within", + ".js-focus-within .spectrum-Dial-handle[focus-within]:after,\n.spectrum-Dial-handle:focus-visible:after,\n.spectrum-Dial-handle:focus-within:after,\n.spectrum-Dial-handle[focus-within].js-focus-within:after", + ".spectrum-Dial", + ".spectrum-Dial--small", + ".spectrum-Dial-controls", + ".spectrum-Dial-controls:after", + ".spectrum-Dial-controls:after,\n.spectrum-Dial-controls:before", + ".spectrum-Dial-controls:after,\n.spectrum-Dial-handle", + ".spectrum-Dial-controls:before", + ".spectrum-Dial-handle", + ".spectrum-Dial-handle.is-dragged,\n.spectrum-Dial-handle:active", + ".spectrum-Dial-handle.is-dragged:after,\n.spectrum-Dial-handle:active:after", + ".spectrum-Dial-handle:after", + ".spectrum-Dial-handle:before", + ".spectrum-Dial-handle:hover", + ".spectrum-Dial-handle:hover:after", + ".spectrum-Dial-input", + ".spectrum-Dial-input:focus", + ".spectrum-Dial-label", + ".spectrum-Dial-label:only-child", + ".spectrum-Dial-labelContainer", + ".spectrum-Dial-value", + ".spectrum-Dial.is-disabled .spectrum-Dial-controls:after,\n.spectrum-Dial.is-disabled .spectrum-Dial-controls:before", + ".spectrum-Dial.is-disabled .spectrum-Dial-handle", + ".spectrum-Dial.is-disabled .spectrum-Dial-handle:after,\n.spectrum-Dial.is-disabled .spectrum-Dial-handle:before", + ".spectrum-Dial.is-disabled .spectrum-Dial-labelContainer", + ".u-isGrabbing", + ".u-isGrabbing .spectrum-Dial .spectrum-Dial-label,\n.u-isGrabbing .spectrum-Dial .spectrum-Dial-value" + ], + "mods": [ + "--mod-dial-background-color-default", + "--mod-dial-border-color", + "--mod-dial-border-color-hover", + "--mod-dial-border-radius", + "--mod-dial-container-width", + "--mod-dial-controls-margin", + "--mod-dial-controls-min-height", + "--mod-dial-handle-block-margin", + "--mod-dial-handle-border-color-disabled", + "--mod-dial-handle-border-size", + "--mod-dial-handle-inline-margin", + "--mod-dial-handle-marker-border-radius", + "--mod-dial-handle-marker-color", + "--mod-dial-handle-marker-color-hover", + "--mod-dial-handle-marker-color-key-focus", + "--mod-dial-handle-marker-color-mouse-focus", + "--mod-dial-handle-marker-height", + "--mod-dial-handle-marker-width", + "--mod-dial-handle-position", + "--mod-dial-handle-size", + "--mod-dial-height", + "--mod-dial-label-container-top-to-text", + "--mod-dial-label-gap-y", + "--mod-dial-label-line-height", + "--mod-dial-label-text-color", + "--mod-dial-label-text-color-disabled", + "--mod-dial-label-text-size", + "--mod-dial-min-height", + "--mod-dial-min-max-tick-angles", + "--mod-dial-min-max-tick-color", + "--mod-dial-width" + ], + "spectrum": [ + "--spectrum-border-width-200", + "--spectrum-dial-background-color-default", + "--spectrum-dial-border-color", + "--spectrum-dial-border-color-hover", + "--spectrum-dial-border-radius", + "--spectrum-dial-container-width", + "--spectrum-dial-controls-margin", + "--spectrum-dial-controls-min-height", + "--spectrum-dial-handle-block-margin", + "--spectrum-dial-handle-border-color-disabled", + "--spectrum-dial-handle-border-size", + "--spectrum-dial-handle-inline-margin", + "--spectrum-dial-handle-marker-border-radius", + "--spectrum-dial-handle-marker-color", + "--spectrum-dial-handle-marker-color-hover", + "--spectrum-dial-handle-marker-color-key-focus", + "--spectrum-dial-handle-marker-color-mouse-focus", + "--spectrum-dial-handle-marker-height", + "--spectrum-dial-handle-marker-width", + "--spectrum-dial-handle-position", + "--spectrum-dial-handle-size", + "--spectrum-dial-height", + "--spectrum-dial-label-container-top-to-text", + "--spectrum-dial-label-gap-y", + "--spectrum-dial-label-line-height", + "--spectrum-dial-label-text-color", + "--spectrum-dial-label-text-color-disabled", + "--spectrum-dial-label-text-size", + "--spectrum-dial-min-height", + "--spectrum-dial-min-max-tick-angles", + "--spectrum-dial-min-max-tick-color", + "--spectrum-dial-width", + "--spectrum-font-size-75", + "--spectrum-gray-100", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-800", + "--spectrum-line-height-200" + ], + "system": [], + "a11y": [ + "--highcontrast-dial-background-color-default", + "--highcontrast-dial-border-color", + "--highcontrast-dial-border-color-hover", + "--highcontrast-dial-handle-border-color-disabled", + "--highcontrast-dial-handle-marker-color", + "--highcontrast-dial-handle-marker-color-hover", + "--highcontrast-dial-handle-marker-color-key-focus", + "--highcontrast-dial-handle-marker-color-mouse-focus", + "--highcontrast-dial-label-text-color", + "--highcontrast-dial-label-text-color-disabled", + "--highcontrast-dial-min-max-tick-color" + ] +} diff --git a/components/dial/package.json b/components/dial/package.json new file mode 100644 index 0000000000..ff279b5f92 --- /dev/null +++ b/components/dial/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/dial", + "version": "3.1.1", + "description": "The Spectrum CSS dial component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/dial", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/dial" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/dial/template.js b/components/dial/template.js new file mode 100644 index 0000000000..a14119d8e2 --- /dev/null +++ b/components/dial/template.js @@ -0,0 +1,244 @@ +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Dial", + size = "m", + label, + isFocused = false, + isDragged = false, + isDisabled = false, + min = 0, + max = 100, + customClasses = [], + id, +}) => html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + @mousedown=${() => { + if (isDisabled) return; + document.body.classList.add("u-isGrabbing"); + }} + @mouseup=${() => { + document.body.classList.remove("u-isGrabbing"); + }} + @mousemove=${(e) => { + if (isDisabled) return; + if (!document.body.classList.contains("u-isGrabbing")) return; + + const dial = e.target.closest(".spectrum-Dial"); + const handle = dial.querySelector(".spectrum-Dial-handle"); + const input = dial.querySelector("input"); + const min = -45; + const max = 225; + const dialOffsetLeft = dial.offsetLeft + dial.offsetParent.offsetLeft; + var x = Math.max(Math.min(e.x - dialOffsetLeft, dial.offsetWidth), 0); + var percent = (x / dial.offsetWidth) * 100; + var deg = percent * 0.01 * (max - min) + min; + handle.style.transform = "rotate(" + deg + "deg" + ")"; + input.value = Math.round( + percent * 0.01 * (input.max - input.min) + input.min + ); + }} + > + ${when( + label, + () => html`
    + +
    + ${min} +
    +
    ` + )} +
    +
    + { + const value = e.target.value; + const label = document.getElementById("dialLabel"); + label.nextSibling.textContent = value; + }} + /> +
    +
    +
    +`; + +const Sizes = (args, context) => ["s", "m", "l", "xl"].map((size) => html` +
    + ${Typography({ + semantics: "heading", + size: "m", + weight: "light", + content: [ + { + s: "Small", + m: "Medium", + l: "Large", + xl: "Extra-large", + }[size] + ], + customClasses: ["chromatic-ignore"], + }, context)} +
    + ${Template({...args, size}, context)} +
    +
    +`); + +const States = (args, context) => html` +
    + ${[ + {}, + { + heading: "Disabled", + isDisabled: true, + }, + { + heading: "Focused", + isFocused: true, + }, + { + heading: "Dragged", + isDragged: true, + }, + ].map( + ({ heading, ...item }) => html` +
    + ${Typography( + { + semantics: "heading", + size: "m", + weight: "light", + // this whitespace helps the boxes align better when there's not a headings + content: [heading ?? html` `], + customClasses: ["chromatic-ignore"], + }, + context + )} +
    + ${Template( + { + ...args, + ...item, + }, + context + )} +
    +
    + ` + )} +
    +`; + +export const DialGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[ + { + heading: "Default", + }, + { + heading: "With label", + label: "Volume", + withStates: false, + }, + ].map( + ({ heading, withStates = true, ...item }) => html` +
    + ${when(heading, () => + Typography( + { + semantics: "heading", + size: "l", + content: [heading], + customClasses: ["chromatic-ignore"], + }, + context + ) + )} +
    + ${when( + withStates, + () => States({ ...args, ...item }, context), + () => Template({ ...args, ...item }, context) + )} +
    +
    + ` + )} +
    + ${Typography( + { + semantics: "heading", + size: "l", + content: ["Sizing"], + }, + context, + )} +
    + ${Sizes(args, context)} +
    +
    +
    +`; diff --git a/components/dialog/index-base.css b/components/dialog/index-base.css new file mode 100644 index 0000000000..a6a96d0f9b --- /dev/null +++ b/components/dialog/index-base.css @@ -0,0 +1,240 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Dialog { + --spectrum-dialog-fullscreen-header-text-size: 28px; + --spectrum-dialog-min-inline-size: 288px; + --spectrum-dialog-confirm-small-width: 400px; + --spectrum-dialog-confirm-medium-width: 480px; + --spectrum-dialog-confirm-large-width: 640px; + --spectrum-dialog-confirm-divider-block-spacing-start: var(--spectrum-spacing-300); + --spectrum-dialog-confirm-divider-block-spacing-end: var(--spectrum-spacing-200); + --spectrum-dialog-confirm-description-text-color: var(--spectrum-gray-800); + --spectrum-dialog-confirm-title-text-color: var(--spectrum-gray-900); + --spectrum-dialog-confirm-description-text-line-height: var(--spectrum-line-height-100); + --spectrum-dialog-confirm-title-text-line-height: var(--spectrum-line-height-100); + --spectrum-dialog-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-dialog-confirm-description-padding: var(--spectrum-spacing-50); + --spectrum-dialog-confirm-description-margin: calc(var(--spectrum-spacing-50) * -1); + --spectrum-dialog-confirm-footer-padding-top: var(--spectrum-spacing-600); + --spectrum-dialog-confirm-gap-size: var(--spectrum-component-pill-edge-to-text-100); + --spectrum-dialog-confirm-buttongroup-padding-top: var(--spectrum-spacing-600); + --spectrum-dialog-confirm-close-button-size: var(--spectrum-component-height-100); + --spectrum-dialog-confirm-close-button-padding: calc(26px - var(--spectrum-component-bottom-to-text-300)); + --spectrum-dialog-confirm-divider-height: var(--spectrum-spacing-50); + display: flex; + box-sizing: border-box; + inline-size: -moz-fit-content; + inline-size: fit-content; + min-inline-size: var(--mod-dialog-min-inline-size, var(--spectrum-dialog-min-inline-size)); + max-inline-size: 100%; + max-block-size: inherit; + outline: none; +} +.spectrum-Dialog--small { + inline-size: var(--mod-dialog-confirm-small-width, var(--spectrum-dialog-confirm-small-width)); +} +.spectrum-Dialog--medium { + inline-size: var(--mod-dialog-confirm-medium-width, var(--spectrum-dialog-confirm-medium-width)); +} +.spectrum-Dialog--large { + inline-size: var(--mod-dialog-confirm-large-width, var(--spectrum-dialog-confirm-large-width)); +} +.spectrum-Dialog-hero { + grid-area: hero; + block-size: var(--mod-dialog-confirm-hero-height, var(--spectrum-dialog-confirm-hero-height)); + border-start-start-radius: var(--mod-dialog-confirm-border-radius, var(--spectrum-dialog-confirm-border-radius)); + border-start-end-radius: var(--mod-dialog-confirm-border-radius, var(--spectrum-dialog-confirm-border-radius)); + background-size: cover; + background-position: 50%; + overflow: hidden; +} +.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero" ". . . . . ." ". heading header header header ." ". divider divider divider divider ." ". content content content content ." ". footer footer buttonGroup buttonGroup ." ". . . . . ."; + inline-size: 100%; +} +.spectrum-Dialog-heading { + grid-area: heading; + margin: 0; + font-size: var(--mod-dialog-confirm-title-text-size, var(--spectrum-dialog-confirm-title-text-size)); + font-weight: var(--mod-dialog-heading-font-weight, var(--spectrum-dialog-heading-font-weight)); + line-height: var(--mod-dialog-confirm-title-text-line-height, var(--spectrum-dialog-confirm-title-text-line-height)); + color: var(--mod-dialog-confirm-title-text-color, var(--spectrum-dialog-confirm-title-text-color)); + outline: none; + padding-inline-end: var(--mod-dialog-confirm-gap-size, var(--spectrum-dialog-confirm-gap-size)); +} +.spectrum-Dialog-heading.spectrum-Dialog-heading--noHeader { + grid-area: heading-start/heading-start/header-end/header-end; + padding-inline-end: 0; +} +.spectrum-Dialog-header { + grid-area: header; + display: flex; + align-items: center; + justify-content: flex-end; + box-sizing: border-box; + outline: none; +} +.spectrum-Dialog .spectrum-Dialog-divider { + grid-area: divider; + inline-size: 100%; + margin-block-start: var(--mod-dialog-confirm-divider-block-spacing-end, var(--spectrum-dialog-confirm-divider-block-spacing-end)); + margin-block-end: var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)); +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-heading + .spectrum-Dialog-divider { + margin-block-end: calc(var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)) - var(--mod-dialog-confirm-description-padding, var(--spectrum-dialog-confirm-description-padding)) * 2); +} +.spectrum-Dialog--noDivider .spectrum-Dialog-divider { + display: none; +} +.spectrum-Dialog--noDivider .spectrum-Dialog-heading { + padding-block-end: calc(var(--mod-dialog-confirm-divider-block-spacing-end, var(--spectrum-dialog-confirm-divider-block-spacing-end)) + var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)) + var(--mod-dialog-confirm-divider-height, var(--spectrum-dialog-confirm-divider-height))); +} +.spectrum-Dialog-content { + grid-area: content; + box-sizing: border-box; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + outline: none; + font-size: var(--mod-dialog-confirm-description-text-size, var(--spectrum-dialog-confirm-description-text-size)); + font-weight: var(--mod-dialog-confirm-description-font-weight, var(--spectrum-regular-font-weight)); + line-height: var(--mod-dialog-confirm-description-text-line-height, var(--spectrum-dialog-confirm-description-text-line-height)); + color: var(--mod-dialog-confirm-description-text-color, var(--spectrum-dialog-confirm-description-text-color)); + padding: calc(var(--mod-dialog-confirm-description-padding, var(--spectrum-dialog-confirm-description-padding)) * 2); + margin: 0 var(--mod-dialog-confirm-description-margin, var(--spectrum-dialog-confirm-description-margin)); +} +.spectrum-Dialog-footer { + grid-area: footer; + padding-block-start: var(--mod-dialog-confirm-footer-padding-top, var(--spectrum-dialog-confirm-footer-padding-top)); + display: flex; + flex-wrap: wrap; + outline: none; +} +.spectrum-Dialog-footer > *, +.spectrum-Dialog-footer > .spectrum-Button + .spectrum-Button { + margin-block-end: 0; +} +.spectrum-Dialog-buttonGroup { + grid-area: buttonGroup; + padding-block-start: var(--mod-dialog-confirm-buttongroup-padding-top, var(--spectrum-dialog-confirm-buttongroup-padding-top)); + display: flex; + justify-content: flex-end; + padding-inline-start: var(--mod-dialog-confirm-gap-size, var(--spectrum-dialog-confirm-gap-size)); +} +.spectrum-Dialog-buttonGroup.spectrum-Dialog-buttonGroup--noFooter { + grid-area: footer-start/footer-start/buttonGroup-end/buttonGroup-end; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) minmax(0, var(--mod-dialog-confirm-close-button-size, var(--spectrum-dialog-confirm-close-button-size))) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero hero" ". . . . . closeButton closeButton" ". heading header header typeIcon closeButton closeButton" ". divider divider divider divider divider ." ". content content content content content ." ". footer footer buttonGroup buttonGroup buttonGroup ." ". . . . . . ."; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-buttonGroup { + display: none; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-footer { + grid-area: footer/footer/buttonGroup/buttonGroup; + color: var(--mod-dialog-confirm-description-text-color, var(--spectrum-dialog-confirm-description-text-color)); +} +.spectrum-Dialog-closeButton { + grid-area: closeButton; + align-self: start; + justify-self: end; + margin-inline-end: var(--mod-dialog-confirm-close-button-padding, var(--spectrum-dialog-confirm-close-button-padding)); + margin-block-start: var(--mod-dialog-confirm-close-button-padding, var(--spectrum-dialog-confirm-close-button-padding)); +} +.spectrum-Dialog--fullscreen { + inline-size: 100%; + block-size: 100%; +} +.spectrum-Dialog--fullscreenTakeover { + inline-size: 100%; + block-size: 100%; + border-radius: 0; +} +.spectrum-Dialog--fullscreen, +.spectrum-Dialog--fullscreenTakeover { + max-block-size: none; + max-inline-size: none; +} +.spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid, +.spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) 1fr auto auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: ". . . . ." ". heading header buttonGroup ." ". divider divider divider ." ". content content content ." ". . . . ."; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-heading, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading { + font-size: var(--mod-dialog-fullscreen-header-text-size, var(--spectrum-dialog-fullscreen-header-text-size)); +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-content, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-content { + max-block-size: none; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreen .spectrum-Dialog-footer, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer { + padding-block-start: 0; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-footer, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer { + display: none; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup { + grid-area: buttonGroup; + align-self: start; +} +@media screen and (width <= 700px) { + .spectrum-Dialog .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero" ". . . . . ." ". heading heading heading heading ." ". header header header header ." ". divider divider divider divider ." ". content content content content ." ". footer footer buttonGroup buttonGroup ." ". . . . . ."; + } + .spectrum-Dialog .spectrum-Dialog-grid, + .spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + } + .spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) minmax(0, var(--mod-dialog-confirm-close-button-size, var(--spectrum-dialog-confirm-close-button-size))) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero hero" ". . . . . closeButton closeButton" ". heading heading heading heading closeButton closeButton" ". header header header header header ." ". divider divider divider divider divider ." ". content content content content content ." ". footer footer buttonGroup buttonGroup buttonGroup ." ". . . . . . ."; + } + .spectrum-Dialog .spectrum-Dialog-header { + justify-content: flex-start; + } + .spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid, + .spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) 1fr var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: ". . ." ". heading ." ". header ." ". divider ." ". content ." ". buttonGroup ." ". . ."; + } + .spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, + .spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup { + padding-block-start: var(--mod-dialog-confirm-buttongroup-padding-top, var(--spectrum-dialog-confirm-buttongroup-padding-top)); + } + .spectrum-Dialog--fullscreen .spectrum-Dialog-heading, + .spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading { + font-size: var(--mod-dialog-confirm-title-text-size, var(--spectrum-dialog-confirm-title-text-size)); + } +} +@media (forced-colors: active) { + .spectrum-Dialog { + border: solid; + } +} +/*# sourceMappingURL=components/dialog/index.css.map */ diff --git a/components/dialog/index-vars.css b/components/dialog/index-vars.css new file mode 100644 index 0000000000..a6a96d0f9b --- /dev/null +++ b/components/dialog/index-vars.css @@ -0,0 +1,240 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Dialog { + --spectrum-dialog-fullscreen-header-text-size: 28px; + --spectrum-dialog-min-inline-size: 288px; + --spectrum-dialog-confirm-small-width: 400px; + --spectrum-dialog-confirm-medium-width: 480px; + --spectrum-dialog-confirm-large-width: 640px; + --spectrum-dialog-confirm-divider-block-spacing-start: var(--spectrum-spacing-300); + --spectrum-dialog-confirm-divider-block-spacing-end: var(--spectrum-spacing-200); + --spectrum-dialog-confirm-description-text-color: var(--spectrum-gray-800); + --spectrum-dialog-confirm-title-text-color: var(--spectrum-gray-900); + --spectrum-dialog-confirm-description-text-line-height: var(--spectrum-line-height-100); + --spectrum-dialog-confirm-title-text-line-height: var(--spectrum-line-height-100); + --spectrum-dialog-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-dialog-confirm-description-padding: var(--spectrum-spacing-50); + --spectrum-dialog-confirm-description-margin: calc(var(--spectrum-spacing-50) * -1); + --spectrum-dialog-confirm-footer-padding-top: var(--spectrum-spacing-600); + --spectrum-dialog-confirm-gap-size: var(--spectrum-component-pill-edge-to-text-100); + --spectrum-dialog-confirm-buttongroup-padding-top: var(--spectrum-spacing-600); + --spectrum-dialog-confirm-close-button-size: var(--spectrum-component-height-100); + --spectrum-dialog-confirm-close-button-padding: calc(26px - var(--spectrum-component-bottom-to-text-300)); + --spectrum-dialog-confirm-divider-height: var(--spectrum-spacing-50); + display: flex; + box-sizing: border-box; + inline-size: -moz-fit-content; + inline-size: fit-content; + min-inline-size: var(--mod-dialog-min-inline-size, var(--spectrum-dialog-min-inline-size)); + max-inline-size: 100%; + max-block-size: inherit; + outline: none; +} +.spectrum-Dialog--small { + inline-size: var(--mod-dialog-confirm-small-width, var(--spectrum-dialog-confirm-small-width)); +} +.spectrum-Dialog--medium { + inline-size: var(--mod-dialog-confirm-medium-width, var(--spectrum-dialog-confirm-medium-width)); +} +.spectrum-Dialog--large { + inline-size: var(--mod-dialog-confirm-large-width, var(--spectrum-dialog-confirm-large-width)); +} +.spectrum-Dialog-hero { + grid-area: hero; + block-size: var(--mod-dialog-confirm-hero-height, var(--spectrum-dialog-confirm-hero-height)); + border-start-start-radius: var(--mod-dialog-confirm-border-radius, var(--spectrum-dialog-confirm-border-radius)); + border-start-end-radius: var(--mod-dialog-confirm-border-radius, var(--spectrum-dialog-confirm-border-radius)); + background-size: cover; + background-position: 50%; + overflow: hidden; +} +.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero" ". . . . . ." ". heading header header header ." ". divider divider divider divider ." ". content content content content ." ". footer footer buttonGroup buttonGroup ." ". . . . . ."; + inline-size: 100%; +} +.spectrum-Dialog-heading { + grid-area: heading; + margin: 0; + font-size: var(--mod-dialog-confirm-title-text-size, var(--spectrum-dialog-confirm-title-text-size)); + font-weight: var(--mod-dialog-heading-font-weight, var(--spectrum-dialog-heading-font-weight)); + line-height: var(--mod-dialog-confirm-title-text-line-height, var(--spectrum-dialog-confirm-title-text-line-height)); + color: var(--mod-dialog-confirm-title-text-color, var(--spectrum-dialog-confirm-title-text-color)); + outline: none; + padding-inline-end: var(--mod-dialog-confirm-gap-size, var(--spectrum-dialog-confirm-gap-size)); +} +.spectrum-Dialog-heading.spectrum-Dialog-heading--noHeader { + grid-area: heading-start/heading-start/header-end/header-end; + padding-inline-end: 0; +} +.spectrum-Dialog-header { + grid-area: header; + display: flex; + align-items: center; + justify-content: flex-end; + box-sizing: border-box; + outline: none; +} +.spectrum-Dialog .spectrum-Dialog-divider { + grid-area: divider; + inline-size: 100%; + margin-block-start: var(--mod-dialog-confirm-divider-block-spacing-end, var(--spectrum-dialog-confirm-divider-block-spacing-end)); + margin-block-end: var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)); +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-heading + .spectrum-Dialog-divider { + margin-block-end: calc(var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)) - var(--mod-dialog-confirm-description-padding, var(--spectrum-dialog-confirm-description-padding)) * 2); +} +.spectrum-Dialog--noDivider .spectrum-Dialog-divider { + display: none; +} +.spectrum-Dialog--noDivider .spectrum-Dialog-heading { + padding-block-end: calc(var(--mod-dialog-confirm-divider-block-spacing-end, var(--spectrum-dialog-confirm-divider-block-spacing-end)) + var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)) + var(--mod-dialog-confirm-divider-height, var(--spectrum-dialog-confirm-divider-height))); +} +.spectrum-Dialog-content { + grid-area: content; + box-sizing: border-box; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + outline: none; + font-size: var(--mod-dialog-confirm-description-text-size, var(--spectrum-dialog-confirm-description-text-size)); + font-weight: var(--mod-dialog-confirm-description-font-weight, var(--spectrum-regular-font-weight)); + line-height: var(--mod-dialog-confirm-description-text-line-height, var(--spectrum-dialog-confirm-description-text-line-height)); + color: var(--mod-dialog-confirm-description-text-color, var(--spectrum-dialog-confirm-description-text-color)); + padding: calc(var(--mod-dialog-confirm-description-padding, var(--spectrum-dialog-confirm-description-padding)) * 2); + margin: 0 var(--mod-dialog-confirm-description-margin, var(--spectrum-dialog-confirm-description-margin)); +} +.spectrum-Dialog-footer { + grid-area: footer; + padding-block-start: var(--mod-dialog-confirm-footer-padding-top, var(--spectrum-dialog-confirm-footer-padding-top)); + display: flex; + flex-wrap: wrap; + outline: none; +} +.spectrum-Dialog-footer > *, +.spectrum-Dialog-footer > .spectrum-Button + .spectrum-Button { + margin-block-end: 0; +} +.spectrum-Dialog-buttonGroup { + grid-area: buttonGroup; + padding-block-start: var(--mod-dialog-confirm-buttongroup-padding-top, var(--spectrum-dialog-confirm-buttongroup-padding-top)); + display: flex; + justify-content: flex-end; + padding-inline-start: var(--mod-dialog-confirm-gap-size, var(--spectrum-dialog-confirm-gap-size)); +} +.spectrum-Dialog-buttonGroup.spectrum-Dialog-buttonGroup--noFooter { + grid-area: footer-start/footer-start/buttonGroup-end/buttonGroup-end; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) minmax(0, var(--mod-dialog-confirm-close-button-size, var(--spectrum-dialog-confirm-close-button-size))) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero hero" ". . . . . closeButton closeButton" ". heading header header typeIcon closeButton closeButton" ". divider divider divider divider divider ." ". content content content content content ." ". footer footer buttonGroup buttonGroup buttonGroup ." ". . . . . . ."; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-buttonGroup { + display: none; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-footer { + grid-area: footer/footer/buttonGroup/buttonGroup; + color: var(--mod-dialog-confirm-description-text-color, var(--spectrum-dialog-confirm-description-text-color)); +} +.spectrum-Dialog-closeButton { + grid-area: closeButton; + align-self: start; + justify-self: end; + margin-inline-end: var(--mod-dialog-confirm-close-button-padding, var(--spectrum-dialog-confirm-close-button-padding)); + margin-block-start: var(--mod-dialog-confirm-close-button-padding, var(--spectrum-dialog-confirm-close-button-padding)); +} +.spectrum-Dialog--fullscreen { + inline-size: 100%; + block-size: 100%; +} +.spectrum-Dialog--fullscreenTakeover { + inline-size: 100%; + block-size: 100%; + border-radius: 0; +} +.spectrum-Dialog--fullscreen, +.spectrum-Dialog--fullscreenTakeover { + max-block-size: none; + max-inline-size: none; +} +.spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid, +.spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) 1fr auto auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: ". . . . ." ". heading header buttonGroup ." ". divider divider divider ." ". content content content ." ". . . . ."; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-heading, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading { + font-size: var(--mod-dialog-fullscreen-header-text-size, var(--spectrum-dialog-fullscreen-header-text-size)); +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-content, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-content { + max-block-size: none; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreen .spectrum-Dialog-footer, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer { + padding-block-start: 0; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-footer, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer { + display: none; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup { + grid-area: buttonGroup; + align-self: start; +} +@media screen and (width <= 700px) { + .spectrum-Dialog .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero" ". . . . . ." ". heading heading heading heading ." ". header header header header ." ". divider divider divider divider ." ". content content content content ." ". footer footer buttonGroup buttonGroup ." ". . . . . ."; + } + .spectrum-Dialog .spectrum-Dialog-grid, + .spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + } + .spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) minmax(0, var(--mod-dialog-confirm-close-button-size, var(--spectrum-dialog-confirm-close-button-size))) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero hero" ". . . . . closeButton closeButton" ". heading heading heading heading closeButton closeButton" ". header header header header header ." ". divider divider divider divider divider ." ". content content content content content ." ". footer footer buttonGroup buttonGroup buttonGroup ." ". . . . . . ."; + } + .spectrum-Dialog .spectrum-Dialog-header { + justify-content: flex-start; + } + .spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid, + .spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) 1fr var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: ". . ." ". heading ." ". header ." ". divider ." ". content ." ". buttonGroup ." ". . ."; + } + .spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, + .spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup { + padding-block-start: var(--mod-dialog-confirm-buttongroup-padding-top, var(--spectrum-dialog-confirm-buttongroup-padding-top)); + } + .spectrum-Dialog--fullscreen .spectrum-Dialog-heading, + .spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading { + font-size: var(--mod-dialog-confirm-title-text-size, var(--spectrum-dialog-confirm-title-text-size)); + } +} +@media (forced-colors: active) { + .spectrum-Dialog { + border: solid; + } +} +/*# sourceMappingURL=components/dialog/index.css.map */ diff --git a/components/dialog/index.css b/components/dialog/index.css new file mode 100644 index 0000000000..a6a96d0f9b --- /dev/null +++ b/components/dialog/index.css @@ -0,0 +1,240 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Dialog { + --spectrum-dialog-fullscreen-header-text-size: 28px; + --spectrum-dialog-min-inline-size: 288px; + --spectrum-dialog-confirm-small-width: 400px; + --spectrum-dialog-confirm-medium-width: 480px; + --spectrum-dialog-confirm-large-width: 640px; + --spectrum-dialog-confirm-divider-block-spacing-start: var(--spectrum-spacing-300); + --spectrum-dialog-confirm-divider-block-spacing-end: var(--spectrum-spacing-200); + --spectrum-dialog-confirm-description-text-color: var(--spectrum-gray-800); + --spectrum-dialog-confirm-title-text-color: var(--spectrum-gray-900); + --spectrum-dialog-confirm-description-text-line-height: var(--spectrum-line-height-100); + --spectrum-dialog-confirm-title-text-line-height: var(--spectrum-line-height-100); + --spectrum-dialog-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-dialog-confirm-description-padding: var(--spectrum-spacing-50); + --spectrum-dialog-confirm-description-margin: calc(var(--spectrum-spacing-50) * -1); + --spectrum-dialog-confirm-footer-padding-top: var(--spectrum-spacing-600); + --spectrum-dialog-confirm-gap-size: var(--spectrum-component-pill-edge-to-text-100); + --spectrum-dialog-confirm-buttongroup-padding-top: var(--spectrum-spacing-600); + --spectrum-dialog-confirm-close-button-size: var(--spectrum-component-height-100); + --spectrum-dialog-confirm-close-button-padding: calc(26px - var(--spectrum-component-bottom-to-text-300)); + --spectrum-dialog-confirm-divider-height: var(--spectrum-spacing-50); + display: flex; + box-sizing: border-box; + inline-size: -moz-fit-content; + inline-size: fit-content; + min-inline-size: var(--mod-dialog-min-inline-size, var(--spectrum-dialog-min-inline-size)); + max-inline-size: 100%; + max-block-size: inherit; + outline: none; +} +.spectrum-Dialog--small { + inline-size: var(--mod-dialog-confirm-small-width, var(--spectrum-dialog-confirm-small-width)); +} +.spectrum-Dialog--medium { + inline-size: var(--mod-dialog-confirm-medium-width, var(--spectrum-dialog-confirm-medium-width)); +} +.spectrum-Dialog--large { + inline-size: var(--mod-dialog-confirm-large-width, var(--spectrum-dialog-confirm-large-width)); +} +.spectrum-Dialog-hero { + grid-area: hero; + block-size: var(--mod-dialog-confirm-hero-height, var(--spectrum-dialog-confirm-hero-height)); + border-start-start-radius: var(--mod-dialog-confirm-border-radius, var(--spectrum-dialog-confirm-border-radius)); + border-start-end-radius: var(--mod-dialog-confirm-border-radius, var(--spectrum-dialog-confirm-border-radius)); + background-size: cover; + background-position: 50%; + overflow: hidden; +} +.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero" ". . . . . ." ". heading header header header ." ". divider divider divider divider ." ". content content content content ." ". footer footer buttonGroup buttonGroup ." ". . . . . ."; + inline-size: 100%; +} +.spectrum-Dialog-heading { + grid-area: heading; + margin: 0; + font-size: var(--mod-dialog-confirm-title-text-size, var(--spectrum-dialog-confirm-title-text-size)); + font-weight: var(--mod-dialog-heading-font-weight, var(--spectrum-dialog-heading-font-weight)); + line-height: var(--mod-dialog-confirm-title-text-line-height, var(--spectrum-dialog-confirm-title-text-line-height)); + color: var(--mod-dialog-confirm-title-text-color, var(--spectrum-dialog-confirm-title-text-color)); + outline: none; + padding-inline-end: var(--mod-dialog-confirm-gap-size, var(--spectrum-dialog-confirm-gap-size)); +} +.spectrum-Dialog-heading.spectrum-Dialog-heading--noHeader { + grid-area: heading-start/heading-start/header-end/header-end; + padding-inline-end: 0; +} +.spectrum-Dialog-header { + grid-area: header; + display: flex; + align-items: center; + justify-content: flex-end; + box-sizing: border-box; + outline: none; +} +.spectrum-Dialog .spectrum-Dialog-divider { + grid-area: divider; + inline-size: 100%; + margin-block-start: var(--mod-dialog-confirm-divider-block-spacing-end, var(--spectrum-dialog-confirm-divider-block-spacing-end)); + margin-block-end: var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)); +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-heading + .spectrum-Dialog-divider { + margin-block-end: calc(var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)) - var(--mod-dialog-confirm-description-padding, var(--spectrum-dialog-confirm-description-padding)) * 2); +} +.spectrum-Dialog--noDivider .spectrum-Dialog-divider { + display: none; +} +.spectrum-Dialog--noDivider .spectrum-Dialog-heading { + padding-block-end: calc(var(--mod-dialog-confirm-divider-block-spacing-end, var(--spectrum-dialog-confirm-divider-block-spacing-end)) + var(--mod-dialog-confirm-divider-block-spacing-start, var(--spectrum-dialog-confirm-divider-block-spacing-start)) + var(--mod-dialog-confirm-divider-height, var(--spectrum-dialog-confirm-divider-height))); +} +.spectrum-Dialog-content { + grid-area: content; + box-sizing: border-box; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + outline: none; + font-size: var(--mod-dialog-confirm-description-text-size, var(--spectrum-dialog-confirm-description-text-size)); + font-weight: var(--mod-dialog-confirm-description-font-weight, var(--spectrum-regular-font-weight)); + line-height: var(--mod-dialog-confirm-description-text-line-height, var(--spectrum-dialog-confirm-description-text-line-height)); + color: var(--mod-dialog-confirm-description-text-color, var(--spectrum-dialog-confirm-description-text-color)); + padding: calc(var(--mod-dialog-confirm-description-padding, var(--spectrum-dialog-confirm-description-padding)) * 2); + margin: 0 var(--mod-dialog-confirm-description-margin, var(--spectrum-dialog-confirm-description-margin)); +} +.spectrum-Dialog-footer { + grid-area: footer; + padding-block-start: var(--mod-dialog-confirm-footer-padding-top, var(--spectrum-dialog-confirm-footer-padding-top)); + display: flex; + flex-wrap: wrap; + outline: none; +} +.spectrum-Dialog-footer > *, +.spectrum-Dialog-footer > .spectrum-Button + .spectrum-Button { + margin-block-end: 0; +} +.spectrum-Dialog-buttonGroup { + grid-area: buttonGroup; + padding-block-start: var(--mod-dialog-confirm-buttongroup-padding-top, var(--spectrum-dialog-confirm-buttongroup-padding-top)); + display: flex; + justify-content: flex-end; + padding-inline-start: var(--mod-dialog-confirm-gap-size, var(--spectrum-dialog-confirm-gap-size)); +} +.spectrum-Dialog-buttonGroup.spectrum-Dialog-buttonGroup--noFooter { + grid-area: footer-start/footer-start/buttonGroup-end/buttonGroup-end; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) minmax(0, var(--mod-dialog-confirm-close-button-size, var(--spectrum-dialog-confirm-close-button-size))) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero hero" ". . . . . closeButton closeButton" ". heading header header typeIcon closeButton closeButton" ". divider divider divider divider divider ." ". content content content content content ." ". footer footer buttonGroup buttonGroup buttonGroup ." ". . . . . . ."; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-buttonGroup { + display: none; +} +.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-footer { + grid-area: footer/footer/buttonGroup/buttonGroup; + color: var(--mod-dialog-confirm-description-text-color, var(--spectrum-dialog-confirm-description-text-color)); +} +.spectrum-Dialog-closeButton { + grid-area: closeButton; + align-self: start; + justify-self: end; + margin-inline-end: var(--mod-dialog-confirm-close-button-padding, var(--spectrum-dialog-confirm-close-button-padding)); + margin-block-start: var(--mod-dialog-confirm-close-button-padding, var(--spectrum-dialog-confirm-close-button-padding)); +} +.spectrum-Dialog--fullscreen { + inline-size: 100%; + block-size: 100%; +} +.spectrum-Dialog--fullscreenTakeover { + inline-size: 100%; + block-size: 100%; + border-radius: 0; +} +.spectrum-Dialog--fullscreen, +.spectrum-Dialog--fullscreenTakeover { + max-block-size: none; + max-inline-size: none; +} +.spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid, +.spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) 1fr auto auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto 1fr var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: ". . . . ." ". heading header buttonGroup ." ". divider divider divider ." ". content content content ." ". . . . ."; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-heading, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading { + font-size: var(--mod-dialog-fullscreen-header-text-size, var(--spectrum-dialog-fullscreen-header-text-size)); +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-content, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-content { + max-block-size: none; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreen .spectrum-Dialog-footer, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer { + padding-block-start: 0; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-footer, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer { + display: none; +} +.spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, +.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup { + grid-area: buttonGroup; + align-self: start; +} +@media screen and (width <= 700px) { + .spectrum-Dialog .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero" ". . . . . ." ". heading heading heading heading ." ". header header header header ." ". divider divider divider divider ." ". content content content content ." ". footer footer buttonGroup buttonGroup ." ". . . . . ."; + } + .spectrum-Dialog .spectrum-Dialog-grid, + .spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-rows: auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + } + .spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid { + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto 1fr auto minmax(0, auto) minmax(0, var(--mod-dialog-confirm-close-button-size, var(--spectrum-dialog-confirm-close-button-size))) var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: "hero hero hero hero hero hero hero" ". . . . . closeButton closeButton" ". heading heading heading heading closeButton closeButton" ". header header header header header ." ". divider divider divider divider divider ." ". content content content content content ." ". footer footer buttonGroup buttonGroup buttonGroup ." ". . . . . . ."; + } + .spectrum-Dialog .spectrum-Dialog-header { + justify-content: flex-start; + } + .spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid, + .spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid { + display: grid; + grid-template-columns: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) 1fr var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-rows: var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)) auto auto auto 1fr auto var(--mod-dialog-confirm-padding-grid, var(--spectrum-dialog-confirm-padding-grid)); + grid-template-areas: ". . ." ". heading ." ". header ." ". divider ." ". content ." ". buttonGroup ." ". . ."; + } + .spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup, + .spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup { + padding-block-start: var(--mod-dialog-confirm-buttongroup-padding-top, var(--spectrum-dialog-confirm-buttongroup-padding-top)); + } + .spectrum-Dialog--fullscreen .spectrum-Dialog-heading, + .spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading { + font-size: var(--mod-dialog-confirm-title-text-size, var(--spectrum-dialog-confirm-title-text-size)); + } +} +@media (forced-colors: active) { + .spectrum-Dialog { + border: solid; + } +} +/*# sourceMappingURL=components/dialog/index.css.map */ diff --git a/components/dialog/metadata.json b/components/dialog/metadata.json new file mode 100644 index 0000000000..714e56a0c8 --- /dev/null +++ b/components/dialog/metadata.json @@ -0,0 +1,109 @@ +{ + "selectors": [ + ".spectrum-Dialog", + ".spectrum-Dialog .spectrum-Dialog-divider", + ".spectrum-Dialog .spectrum-Dialog-grid", + ".spectrum-Dialog .spectrum-Dialog-grid,\n\t.spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid", + ".spectrum-Dialog .spectrum-Dialog-header", + ".spectrum-Dialog--fullscreen", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup,\n\t.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup,\n.spectrum-Dialog--fullscreen .spectrum-Dialog-footer,\n.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup,\n.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-buttonGroup,\n.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-buttonGroup", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-content,\n.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-content", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-footer,\n.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-footer", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-heading + .spectrum-Dialog-divider", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-heading,\n\t.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading", + ".spectrum-Dialog--fullscreen .spectrum-Dialog-heading,\n.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading", + ".spectrum-Dialog--fullscreen,\n.spectrum-Dialog--fullscreenTakeover", + ".spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid,\n\t.spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid", + ".spectrum-Dialog--fullscreen.spectrum-Dialog .spectrum-Dialog-grid,\n.spectrum-Dialog--fullscreenTakeover.spectrum-Dialog .spectrum-Dialog-grid", + ".spectrum-Dialog--fullscreenTakeover", + ".spectrum-Dialog--large", + ".spectrum-Dialog--medium", + ".spectrum-Dialog--noDivider .spectrum-Dialog-divider", + ".spectrum-Dialog--noDivider .spectrum-Dialog-heading", + ".spectrum-Dialog--small", + ".spectrum-Dialog-buttonGroup", + ".spectrum-Dialog-buttonGroup.spectrum-Dialog-buttonGroup--noFooter", + ".spectrum-Dialog-closeButton", + ".spectrum-Dialog-content", + ".spectrum-Dialog-footer", + ".spectrum-Dialog-footer > *,\n.spectrum-Dialog-footer > .spectrum-Button + .spectrum-Button", + ".spectrum-Dialog-header", + ".spectrum-Dialog-heading", + ".spectrum-Dialog-heading.spectrum-Dialog-heading--noHeader", + ".spectrum-Dialog-hero", + ".spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid", + ".spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-buttonGroup", + ".spectrum-Dialog.spectrum-Dialog--dismissable .spectrum-Dialog-grid .spectrum-Dialog-footer" + ], + "mods": [ + "--mod-dialog-confirm-border-radius", + "--mod-dialog-confirm-buttongroup-padding-top", + "--mod-dialog-confirm-close-button-padding", + "--mod-dialog-confirm-close-button-size", + "--mod-dialog-confirm-description-font-weight", + "--mod-dialog-confirm-description-margin", + "--mod-dialog-confirm-description-padding", + "--mod-dialog-confirm-description-text-color", + "--mod-dialog-confirm-description-text-line-height", + "--mod-dialog-confirm-description-text-size", + "--mod-dialog-confirm-divider-block-spacing-end", + "--mod-dialog-confirm-divider-block-spacing-start", + "--mod-dialog-confirm-divider-height", + "--mod-dialog-confirm-footer-padding-top", + "--mod-dialog-confirm-gap-size", + "--mod-dialog-confirm-hero-height", + "--mod-dialog-confirm-large-width", + "--mod-dialog-confirm-medium-width", + "--mod-dialog-confirm-padding-grid", + "--mod-dialog-confirm-small-width", + "--mod-dialog-confirm-title-text-color", + "--mod-dialog-confirm-title-text-line-height", + "--mod-dialog-confirm-title-text-size", + "--mod-dialog-fullscreen-header-text-size", + "--mod-dialog-heading-font-weight", + "--mod-dialog-min-inline-size" + ], + "spectrum": [ + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-height-100", + "--spectrum-component-pill-edge-to-text-100", + "--spectrum-dialog-confirm-border-radius", + "--spectrum-dialog-confirm-buttongroup-padding-top", + "--spectrum-dialog-confirm-close-button-padding", + "--spectrum-dialog-confirm-close-button-size", + "--spectrum-dialog-confirm-description-margin", + "--spectrum-dialog-confirm-description-padding", + "--spectrum-dialog-confirm-description-text-color", + "--spectrum-dialog-confirm-description-text-line-height", + "--spectrum-dialog-confirm-description-text-size", + "--spectrum-dialog-confirm-divider-block-spacing-end", + "--spectrum-dialog-confirm-divider-block-spacing-start", + "--spectrum-dialog-confirm-divider-height", + "--spectrum-dialog-confirm-footer-padding-top", + "--spectrum-dialog-confirm-gap-size", + "--spectrum-dialog-confirm-hero-height", + "--spectrum-dialog-confirm-large-width", + "--spectrum-dialog-confirm-medium-width", + "--spectrum-dialog-confirm-padding-grid", + "--spectrum-dialog-confirm-small-width", + "--spectrum-dialog-confirm-title-text-color", + "--spectrum-dialog-confirm-title-text-line-height", + "--spectrum-dialog-confirm-title-text-size", + "--spectrum-dialog-fullscreen-header-text-size", + "--spectrum-dialog-heading-font-weight", + "--spectrum-dialog-min-inline-size", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-line-height-100", + "--spectrum-regular-font-weight", + "--spectrum-spacing-200", + "--spectrum-spacing-300", + "--spectrum-spacing-50", + "--spectrum-spacing-600" + ], + "system": [], + "a11y": [] +} diff --git a/components/dialog/package.json b/components/dialog/package.json new file mode 100644 index 0000000000..c69fa7fc82 --- /dev/null +++ b/components/dialog/package.json @@ -0,0 +1,59 @@ +{ + "name": "@spectrum-css/dialog", + "version": "10.1.2", + "description": "The Spectrum CSS dialog component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/dialog", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/dialog" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/closebutton": ">=5", + "@spectrum-css/divider": ">=3", + "@spectrum-css/modal": ">=5", + "@spectrum-css/tokens": ">=14", + "@spectrum-css/underlay": ">=4" + }, + "peerDependenciesMeta": { + "@spectrum-css/divider": { + "optional": true + }, + "@spectrum-css/modal": { + "optional": true + }, + "@spectrum-css/underlay": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/buttongroup": "workspace:^", + "@spectrum-css/closebutton": "workspace:^", + "@spectrum-css/divider": "workspace:^", + "@spectrum-css/modal": "workspace:^", + "@spectrum-css/tokens": "workspace:^", + "@spectrum-css/underlay": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/dialog/template.js b/components/dialog/template.js new file mode 100644 index 0000000000..712992c72f --- /dev/null +++ b/components/dialog/template.js @@ -0,0 +1,85 @@ +import { Template as CloseButton } from "@spectrum-css/closebutton/stories/template.js"; +import { Template as Divider } from "@spectrum-css/divider/stories/template.js"; +import { Template as Modal } from "@spectrum-css/modal/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Dialog", + isDismissable = true, + isOpen = true, + showModal = false, + heading, + content = [], + customClasses = [], + id, +} = {}, context = {}) => { + const { globals = {}, updateArgs } = context; + const scale = globals.scale ?? "medium"; + const toggleOpen = () => updateArgs({ isOpen: !isOpen }); + + const Dialog = html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + role="dialog" + tabindex="-1" + aria-modal="true" + > +
    + ${when(heading, () => [ + html`

    ${heading}

    `, + Divider({ + horizontal: true, + customClasses: [`${rootClass}-divider`], + }, context), + ])} +
    + ${content.map((c) => (typeof c === "function" ? c({}, context) : c))} +
    + ${when(isDismissable, () => + CloseButton({ + customClasses: [`${rootClass}-closeButton`], + onclick: toggleOpen, + }, context) + )} +
    +
    + `; + + if (showModal) { + return html` + ${Modal({ + isOpen, + content: [ () => Dialog], + }, context)} + `; + } + else { + return Dialog; + } +}; + +export const DialogGroup = Variants({ + Template, + testData: [ + { + showModal: false, + }, + { + testHeading: "Not dismissable", + isDismissable: false, + showModal: false, + }, + ], +}); diff --git a/components/divider/index-base.css b/components/divider/index-base.css new file mode 100644 index 0000000000..ab58b8580a --- /dev/null +++ b/components/divider/index-base.css @@ -0,0 +1,86 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Divider { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-medium); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-medium); + --spectrum-divider-background-color-small: var(--spectrum-gray-300); + --spectrum-divider-background-color-medium: var(--spectrum-gray-300); + --spectrum-divider-background-color-large: var(--spectrum-gray-800); + --spectrum-divider-background-color-small-static-white: var(--spectrum-transparent-white-300); + --spectrum-divider-background-color-medium-static-white: var(--spectrum-transparent-white-300); + --spectrum-divider-background-color-large-static-white: var(--spectrum-transparent-white-800); + --spectrum-divider-background-color-small-static-black: var(--spectrum-transparent-black-300); + --spectrum-divider-background-color-medium-static-black: var(--spectrum-transparent-black-300); + --spectrum-divider-background-color-large-static-black: var(--spectrum-transparent-black-800); +} +.spectrum-Divider--sizeS { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-small); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-small); +} +.spectrum-Divider--sizeM { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-medium); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-medium); +} +.spectrum-Divider--sizeL { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-large); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-large); +} +@media (forced-colors: active) { + .spectrum-Divider, + .spectrum-Divider--sizeL, + .spectrum-Divider--sizeM, + .spectrum-Divider--sizeS { + --spectrum-divider-background-color: CanvasText; + --spectrum-divider-background-color-small-static-white: CanvasText; + --spectrum-divider-background-color-medium-static-white: CanvasText; + --spectrum-divider-background-color-large-static-white: CanvasText; + --spectrum-divider-background-color-small-static-black: CanvasText; + --spectrum-divider-background-color-medium-static-black: CanvasText; + --spectrum-divider-background-color-large-static-black: CanvasText; + } +} +.spectrum-Divider { + block-size: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + inline-size: 100%; + overflow: visible; + border: none; + border-width: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + border-radius: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + background-color: var(--mod-divider-background-color, var(--spectrum-divider-background-color)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeS { + --spectrum-divider-background-color: var(--mod-divider-background-color-small-static-white, var(--spectrum-divider-background-color-small-static-white)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeM { + --spectrum-divider-background-color: var(--mod-divider-background-color-medium-static-white, var(--spectrum-divider-background-color-medium-static-white)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeL { + --spectrum-divider-background-color: var(--mod-divider-background-color-large-static-white, var(--spectrum-divider-background-color-large-static-white)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeS { + --spectrum-divider-background-color: var(--mod-divider-background-color-small-static-black, var(--spectrum-divider-background-color-small-static-black)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeM { + --spectrum-divider-background-color: var(--mod-divider-background-color-medium-static-black, var(--spectrum-divider-background-color-medium-static-black)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeL { + --spectrum-divider-background-color: var(--mod-divider-background-color-large-static-black, var(--spectrum-divider-background-color-large-static-black)); +} +.spectrum-Divider--vertical { + inline-size: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + margin-block: var(--mod-divider-vertical-margin); + block-size: var(--mod-divider-vertical-height, 100%); + align-self: var(--mod-divider-vertical-align); +} +/*# sourceMappingURL=components/divider/index.css.map */ diff --git a/components/divider/index-vars.css b/components/divider/index-vars.css new file mode 100644 index 0000000000..ab58b8580a --- /dev/null +++ b/components/divider/index-vars.css @@ -0,0 +1,86 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Divider { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-medium); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-medium); + --spectrum-divider-background-color-small: var(--spectrum-gray-300); + --spectrum-divider-background-color-medium: var(--spectrum-gray-300); + --spectrum-divider-background-color-large: var(--spectrum-gray-800); + --spectrum-divider-background-color-small-static-white: var(--spectrum-transparent-white-300); + --spectrum-divider-background-color-medium-static-white: var(--spectrum-transparent-white-300); + --spectrum-divider-background-color-large-static-white: var(--spectrum-transparent-white-800); + --spectrum-divider-background-color-small-static-black: var(--spectrum-transparent-black-300); + --spectrum-divider-background-color-medium-static-black: var(--spectrum-transparent-black-300); + --spectrum-divider-background-color-large-static-black: var(--spectrum-transparent-black-800); +} +.spectrum-Divider--sizeS { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-small); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-small); +} +.spectrum-Divider--sizeM { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-medium); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-medium); +} +.spectrum-Divider--sizeL { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-large); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-large); +} +@media (forced-colors: active) { + .spectrum-Divider, + .spectrum-Divider--sizeL, + .spectrum-Divider--sizeM, + .spectrum-Divider--sizeS { + --spectrum-divider-background-color: CanvasText; + --spectrum-divider-background-color-small-static-white: CanvasText; + --spectrum-divider-background-color-medium-static-white: CanvasText; + --spectrum-divider-background-color-large-static-white: CanvasText; + --spectrum-divider-background-color-small-static-black: CanvasText; + --spectrum-divider-background-color-medium-static-black: CanvasText; + --spectrum-divider-background-color-large-static-black: CanvasText; + } +} +.spectrum-Divider { + block-size: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + inline-size: 100%; + overflow: visible; + border: none; + border-width: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + border-radius: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + background-color: var(--mod-divider-background-color, var(--spectrum-divider-background-color)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeS { + --spectrum-divider-background-color: var(--mod-divider-background-color-small-static-white, var(--spectrum-divider-background-color-small-static-white)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeM { + --spectrum-divider-background-color: var(--mod-divider-background-color-medium-static-white, var(--spectrum-divider-background-color-medium-static-white)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeL { + --spectrum-divider-background-color: var(--mod-divider-background-color-large-static-white, var(--spectrum-divider-background-color-large-static-white)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeS { + --spectrum-divider-background-color: var(--mod-divider-background-color-small-static-black, var(--spectrum-divider-background-color-small-static-black)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeM { + --spectrum-divider-background-color: var(--mod-divider-background-color-medium-static-black, var(--spectrum-divider-background-color-medium-static-black)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeL { + --spectrum-divider-background-color: var(--mod-divider-background-color-large-static-black, var(--spectrum-divider-background-color-large-static-black)); +} +.spectrum-Divider--vertical { + inline-size: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + margin-block: var(--mod-divider-vertical-margin); + block-size: var(--mod-divider-vertical-height, 100%); + align-self: var(--mod-divider-vertical-align); +} +/*# sourceMappingURL=components/divider/index.css.map */ diff --git a/components/divider/index.css b/components/divider/index.css new file mode 100644 index 0000000000..ab58b8580a --- /dev/null +++ b/components/divider/index.css @@ -0,0 +1,86 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Divider { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-medium); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-medium); + --spectrum-divider-background-color-small: var(--spectrum-gray-300); + --spectrum-divider-background-color-medium: var(--spectrum-gray-300); + --spectrum-divider-background-color-large: var(--spectrum-gray-800); + --spectrum-divider-background-color-small-static-white: var(--spectrum-transparent-white-300); + --spectrum-divider-background-color-medium-static-white: var(--spectrum-transparent-white-300); + --spectrum-divider-background-color-large-static-white: var(--spectrum-transparent-white-800); + --spectrum-divider-background-color-small-static-black: var(--spectrum-transparent-black-300); + --spectrum-divider-background-color-medium-static-black: var(--spectrum-transparent-black-300); + --spectrum-divider-background-color-large-static-black: var(--spectrum-transparent-black-800); +} +.spectrum-Divider--sizeS { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-small); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-small); +} +.spectrum-Divider--sizeM { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-medium); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-medium); +} +.spectrum-Divider--sizeL { + --spectrum-divider-thickness: var(--spectrum-divider-thickness-large); + --spectrum-divider-background-color: var(--spectrum-divider-background-color-large); +} +@media (forced-colors: active) { + .spectrum-Divider, + .spectrum-Divider--sizeL, + .spectrum-Divider--sizeM, + .spectrum-Divider--sizeS { + --spectrum-divider-background-color: CanvasText; + --spectrum-divider-background-color-small-static-white: CanvasText; + --spectrum-divider-background-color-medium-static-white: CanvasText; + --spectrum-divider-background-color-large-static-white: CanvasText; + --spectrum-divider-background-color-small-static-black: CanvasText; + --spectrum-divider-background-color-medium-static-black: CanvasText; + --spectrum-divider-background-color-large-static-black: CanvasText; + } +} +.spectrum-Divider { + block-size: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + inline-size: 100%; + overflow: visible; + border: none; + border-width: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + border-radius: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + background-color: var(--mod-divider-background-color, var(--spectrum-divider-background-color)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeS { + --spectrum-divider-background-color: var(--mod-divider-background-color-small-static-white, var(--spectrum-divider-background-color-small-static-white)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeM { + --spectrum-divider-background-color: var(--mod-divider-background-color-medium-static-white, var(--spectrum-divider-background-color-medium-static-white)); +} +.spectrum-Divider--staticWhite.spectrum-Divider--sizeL { + --spectrum-divider-background-color: var(--mod-divider-background-color-large-static-white, var(--spectrum-divider-background-color-large-static-white)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeS { + --spectrum-divider-background-color: var(--mod-divider-background-color-small-static-black, var(--spectrum-divider-background-color-small-static-black)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeM { + --spectrum-divider-background-color: var(--mod-divider-background-color-medium-static-black, var(--spectrum-divider-background-color-medium-static-black)); +} +.spectrum-Divider--staticBlack.spectrum-Divider--sizeL { + --spectrum-divider-background-color: var(--mod-divider-background-color-large-static-black, var(--spectrum-divider-background-color-large-static-black)); +} +.spectrum-Divider--vertical { + inline-size: var(--mod-divider-thickness, var(--spectrum-divider-thickness)); + margin-block: var(--mod-divider-vertical-margin); + block-size: var(--mod-divider-vertical-height, 100%); + align-self: var(--mod-divider-vertical-align); +} +/*# sourceMappingURL=components/divider/index.css.map */ diff --git a/components/divider/metadata.json b/components/divider/metadata.json new file mode 100644 index 0000000000..04604ddd99 --- /dev/null +++ b/components/divider/metadata.json @@ -0,0 +1,53 @@ +{ + "selectors": [ + ".spectrum-Divider", + ".spectrum-Divider,\n\t.spectrum-Divider--sizeL,\n\t.spectrum-Divider--sizeM,\n\t.spectrum-Divider--sizeS", + ".spectrum-Divider--sizeL", + ".spectrum-Divider--sizeM", + ".spectrum-Divider--sizeS", + ".spectrum-Divider--staticBlack.spectrum-Divider--sizeL", + ".spectrum-Divider--staticBlack.spectrum-Divider--sizeM", + ".spectrum-Divider--staticBlack.spectrum-Divider--sizeS", + ".spectrum-Divider--staticWhite.spectrum-Divider--sizeL", + ".spectrum-Divider--staticWhite.spectrum-Divider--sizeM", + ".spectrum-Divider--staticWhite.spectrum-Divider--sizeS", + ".spectrum-Divider--vertical" + ], + "mods": [ + "--mod-divider-background-color", + "--mod-divider-background-color-large-static-black", + "--mod-divider-background-color-large-static-white", + "--mod-divider-background-color-medium-static-black", + "--mod-divider-background-color-medium-static-white", + "--mod-divider-background-color-small-static-black", + "--mod-divider-background-color-small-static-white", + "--mod-divider-thickness", + "--mod-divider-vertical-align", + "--mod-divider-vertical-height", + "--mod-divider-vertical-margin" + ], + "spectrum": [ + "--spectrum-divider-background-color", + "--spectrum-divider-background-color-large", + "--spectrum-divider-background-color-large-static-black", + "--spectrum-divider-background-color-large-static-white", + "--spectrum-divider-background-color-medium", + "--spectrum-divider-background-color-medium-static-black", + "--spectrum-divider-background-color-medium-static-white", + "--spectrum-divider-background-color-small", + "--spectrum-divider-background-color-small-static-black", + "--spectrum-divider-background-color-small-static-white", + "--spectrum-divider-thickness", + "--spectrum-divider-thickness-large", + "--spectrum-divider-thickness-medium", + "--spectrum-divider-thickness-small", + "--spectrum-gray-300", + "--spectrum-gray-800", + "--spectrum-transparent-black-300", + "--spectrum-transparent-black-800", + "--spectrum-transparent-white-300", + "--spectrum-transparent-white-800" + ], + "system": [], + "a11y": [] +} diff --git a/components/divider/package.json b/components/divider/package.json new file mode 100644 index 0000000000..26b8e819a7 --- /dev/null +++ b/components/divider/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/divider", + "version": "3.1.1", + "description": "The Spectrum CSS divider component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/divider", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/divider" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/divider/template.js b/components/divider/template.js new file mode 100644 index 0000000000..8b57e9f04d --- /dev/null +++ b/components/divider/template.js @@ -0,0 +1,51 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { capitalize, lowerCase, upperCase } from "lodash-es"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Divider", + size = "m", + tag = "hr", + staticColor, + vertical = false, + customClasses = [], +}) => { + if (tag === "hr") { + return html`
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap({ + "min-height": vertical == true ? "20px" : undefined, + height: vertical == true ? "auto" : undefined, + "align-self": vertical == true ? "stretch" : undefined, + })} + role="separator" + />`; + } + + return html`
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap({ + "min-height": vertical == true ? "20px" : undefined, + height: vertical == true ? "auto" : undefined, + "align-self": vertical == true ? "stretch" : undefined, + })} + role="separator" + >
    `; +}; diff --git a/components/dropindicator/index-base.css b/components/dropindicator/index-base.css new file mode 100644 index 0000000000..53a6677dc4 --- /dev/null +++ b/components/dropindicator/index-base.css @@ -0,0 +1,67 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +@media (forced-colors: active) { + .spectrum-DropIndicator { + --highcontrast-dropindicator-color: Highlight; + } +} +.spectrum-DropIndicator { + --spectrum-dropindicator-border-color: var(--spectrum-dropindicator-color); + --spectrum-dropindicator-circle-color: var(--spectrum-dropindicator-color); + --spectrum-dropindicator-border-size: var(--spectrum-border-width-200); + --spectrum-dropindicator-circle-size: 12px; + position: relative; + background: var(--highcontrast-dropindicator-color, var(--mod-dropindicator-border-color, var(--spectrum-dropindicator-border-color))); +} +.spectrum-DropIndicator:after, +.spectrum-DropIndicator:before { + content: ""; + position: absolute; + inline-size: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + block-size: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + border-radius: 50%; + border: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) solid; + box-sizing: border-box; + border-color: var(--highcontrast-dropindicator-color, var(--mod-dropindicator-circle-color, var(--spectrum-dropindicator-circle-color))); +} +.spectrum-DropIndicator--horizontal { + block-size: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)); + margin: 0 var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); +} +.spectrum-DropIndicator--horizontal:after, +.spectrum-DropIndicator--horizontal:before { + inset-block-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1 / 2 + var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) / 2); +} +.spectrum-DropIndicator--horizontal:before { + inset-inline-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--horizontal:after { + inset-inline-end: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--vertical { + inline-size: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)); + margin-block: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + margin-inline: 0; +} +.spectrum-DropIndicator--vertical:after, +.spectrum-DropIndicator--vertical:before { + inset-inline-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1 / 2 + var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) / 2); +} +.spectrum-DropIndicator--vertical:before { + inset-block-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--vertical:after { + inset-block-end: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +/*# sourceMappingURL=components/dropindicator/index.css.map */ diff --git a/components/dropindicator/index-vars.css b/components/dropindicator/index-vars.css new file mode 100644 index 0000000000..53a6677dc4 --- /dev/null +++ b/components/dropindicator/index-vars.css @@ -0,0 +1,67 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +@media (forced-colors: active) { + .spectrum-DropIndicator { + --highcontrast-dropindicator-color: Highlight; + } +} +.spectrum-DropIndicator { + --spectrum-dropindicator-border-color: var(--spectrum-dropindicator-color); + --spectrum-dropindicator-circle-color: var(--spectrum-dropindicator-color); + --spectrum-dropindicator-border-size: var(--spectrum-border-width-200); + --spectrum-dropindicator-circle-size: 12px; + position: relative; + background: var(--highcontrast-dropindicator-color, var(--mod-dropindicator-border-color, var(--spectrum-dropindicator-border-color))); +} +.spectrum-DropIndicator:after, +.spectrum-DropIndicator:before { + content: ""; + position: absolute; + inline-size: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + block-size: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + border-radius: 50%; + border: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) solid; + box-sizing: border-box; + border-color: var(--highcontrast-dropindicator-color, var(--mod-dropindicator-circle-color, var(--spectrum-dropindicator-circle-color))); +} +.spectrum-DropIndicator--horizontal { + block-size: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)); + margin: 0 var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); +} +.spectrum-DropIndicator--horizontal:after, +.spectrum-DropIndicator--horizontal:before { + inset-block-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1 / 2 + var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) / 2); +} +.spectrum-DropIndicator--horizontal:before { + inset-inline-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--horizontal:after { + inset-inline-end: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--vertical { + inline-size: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)); + margin-block: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + margin-inline: 0; +} +.spectrum-DropIndicator--vertical:after, +.spectrum-DropIndicator--vertical:before { + inset-inline-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1 / 2 + var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) / 2); +} +.spectrum-DropIndicator--vertical:before { + inset-block-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--vertical:after { + inset-block-end: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +/*# sourceMappingURL=components/dropindicator/index.css.map */ diff --git a/components/dropindicator/index.css b/components/dropindicator/index.css new file mode 100644 index 0000000000..53a6677dc4 --- /dev/null +++ b/components/dropindicator/index.css @@ -0,0 +1,67 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +@media (forced-colors: active) { + .spectrum-DropIndicator { + --highcontrast-dropindicator-color: Highlight; + } +} +.spectrum-DropIndicator { + --spectrum-dropindicator-border-color: var(--spectrum-dropindicator-color); + --spectrum-dropindicator-circle-color: var(--spectrum-dropindicator-color); + --spectrum-dropindicator-border-size: var(--spectrum-border-width-200); + --spectrum-dropindicator-circle-size: 12px; + position: relative; + background: var(--highcontrast-dropindicator-color, var(--mod-dropindicator-border-color, var(--spectrum-dropindicator-border-color))); +} +.spectrum-DropIndicator:after, +.spectrum-DropIndicator:before { + content: ""; + position: absolute; + inline-size: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + block-size: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + border-radius: 50%; + border: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) solid; + box-sizing: border-box; + border-color: var(--highcontrast-dropindicator-color, var(--mod-dropindicator-circle-color, var(--spectrum-dropindicator-circle-color))); +} +.spectrum-DropIndicator--horizontal { + block-size: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)); + margin: 0 var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); +} +.spectrum-DropIndicator--horizontal:after, +.spectrum-DropIndicator--horizontal:before { + inset-block-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1 / 2 + var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) / 2); +} +.spectrum-DropIndicator--horizontal:before { + inset-inline-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--horizontal:after { + inset-inline-end: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--vertical { + inline-size: var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)); + margin-block: var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)); + margin-inline: 0; +} +.spectrum-DropIndicator--vertical:after, +.spectrum-DropIndicator--vertical:before { + inset-inline-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1 / 2 + var(--mod-dropindicator-border-size, var(--spectrum-dropindicator-border-size)) / 2); +} +.spectrum-DropIndicator--vertical:before { + inset-block-start: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +.spectrum-DropIndicator--vertical:after { + inset-block-end: calc(var(--mod-dropindicator-circle-size, var(--spectrum-dropindicator-circle-size)) * -1); +} +/*# sourceMappingURL=components/dropindicator/index.css.map */ diff --git a/components/dropindicator/metadata.json b/components/dropindicator/metadata.json new file mode 100644 index 0000000000..3644cbf7dd --- /dev/null +++ b/components/dropindicator/metadata.json @@ -0,0 +1,30 @@ +{ + "selectors": [ + ".spectrum-DropIndicator", + ".spectrum-DropIndicator--horizontal", + ".spectrum-DropIndicator--horizontal:after", + ".spectrum-DropIndicator--horizontal:after,\n.spectrum-DropIndicator--horizontal:before", + ".spectrum-DropIndicator--horizontal:before", + ".spectrum-DropIndicator--vertical", + ".spectrum-DropIndicator--vertical:after", + ".spectrum-DropIndicator--vertical:after,\n.spectrum-DropIndicator--vertical:before", + ".spectrum-DropIndicator--vertical:before", + ".spectrum-DropIndicator:after,\n.spectrum-DropIndicator:before" + ], + "mods": [ + "--mod-dropindicator-border-color", + "--mod-dropindicator-border-size", + "--mod-dropindicator-circle-color", + "--mod-dropindicator-circle-size" + ], + "spectrum": [ + "--spectrum-border-width-200", + "--spectrum-dropindicator-border-color", + "--spectrum-dropindicator-border-size", + "--spectrum-dropindicator-circle-color", + "--spectrum-dropindicator-circle-size", + "--spectrum-dropindicator-color" + ], + "system": [], + "a11y": ["--highcontrast-dropindicator-color"] +} diff --git a/components/dropindicator/package.json b/components/dropindicator/package.json new file mode 100644 index 0000000000..3d0cc7411f --- /dev/null +++ b/components/dropindicator/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/dropindicator", + "version": "5.1.1", + "description": "The Spectrum CSS dropindicator component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/dropindicator", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/dropindicator" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/dropindicator/template.js b/components/dropindicator/template.js new file mode 100644 index 0000000000..a7d83f8802 --- /dev/null +++ b/components/dropindicator/template.js @@ -0,0 +1,27 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-DropIndicator", + customClasses = [], + customStyles = {}, + direction = "vertical", + size = "300px", +}) => html` +
    ({ ...a, [c]: true }), {}), + })} + style=${ifDefined(styleMap({ + blockSize: direction == "vertical" ? size : undefined, + inlineSize: direction == "horizontal" ? size : undefined, + ...customStyles, + }))} + >
    +`; diff --git a/components/dropzone/index-base.css b/components/dropzone/index-base.css new file mode 100644 index 0000000000..e85a426984 --- /dev/null +++ b/components/dropzone/index-base.css @@ -0,0 +1,143 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-DropZone { + --spectrum-drop-zone-padding: var(--spectrum-spacing-400); + --spectrum-drop-zone-illustration-to-heading: var(--spectrum-spacing-400); + --spectrum-drop-zone-heading-to-body: var(--spectrum-spacing-75); + --spectrum-drop-zone-border-width: var(--spectrum-border-width-200); + --spectrum-drop-zone-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-drop-zone-border-color: var(--spectrum-gray-300); + --spectrum-drop-zone-heading-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-drop-zone-heading-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-drop-zone-heading-font-size: var(--spectrum-drop-zone-title-size); + --spectrum-drop-zone-heading-line-height: var(--spectrum-heading-line-height); + --spectrum-drop-zone-heading-color: var(--spectrum-heading-color); + --spectrum-drop-zone-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-drop-zone-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-drop-zone-body-font-size: var(--spectrum-drop-zone-body-size); + --spectrum-drop-zone-body-line-height: var(--spectrum-body-line-height); + --spectrum-drop-zone-body-color: var(--spectrum-body-color); + --spectrum-drop-zone-background-color: var(--spectrum-drop-zone-background-color-rgb); + --spectrum-drop-zone-border-color-hover: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-illustration-color: var(--spectrum-neutral-visual-color); + --spectrum-drop-zone-illustration-color-hover: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-content-height: var(--spectrum-component-height-300); + --spectrum-drop-zone-content-max-width: var(--spectrum-drop-zone-content-maximum-width); + --spectrum-drop-zone-content-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-drop-zone-content-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-drop-zone-content-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-drop-zone-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-content-font-weight: var(--spectrum-bold-font-weight); + --spectrum-drop-zone-content-font-style: var(--spectrum-default-font-style); + --spectrum-drop-zone-content-font-size: var(--spectrum-font-size-300); + --spectrum-drop-zone-content-line-height: var(--spectrum-line-height-100); + --spectrum-drop-zone-content-background-color: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-content-color: var(--spectrum-white); + --mod-illustrated-message-content-maximum-width: var(--mod-drop-zone-content-maximum-width, var(--spectrum-drop-zone-content-maximum-width)); + --mod-illustrated-message-illustration-color: var(--mod-drop-zone-illustration-color, var(--spectrum-drop-zone-illustration-color)); + --mod-illustrated-message-title-to-heading: var(--mod-drop-zone-illustration-to-heading, var(--spectrum-drop-zone-illustration-to-heading)); + --mod-illustrated-message-heading-to-body: var(--mod-drop-zone-heading-to-body, var(--spectrum-drop-zone-heading-to-body)); + --mod-illustrated-message-title-font-family: var(--mod-drop-zone-heading-font-family, var(--spectrum-drop-zone-heading-font-family)); + --mod-illustrated-message-title-font-weight: var(--mod-drop-zone-heading-font-weight, var(--spectrum-drop-zone-heading-font-weight)); + --mod-illustrated-message-title-font-style: var(--mod-drop-zone-heading-font-style, var(--spectrum-drop-zone-heading-font-style)); + --mod-illustrated-message-title-font-size: var(--mod-drop-zone-heading-font-size, var(--spectrum-drop-zone-heading-font-size)); + --mod-illustrated-message-title-line-height: var(--mod-drop-zone-heading-line-height, var(--spectrum-drop-zone-heading-line-height)); + --mod-illustrated-message-title-color: var(--mod-drop-zone-heading-color, var(--spectrum-drop-zone-heading-color)); + --mod-illustrated-message-description-position: relative; + --mod-illustrated-message-description-z-index: 1; + --mod-illustrated-message-heading-to-description: 0; + --mod-illustrated-message-description-font-family: var(--mod-drop-zone-body-font-family, var(--spectrum-drop-zone-body-font-family)); + --mod-illustrated-message-description-font-weight: var(--mod-drop-zone-body-font-weight, var(--spectrum-drop-zone-body-font-weight)); + --mod-illustrated-message-description-font-style: var(--mod-drop-zone-body-font-style, var(--spectrum-drop-zone-body-font-style)); + --mod-illustrated-message-description-font-size: var(--mod-drop-zone-body-font-size, var(--spectrum-drop-zone-body-font-size)); + --mod-illustrated-message-description-line-height: var(--mod-drop-zone-body-line-height, var(--spectrum-drop-zone-body-line-height)); + --mod-illustrated-message-description-color: var(--mod-drop-zone-body-color, var(--spectrum-drop-zone-body-color)); + --mod-actionbutton-font-size: var(--mod-drop-zone-content-font-size, var(--spectrum-drop-zone-content-font-size)); + --mod-actionbutton-label-color: var(--mod-drop-zone-content-color, var(--spectrum-drop-zone-content-color)); + --mod-actionbutton-edge-to-text: var(--mod-drop-zone-content-edge-to-text, var(--spectrum-drop-zone-content-edge-to-text)); +} +.spectrum-DropZone:lang(ja), +.spectrum-DropZone:lang(ko), +.spectrum-DropZone:lang(zh) { + --spectrum-drop-zone-heading-font-size: var(--spectrum-drop-zone-cjk-title-size); +} +.spectrum-DropZone { + box-sizing: border-box; + inline-size: var(--mod-drop-zone-width, var(--spectrum-drop-zone-width)); + padding: calc(var(--mod-drop-zone-padding, var(--spectrum-drop-zone-padding)) - var(--mod-drop-zone-border-width, var(--spectrum-drop-zone-border-width))); + text-align: center; + border-color: var(--mod-drop-zone-border-color, var(--spectrum-drop-zone-border-color)); + border-width: var(--mod-drop-zone-border-width, var(--spectrum-drop-zone-border-width)); + border-radius: var(--mod-drop-zone-corner-radius, var(--spectrum-drop-zone-corner-radius)); + border-style: var(--mod-drop-zone-border-style, dashed); + background-size: cover; + background-color: var(--mod-drop-zone-background-color, var(--spectrum-drop-zone-background-color)); +} +.spectrum-DropZone.is-dragged { + --mod-drop-zone-border-style: var(--mod-drop-zone-border-style--dragged, var(--mod-drop-zone-border-style-dragged, solid)); + --mod-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color), var(--mod-drop-zone-background-color-opacity, var(--spectrum-drop-zone-background-color-opacity))); + --spectrum-drop-zone-border-color: var(--highcontrast-drop-zone-border-color-hover, var(--mod-drop-zone-border-color-hover, var(--spectrum-drop-zone-border-color-hover))); + --mod-illustrated-message-illustration-color: var(--mod-drop-zone-illustration-color-hover, var(--spectrum-drop-zone-illustration-color-hover)); +} +.spectrum-DropZone.is-filled { + --mod-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color), var(--mod-drop-zone-background-color-opacity-filled, var(--spectrum-drop-zone-background-color-opacity-filled))); + --mod-illustrated-message-display: none; +} +.spectrum-DropZone.is-filled.is-dragged { + --mod-drop-zone-content-display: flex; +} +.spectrum-DropZone:focus-visible { + --mod-drop-zone-border-style: solid; + --spectrum-drop-zone-border-color: var(--highcontrast-drop-zone-border-color-hover, var(--mod-drop-zone-border-color-hover, var(--spectrum-drop-zone-border-color-hover))); + outline: 0; +} +.spectrum-DropZone-content { + display: var(--mod-drop-zone-content-display, none); + block-size: 100%; + align-items: center; + justify-content: center; + position: relative; + z-index: 1; +} +.spectrum-DropZone-button { + box-sizing: border-box; + border: none; + block-size: var(--mod-drop-zone-content-height, var(--spectrum-drop-zone-content-height)); + max-inline-size: var(--mod-drop-zone-content-max-width, var(--spectrum-drop-zone-content-max-width)); + padding-block-start: var(--mod-drop-zone-content-top-to-text, var(--spectrum-drop-zone-content-top-to-text)); + padding-block-end: var(--mod-drop-zone-content-bottom-to-text, var(--spectrum-drop-zone-content-bottom-to-text)); + font-family: var(--mod-drop-zone-content-font-family, var(--spectrum-drop-zone-content-font-family)); + font-weight: var(--mod-drop-zone-content-font-weight, var(--spectrum-drop-zone-content-font-weight)); + font-style: var(--mod-drop-zone-content-font-style, var(--spectrum-drop-zone-content-font-style)); + line-height: var(--mod-drop-zone-content-line-height, var(--spectrum-drop-zone-content-line-height)); +} +.spectrum-DropZone-button, +.spectrum-DropZone-button:focus { + background-color: var(--mod-drop-zone-content-background-color, var(--spectrum-drop-zone-content-background-color)); +} +@media (hover: hover) { + .spectrum-DropZone-button:hover { + background-color: var(--mod-drop-zone-content-background-color, var(--spectrum-drop-zone-content-background-color)); + } +} +@media (forced-colors: active) { + .spectrum-DropZone { + --highcontrast-drop-zone-illustration-color: CanvasText; + --highcontrast-drop-zone-border-color-hover: Highlight; + --highcontrast-illustrated-message-illustration-color: var(--highcontrast-drop-zone-illustration-color); + } +} +/*# sourceMappingURL=components/dropzone/index.css.map */ diff --git a/components/dropzone/index-vars.css b/components/dropzone/index-vars.css new file mode 100644 index 0000000000..e85a426984 --- /dev/null +++ b/components/dropzone/index-vars.css @@ -0,0 +1,143 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-DropZone { + --spectrum-drop-zone-padding: var(--spectrum-spacing-400); + --spectrum-drop-zone-illustration-to-heading: var(--spectrum-spacing-400); + --spectrum-drop-zone-heading-to-body: var(--spectrum-spacing-75); + --spectrum-drop-zone-border-width: var(--spectrum-border-width-200); + --spectrum-drop-zone-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-drop-zone-border-color: var(--spectrum-gray-300); + --spectrum-drop-zone-heading-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-drop-zone-heading-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-drop-zone-heading-font-size: var(--spectrum-drop-zone-title-size); + --spectrum-drop-zone-heading-line-height: var(--spectrum-heading-line-height); + --spectrum-drop-zone-heading-color: var(--spectrum-heading-color); + --spectrum-drop-zone-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-drop-zone-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-drop-zone-body-font-size: var(--spectrum-drop-zone-body-size); + --spectrum-drop-zone-body-line-height: var(--spectrum-body-line-height); + --spectrum-drop-zone-body-color: var(--spectrum-body-color); + --spectrum-drop-zone-background-color: var(--spectrum-drop-zone-background-color-rgb); + --spectrum-drop-zone-border-color-hover: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-illustration-color: var(--spectrum-neutral-visual-color); + --spectrum-drop-zone-illustration-color-hover: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-content-height: var(--spectrum-component-height-300); + --spectrum-drop-zone-content-max-width: var(--spectrum-drop-zone-content-maximum-width); + --spectrum-drop-zone-content-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-drop-zone-content-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-drop-zone-content-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-drop-zone-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-content-font-weight: var(--spectrum-bold-font-weight); + --spectrum-drop-zone-content-font-style: var(--spectrum-default-font-style); + --spectrum-drop-zone-content-font-size: var(--spectrum-font-size-300); + --spectrum-drop-zone-content-line-height: var(--spectrum-line-height-100); + --spectrum-drop-zone-content-background-color: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-content-color: var(--spectrum-white); + --mod-illustrated-message-content-maximum-width: var(--mod-drop-zone-content-maximum-width, var(--spectrum-drop-zone-content-maximum-width)); + --mod-illustrated-message-illustration-color: var(--mod-drop-zone-illustration-color, var(--spectrum-drop-zone-illustration-color)); + --mod-illustrated-message-title-to-heading: var(--mod-drop-zone-illustration-to-heading, var(--spectrum-drop-zone-illustration-to-heading)); + --mod-illustrated-message-heading-to-body: var(--mod-drop-zone-heading-to-body, var(--spectrum-drop-zone-heading-to-body)); + --mod-illustrated-message-title-font-family: var(--mod-drop-zone-heading-font-family, var(--spectrum-drop-zone-heading-font-family)); + --mod-illustrated-message-title-font-weight: var(--mod-drop-zone-heading-font-weight, var(--spectrum-drop-zone-heading-font-weight)); + --mod-illustrated-message-title-font-style: var(--mod-drop-zone-heading-font-style, var(--spectrum-drop-zone-heading-font-style)); + --mod-illustrated-message-title-font-size: var(--mod-drop-zone-heading-font-size, var(--spectrum-drop-zone-heading-font-size)); + --mod-illustrated-message-title-line-height: var(--mod-drop-zone-heading-line-height, var(--spectrum-drop-zone-heading-line-height)); + --mod-illustrated-message-title-color: var(--mod-drop-zone-heading-color, var(--spectrum-drop-zone-heading-color)); + --mod-illustrated-message-description-position: relative; + --mod-illustrated-message-description-z-index: 1; + --mod-illustrated-message-heading-to-description: 0; + --mod-illustrated-message-description-font-family: var(--mod-drop-zone-body-font-family, var(--spectrum-drop-zone-body-font-family)); + --mod-illustrated-message-description-font-weight: var(--mod-drop-zone-body-font-weight, var(--spectrum-drop-zone-body-font-weight)); + --mod-illustrated-message-description-font-style: var(--mod-drop-zone-body-font-style, var(--spectrum-drop-zone-body-font-style)); + --mod-illustrated-message-description-font-size: var(--mod-drop-zone-body-font-size, var(--spectrum-drop-zone-body-font-size)); + --mod-illustrated-message-description-line-height: var(--mod-drop-zone-body-line-height, var(--spectrum-drop-zone-body-line-height)); + --mod-illustrated-message-description-color: var(--mod-drop-zone-body-color, var(--spectrum-drop-zone-body-color)); + --mod-actionbutton-font-size: var(--mod-drop-zone-content-font-size, var(--spectrum-drop-zone-content-font-size)); + --mod-actionbutton-label-color: var(--mod-drop-zone-content-color, var(--spectrum-drop-zone-content-color)); + --mod-actionbutton-edge-to-text: var(--mod-drop-zone-content-edge-to-text, var(--spectrum-drop-zone-content-edge-to-text)); +} +.spectrum-DropZone:lang(ja), +.spectrum-DropZone:lang(ko), +.spectrum-DropZone:lang(zh) { + --spectrum-drop-zone-heading-font-size: var(--spectrum-drop-zone-cjk-title-size); +} +.spectrum-DropZone { + box-sizing: border-box; + inline-size: var(--mod-drop-zone-width, var(--spectrum-drop-zone-width)); + padding: calc(var(--mod-drop-zone-padding, var(--spectrum-drop-zone-padding)) - var(--mod-drop-zone-border-width, var(--spectrum-drop-zone-border-width))); + text-align: center; + border-color: var(--mod-drop-zone-border-color, var(--spectrum-drop-zone-border-color)); + border-width: var(--mod-drop-zone-border-width, var(--spectrum-drop-zone-border-width)); + border-radius: var(--mod-drop-zone-corner-radius, var(--spectrum-drop-zone-corner-radius)); + border-style: var(--mod-drop-zone-border-style, dashed); + background-size: cover; + background-color: var(--mod-drop-zone-background-color, var(--spectrum-drop-zone-background-color)); +} +.spectrum-DropZone.is-dragged { + --mod-drop-zone-border-style: var(--mod-drop-zone-border-style--dragged, var(--mod-drop-zone-border-style-dragged, solid)); + --mod-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color), var(--mod-drop-zone-background-color-opacity, var(--spectrum-drop-zone-background-color-opacity))); + --spectrum-drop-zone-border-color: var(--highcontrast-drop-zone-border-color-hover, var(--mod-drop-zone-border-color-hover, var(--spectrum-drop-zone-border-color-hover))); + --mod-illustrated-message-illustration-color: var(--mod-drop-zone-illustration-color-hover, var(--spectrum-drop-zone-illustration-color-hover)); +} +.spectrum-DropZone.is-filled { + --mod-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color), var(--mod-drop-zone-background-color-opacity-filled, var(--spectrum-drop-zone-background-color-opacity-filled))); + --mod-illustrated-message-display: none; +} +.spectrum-DropZone.is-filled.is-dragged { + --mod-drop-zone-content-display: flex; +} +.spectrum-DropZone:focus-visible { + --mod-drop-zone-border-style: solid; + --spectrum-drop-zone-border-color: var(--highcontrast-drop-zone-border-color-hover, var(--mod-drop-zone-border-color-hover, var(--spectrum-drop-zone-border-color-hover))); + outline: 0; +} +.spectrum-DropZone-content { + display: var(--mod-drop-zone-content-display, none); + block-size: 100%; + align-items: center; + justify-content: center; + position: relative; + z-index: 1; +} +.spectrum-DropZone-button { + box-sizing: border-box; + border: none; + block-size: var(--mod-drop-zone-content-height, var(--spectrum-drop-zone-content-height)); + max-inline-size: var(--mod-drop-zone-content-max-width, var(--spectrum-drop-zone-content-max-width)); + padding-block-start: var(--mod-drop-zone-content-top-to-text, var(--spectrum-drop-zone-content-top-to-text)); + padding-block-end: var(--mod-drop-zone-content-bottom-to-text, var(--spectrum-drop-zone-content-bottom-to-text)); + font-family: var(--mod-drop-zone-content-font-family, var(--spectrum-drop-zone-content-font-family)); + font-weight: var(--mod-drop-zone-content-font-weight, var(--spectrum-drop-zone-content-font-weight)); + font-style: var(--mod-drop-zone-content-font-style, var(--spectrum-drop-zone-content-font-style)); + line-height: var(--mod-drop-zone-content-line-height, var(--spectrum-drop-zone-content-line-height)); +} +.spectrum-DropZone-button, +.spectrum-DropZone-button:focus { + background-color: var(--mod-drop-zone-content-background-color, var(--spectrum-drop-zone-content-background-color)); +} +@media (hover: hover) { + .spectrum-DropZone-button:hover { + background-color: var(--mod-drop-zone-content-background-color, var(--spectrum-drop-zone-content-background-color)); + } +} +@media (forced-colors: active) { + .spectrum-DropZone { + --highcontrast-drop-zone-illustration-color: CanvasText; + --highcontrast-drop-zone-border-color-hover: Highlight; + --highcontrast-illustrated-message-illustration-color: var(--highcontrast-drop-zone-illustration-color); + } +} +/*# sourceMappingURL=components/dropzone/index.css.map */ diff --git a/components/dropzone/index.css b/components/dropzone/index.css new file mode 100644 index 0000000000..e85a426984 --- /dev/null +++ b/components/dropzone/index.css @@ -0,0 +1,143 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-DropZone { + --spectrum-drop-zone-padding: var(--spectrum-spacing-400); + --spectrum-drop-zone-illustration-to-heading: var(--spectrum-spacing-400); + --spectrum-drop-zone-heading-to-body: var(--spectrum-spacing-75); + --spectrum-drop-zone-border-width: var(--spectrum-border-width-200); + --spectrum-drop-zone-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-drop-zone-border-color: var(--spectrum-gray-300); + --spectrum-drop-zone-heading-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-drop-zone-heading-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-drop-zone-heading-font-size: var(--spectrum-drop-zone-title-size); + --spectrum-drop-zone-heading-line-height: var(--spectrum-heading-line-height); + --spectrum-drop-zone-heading-color: var(--spectrum-heading-color); + --spectrum-drop-zone-body-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-body-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-drop-zone-body-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-drop-zone-body-font-size: var(--spectrum-drop-zone-body-size); + --spectrum-drop-zone-body-line-height: var(--spectrum-body-line-height); + --spectrum-drop-zone-body-color: var(--spectrum-body-color); + --spectrum-drop-zone-background-color: var(--spectrum-drop-zone-background-color-rgb); + --spectrum-drop-zone-border-color-hover: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-illustration-color: var(--spectrum-neutral-visual-color); + --spectrum-drop-zone-illustration-color-hover: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-content-height: var(--spectrum-component-height-300); + --spectrum-drop-zone-content-max-width: var(--spectrum-drop-zone-content-maximum-width); + --spectrum-drop-zone-content-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-drop-zone-content-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-drop-zone-content-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-drop-zone-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-drop-zone-content-font-weight: var(--spectrum-bold-font-weight); + --spectrum-drop-zone-content-font-style: var(--spectrum-default-font-style); + --spectrum-drop-zone-content-font-size: var(--spectrum-font-size-300); + --spectrum-drop-zone-content-line-height: var(--spectrum-line-height-100); + --spectrum-drop-zone-content-background-color: var(--spectrum-accent-visual-color); + --spectrum-drop-zone-content-color: var(--spectrum-white); + --mod-illustrated-message-content-maximum-width: var(--mod-drop-zone-content-maximum-width, var(--spectrum-drop-zone-content-maximum-width)); + --mod-illustrated-message-illustration-color: var(--mod-drop-zone-illustration-color, var(--spectrum-drop-zone-illustration-color)); + --mod-illustrated-message-title-to-heading: var(--mod-drop-zone-illustration-to-heading, var(--spectrum-drop-zone-illustration-to-heading)); + --mod-illustrated-message-heading-to-body: var(--mod-drop-zone-heading-to-body, var(--spectrum-drop-zone-heading-to-body)); + --mod-illustrated-message-title-font-family: var(--mod-drop-zone-heading-font-family, var(--spectrum-drop-zone-heading-font-family)); + --mod-illustrated-message-title-font-weight: var(--mod-drop-zone-heading-font-weight, var(--spectrum-drop-zone-heading-font-weight)); + --mod-illustrated-message-title-font-style: var(--mod-drop-zone-heading-font-style, var(--spectrum-drop-zone-heading-font-style)); + --mod-illustrated-message-title-font-size: var(--mod-drop-zone-heading-font-size, var(--spectrum-drop-zone-heading-font-size)); + --mod-illustrated-message-title-line-height: var(--mod-drop-zone-heading-line-height, var(--spectrum-drop-zone-heading-line-height)); + --mod-illustrated-message-title-color: var(--mod-drop-zone-heading-color, var(--spectrum-drop-zone-heading-color)); + --mod-illustrated-message-description-position: relative; + --mod-illustrated-message-description-z-index: 1; + --mod-illustrated-message-heading-to-description: 0; + --mod-illustrated-message-description-font-family: var(--mod-drop-zone-body-font-family, var(--spectrum-drop-zone-body-font-family)); + --mod-illustrated-message-description-font-weight: var(--mod-drop-zone-body-font-weight, var(--spectrum-drop-zone-body-font-weight)); + --mod-illustrated-message-description-font-style: var(--mod-drop-zone-body-font-style, var(--spectrum-drop-zone-body-font-style)); + --mod-illustrated-message-description-font-size: var(--mod-drop-zone-body-font-size, var(--spectrum-drop-zone-body-font-size)); + --mod-illustrated-message-description-line-height: var(--mod-drop-zone-body-line-height, var(--spectrum-drop-zone-body-line-height)); + --mod-illustrated-message-description-color: var(--mod-drop-zone-body-color, var(--spectrum-drop-zone-body-color)); + --mod-actionbutton-font-size: var(--mod-drop-zone-content-font-size, var(--spectrum-drop-zone-content-font-size)); + --mod-actionbutton-label-color: var(--mod-drop-zone-content-color, var(--spectrum-drop-zone-content-color)); + --mod-actionbutton-edge-to-text: var(--mod-drop-zone-content-edge-to-text, var(--spectrum-drop-zone-content-edge-to-text)); +} +.spectrum-DropZone:lang(ja), +.spectrum-DropZone:lang(ko), +.spectrum-DropZone:lang(zh) { + --spectrum-drop-zone-heading-font-size: var(--spectrum-drop-zone-cjk-title-size); +} +.spectrum-DropZone { + box-sizing: border-box; + inline-size: var(--mod-drop-zone-width, var(--spectrum-drop-zone-width)); + padding: calc(var(--mod-drop-zone-padding, var(--spectrum-drop-zone-padding)) - var(--mod-drop-zone-border-width, var(--spectrum-drop-zone-border-width))); + text-align: center; + border-color: var(--mod-drop-zone-border-color, var(--spectrum-drop-zone-border-color)); + border-width: var(--mod-drop-zone-border-width, var(--spectrum-drop-zone-border-width)); + border-radius: var(--mod-drop-zone-corner-radius, var(--spectrum-drop-zone-corner-radius)); + border-style: var(--mod-drop-zone-border-style, dashed); + background-size: cover; + background-color: var(--mod-drop-zone-background-color, var(--spectrum-drop-zone-background-color)); +} +.spectrum-DropZone.is-dragged { + --mod-drop-zone-border-style: var(--mod-drop-zone-border-style--dragged, var(--mod-drop-zone-border-style-dragged, solid)); + --mod-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color), var(--mod-drop-zone-background-color-opacity, var(--spectrum-drop-zone-background-color-opacity))); + --spectrum-drop-zone-border-color: var(--highcontrast-drop-zone-border-color-hover, var(--mod-drop-zone-border-color-hover, var(--spectrum-drop-zone-border-color-hover))); + --mod-illustrated-message-illustration-color: var(--mod-drop-zone-illustration-color-hover, var(--spectrum-drop-zone-illustration-color-hover)); +} +.spectrum-DropZone.is-filled { + --mod-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color), var(--mod-drop-zone-background-color-opacity-filled, var(--spectrum-drop-zone-background-color-opacity-filled))); + --mod-illustrated-message-display: none; +} +.spectrum-DropZone.is-filled.is-dragged { + --mod-drop-zone-content-display: flex; +} +.spectrum-DropZone:focus-visible { + --mod-drop-zone-border-style: solid; + --spectrum-drop-zone-border-color: var(--highcontrast-drop-zone-border-color-hover, var(--mod-drop-zone-border-color-hover, var(--spectrum-drop-zone-border-color-hover))); + outline: 0; +} +.spectrum-DropZone-content { + display: var(--mod-drop-zone-content-display, none); + block-size: 100%; + align-items: center; + justify-content: center; + position: relative; + z-index: 1; +} +.spectrum-DropZone-button { + box-sizing: border-box; + border: none; + block-size: var(--mod-drop-zone-content-height, var(--spectrum-drop-zone-content-height)); + max-inline-size: var(--mod-drop-zone-content-max-width, var(--spectrum-drop-zone-content-max-width)); + padding-block-start: var(--mod-drop-zone-content-top-to-text, var(--spectrum-drop-zone-content-top-to-text)); + padding-block-end: var(--mod-drop-zone-content-bottom-to-text, var(--spectrum-drop-zone-content-bottom-to-text)); + font-family: var(--mod-drop-zone-content-font-family, var(--spectrum-drop-zone-content-font-family)); + font-weight: var(--mod-drop-zone-content-font-weight, var(--spectrum-drop-zone-content-font-weight)); + font-style: var(--mod-drop-zone-content-font-style, var(--spectrum-drop-zone-content-font-style)); + line-height: var(--mod-drop-zone-content-line-height, var(--spectrum-drop-zone-content-line-height)); +} +.spectrum-DropZone-button, +.spectrum-DropZone-button:focus { + background-color: var(--mod-drop-zone-content-background-color, var(--spectrum-drop-zone-content-background-color)); +} +@media (hover: hover) { + .spectrum-DropZone-button:hover { + background-color: var(--mod-drop-zone-content-background-color, var(--spectrum-drop-zone-content-background-color)); + } +} +@media (forced-colors: active) { + .spectrum-DropZone { + --highcontrast-drop-zone-illustration-color: CanvasText; + --highcontrast-drop-zone-border-color-hover: Highlight; + --highcontrast-illustrated-message-illustration-color: var(--highcontrast-drop-zone-illustration-color); + } +} +/*# sourceMappingURL=components/dropzone/index.css.map */ diff --git a/components/dropzone/metadata.json b/components/dropzone/metadata.json new file mode 100644 index 0000000000..5e3ad284fb --- /dev/null +++ b/components/dropzone/metadata.json @@ -0,0 +1,132 @@ +{ + "selectors": [ + ".spectrum-DropZone", + ".spectrum-DropZone-button", + ".spectrum-DropZone-button,\n.spectrum-DropZone-button:focus", + ".spectrum-DropZone-button:hover", + ".spectrum-DropZone-content", + ".spectrum-DropZone.is-dragged", + ".spectrum-DropZone.is-filled", + ".spectrum-DropZone.is-filled.is-dragged", + ".spectrum-DropZone:focus-visible", + ".spectrum-DropZone:lang(ja),\n.spectrum-DropZone:lang(ko),\n.spectrum-DropZone:lang(zh)" + ], + "mods": [ + "--mod-drop-zone-background-color", + "--mod-drop-zone-background-color-opacity", + "--mod-drop-zone-background-color-opacity-filled", + "--mod-drop-zone-body-color", + "--mod-drop-zone-body-font-family", + "--mod-drop-zone-body-font-size", + "--mod-drop-zone-body-font-style", + "--mod-drop-zone-body-font-weight", + "--mod-drop-zone-body-line-height", + "--mod-drop-zone-border-color", + "--mod-drop-zone-border-color-hover", + "--mod-drop-zone-border-style", + "--mod-drop-zone-border-style--dragged", + "--mod-drop-zone-border-style-dragged", + "--mod-drop-zone-border-width", + "--mod-drop-zone-content-background-color", + "--mod-drop-zone-content-bottom-to-text", + "--mod-drop-zone-content-color", + "--mod-drop-zone-content-display", + "--mod-drop-zone-content-edge-to-text", + "--mod-drop-zone-content-font-family", + "--mod-drop-zone-content-font-size", + "--mod-drop-zone-content-font-style", + "--mod-drop-zone-content-font-weight", + "--mod-drop-zone-content-height", + "--mod-drop-zone-content-line-height", + "--mod-drop-zone-content-max-width", + "--mod-drop-zone-content-maximum-width", + "--mod-drop-zone-content-top-to-text", + "--mod-drop-zone-corner-radius", + "--mod-drop-zone-heading-color", + "--mod-drop-zone-heading-font-family", + "--mod-drop-zone-heading-font-size", + "--mod-drop-zone-heading-font-style", + "--mod-drop-zone-heading-font-weight", + "--mod-drop-zone-heading-line-height", + "--mod-drop-zone-heading-to-body", + "--mod-drop-zone-illustration-color", + "--mod-drop-zone-illustration-color-hover", + "--mod-drop-zone-illustration-to-heading", + "--mod-drop-zone-padding", + "--mod-drop-zone-width" + ], + "spectrum": [ + "--spectrum-accent-visual-color", + "--spectrum-body-color", + "--spectrum-body-line-height", + "--spectrum-body-sans-serif-font-style", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-bold-font-weight", + "--spectrum-border-width-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-edge-to-text-300", + "--spectrum-component-height-300", + "--spectrum-component-top-to-text-300", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-drop-zone-background-color", + "--spectrum-drop-zone-background-color-opacity", + "--spectrum-drop-zone-background-color-opacity-filled", + "--spectrum-drop-zone-background-color-rgb", + "--spectrum-drop-zone-body-color", + "--spectrum-drop-zone-body-font-family", + "--spectrum-drop-zone-body-font-size", + "--spectrum-drop-zone-body-font-style", + "--spectrum-drop-zone-body-font-weight", + "--spectrum-drop-zone-body-line-height", + "--spectrum-drop-zone-body-size", + "--spectrum-drop-zone-border-color", + "--spectrum-drop-zone-border-color-hover", + "--spectrum-drop-zone-border-width", + "--spectrum-drop-zone-cjk-title-size", + "--spectrum-drop-zone-content-background-color", + "--spectrum-drop-zone-content-bottom-to-text", + "--spectrum-drop-zone-content-color", + "--spectrum-drop-zone-content-edge-to-text", + "--spectrum-drop-zone-content-font-family", + "--spectrum-drop-zone-content-font-size", + "--spectrum-drop-zone-content-font-style", + "--spectrum-drop-zone-content-font-weight", + "--spectrum-drop-zone-content-height", + "--spectrum-drop-zone-content-line-height", + "--spectrum-drop-zone-content-max-width", + "--spectrum-drop-zone-content-maximum-width", + "--spectrum-drop-zone-content-top-to-text", + "--spectrum-drop-zone-corner-radius", + "--spectrum-drop-zone-heading-color", + "--spectrum-drop-zone-heading-font-family", + "--spectrum-drop-zone-heading-font-size", + "--spectrum-drop-zone-heading-font-style", + "--spectrum-drop-zone-heading-font-weight", + "--spectrum-drop-zone-heading-line-height", + "--spectrum-drop-zone-heading-to-body", + "--spectrum-drop-zone-illustration-color", + "--spectrum-drop-zone-illustration-color-hover", + "--spectrum-drop-zone-illustration-to-heading", + "--spectrum-drop-zone-padding", + "--spectrum-drop-zone-title-size", + "--spectrum-drop-zone-width", + "--spectrum-font-size-300", + "--spectrum-gray-300", + "--spectrum-heading-color", + "--spectrum-heading-line-height", + "--spectrum-heading-sans-serif-font-style", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-line-height-100", + "--spectrum-neutral-visual-color", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-400", + "--spectrum-spacing-75", + "--spectrum-white" + ], + "system": [], + "a11y": [ + "--highcontrast-drop-zone-border-color-hover", + "--highcontrast-drop-zone-illustration-color" + ] +} diff --git a/components/dropzone/package.json b/components/dropzone/package.json new file mode 100644 index 0000000000..2d592ed6ae --- /dev/null +++ b/components/dropzone/package.json @@ -0,0 +1,53 @@ +{ + "name": "@spectrum-css/dropzone", + "version": "6.1.1", + "description": "The Spectrum CSS dropzone component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/dropzone", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/dropzone" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/illustratedmessage": ">=7", + "@spectrum-css/link": ">=5", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/actionbutton": { + "optional": true + }, + "@spectrum-css/link": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/illustratedmessage": "workspace:^", + "@spectrum-css/link": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/dropzone/template.js b/components/dropzone/template.js new file mode 100644 index 0000000000..38264d4ab3 --- /dev/null +++ b/components/dropzone/template.js @@ -0,0 +1,79 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Template as IllustratedMessage } from "@spectrum-css/illustratedmessage/stories/template.js"; +import { Template as Link } from "@spectrum-css/link/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ( + { + rootClass = "spectrum-DropZone", + isDragged = false, + isFilled = false, + customClasses = [], + customStyles = {}, + heading, + description, + label, + id, + }, + context +) => html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + role="region" + tabindex="0" + style=${styleMap(customStyles)} + > + ${IllustratedMessage({ heading, description }, context)} + +
    + ${ActionButton( + { + label, + customClasses: [`${rootClass}-button`], + }, + context + )} +
    +
    +`; + +export const DropzoneGroup = Variants({ + Template, + testData: [ + {}, + { + testHeading: "Verbose example", + heading: "Drag and drop your file to upload", + description: [ + () => { + return html`You can also ${Link({ url: "#", text: "select a file" })} from your computer.`; + }, + ], + label: "Drag and drop to replace file upload", + }, + ], + stateData: [ + { + testHeading: "Dragged", + isDragged: true, + }, + { + testHeading: "Drag with fill", + isFilled: true, + isDragged: true, + }, + ], + withSizes: false, +}); diff --git a/components/fieldgroup/index-base.css b/components/fieldgroup/index-base.css new file mode 100644 index 0000000000..b1b0231010 --- /dev/null +++ b/components/fieldgroup/index-base.css @@ -0,0 +1,48 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FieldGroup { + --spectrum-fieldgroup-margin: var(--spectrum-spacing-300); + --spectrum-fieldgroup-readonly-delimiter: "\002c"; + display: flex; + flex-flow: column wrap; +} +.spectrum-FieldGroup--toplabel { + flex-direction: column; +} +.spectrum-FieldGroup--sidelabel { + flex-direction: row; +} +.spectrum-FieldGroupInputLayout { + display: flex; + flex-flow: column wrap; +} +.spectrum-FieldGroup--vertical .spectrum-FieldGroupInputLayout { + flex-direction: column; +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout { + flex-direction: row; +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-FieldGroup-item:not(:last-child) { + margin-inline-end: var(--spectrum-fieldgroup-margin); +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-HelpText { + flex-basis: 100%; +} +.spectrum-FieldGroup .spectrum-Checkbox.is-readOnly .spectrum-Checkbox-box { + display: none; +} +.spectrum-FieldGroup .spectrum-Checkbox.is-readOnly:not(:last-child) .spectrum-Checkbox-label:after { + content: var(--spectrum-fieldgroup-readonly-delimiter); +} +/*# sourceMappingURL=components/fieldgroup/index.css.map */ diff --git a/components/fieldgroup/index-vars.css b/components/fieldgroup/index-vars.css new file mode 100644 index 0000000000..b1b0231010 --- /dev/null +++ b/components/fieldgroup/index-vars.css @@ -0,0 +1,48 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FieldGroup { + --spectrum-fieldgroup-margin: var(--spectrum-spacing-300); + --spectrum-fieldgroup-readonly-delimiter: "\002c"; + display: flex; + flex-flow: column wrap; +} +.spectrum-FieldGroup--toplabel { + flex-direction: column; +} +.spectrum-FieldGroup--sidelabel { + flex-direction: row; +} +.spectrum-FieldGroupInputLayout { + display: flex; + flex-flow: column wrap; +} +.spectrum-FieldGroup--vertical .spectrum-FieldGroupInputLayout { + flex-direction: column; +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout { + flex-direction: row; +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-FieldGroup-item:not(:last-child) { + margin-inline-end: var(--spectrum-fieldgroup-margin); +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-HelpText { + flex-basis: 100%; +} +.spectrum-FieldGroup .spectrum-Checkbox.is-readOnly .spectrum-Checkbox-box { + display: none; +} +.spectrum-FieldGroup .spectrum-Checkbox.is-readOnly:not(:last-child) .spectrum-Checkbox-label:after { + content: var(--spectrum-fieldgroup-readonly-delimiter); +} +/*# sourceMappingURL=components/fieldgroup/index.css.map */ diff --git a/components/fieldgroup/index.css b/components/fieldgroup/index.css new file mode 100644 index 0000000000..b1b0231010 --- /dev/null +++ b/components/fieldgroup/index.css @@ -0,0 +1,48 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FieldGroup { + --spectrum-fieldgroup-margin: var(--spectrum-spacing-300); + --spectrum-fieldgroup-readonly-delimiter: "\002c"; + display: flex; + flex-flow: column wrap; +} +.spectrum-FieldGroup--toplabel { + flex-direction: column; +} +.spectrum-FieldGroup--sidelabel { + flex-direction: row; +} +.spectrum-FieldGroupInputLayout { + display: flex; + flex-flow: column wrap; +} +.spectrum-FieldGroup--vertical .spectrum-FieldGroupInputLayout { + flex-direction: column; +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout { + flex-direction: row; +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-FieldGroup-item:not(:last-child) { + margin-inline-end: var(--spectrum-fieldgroup-margin); +} +.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-HelpText { + flex-basis: 100%; +} +.spectrum-FieldGroup .spectrum-Checkbox.is-readOnly .spectrum-Checkbox-box { + display: none; +} +.spectrum-FieldGroup .spectrum-Checkbox.is-readOnly:not(:last-child) .spectrum-Checkbox-label:after { + content: var(--spectrum-fieldgroup-readonly-delimiter); +} +/*# sourceMappingURL=components/fieldgroup/index.css.map */ diff --git a/components/fieldgroup/metadata.json b/components/fieldgroup/metadata.json new file mode 100644 index 0000000000..973e8c984e --- /dev/null +++ b/components/fieldgroup/metadata.json @@ -0,0 +1,22 @@ +{ + "selectors": [ + ".spectrum-FieldGroup", + ".spectrum-FieldGroup .spectrum-Checkbox.is-readOnly .spectrum-Checkbox-box", + ".spectrum-FieldGroup .spectrum-Checkbox.is-readOnly:not(:last-child) .spectrum-Checkbox-label:after", + ".spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout", + ".spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-FieldGroup-item:not(:last-child)", + ".spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-HelpText", + ".spectrum-FieldGroup--sidelabel", + ".spectrum-FieldGroup--toplabel", + ".spectrum-FieldGroup--vertical .spectrum-FieldGroupInputLayout", + ".spectrum-FieldGroupInputLayout" + ], + "mods": [], + "spectrum": [ + "--spectrum-fieldgroup-margin", + "--spectrum-fieldgroup-readonly-delimiter", + "--spectrum-spacing-300" + ], + "system": [], + "a11y": [] +} diff --git a/components/fieldgroup/package.json b/components/fieldgroup/package.json new file mode 100644 index 0000000000..98c322e778 --- /dev/null +++ b/components/fieldgroup/package.json @@ -0,0 +1,56 @@ +{ + "name": "@spectrum-css/fieldgroup", + "version": "5.1.1", + "description": "The Spectrum CSS fieldgroup component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/fieldgroup", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/fieldgroup" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/checkbox": ">=9", + "@spectrum-css/helptext": ">=5", + "@spectrum-css/radio": ">=9", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/checkbox": { + "optional": true + }, + "@spectrum-css/helptext": { + "optional": true + }, + "@spectrum-css/radio": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/checkbox": "workspace:^", + "@spectrum-css/helptext": "workspace:^", + "@spectrum-css/radio": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/fieldgroup/template.js b/components/fieldgroup/template.js new file mode 100644 index 0000000000..3a379c7c7a --- /dev/null +++ b/components/fieldgroup/template.js @@ -0,0 +1,163 @@ +import { Template as Checkbox } from "@spectrum-css/checkbox/stories/template.js"; +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { Template as HelpText } from "@spectrum-css/helptext/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ( + { + rootClass = "spectrum-FieldGroup", + customClasses = [], + layout = "vertical", + inputType = "radio", + isReadOnly = false, + isRequired = false, + label, + labelPosition, + isInvalid, + helpText, + items = [], + } = {}, + context = {}, +) => html` +
    ({ ...a, [c]: true }), {}), + })} + aria-invalid=${ifDefined(isInvalid ? "true" : undefined)} + type=${ifDefined(inputType)} + aria-readonly=${ifDefined(isReadOnly ? "true" : undefined)} + aria-required=${ifDefined(isRequired ? "true" : undefined)} + > + ${when(label, () => + FieldLabel( + { + size: "m", + label, + alignment: labelPosition === "side" ? "right" : "top", + }, + context, + ), + )} +
    + ${repeat( + items, + (item) => item.id, + (item) => { + if (typeof item === "function") { + return item({}, context); + } + return item; + }, + )} + ${when(helpText, () => + HelpText( + { + size: "m", + text: helpText, + variant: isInvalid ? "negative" : "neutral", + }, + context, + ), + )} +
    +
    +`; + +export const FieldGroupSet = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[ + {}, + { + heading: "Horizontal", + layout: "horizontal", + items: [ + Checkbox({ + id: "apple", + label: "Apples are best", + customClasses: ["spectrum-FieldGroup-item"], + }), + Checkbox({ + id: "banana", + label: "Bananas forever", + customClasses: ["spectrum-FieldGroup-item"], + }), + Checkbox({ + id: "cherry", + label: "Cherries ftw", + customClasses: ["spectrum-FieldGroup-item"], + }), + ], + }, + { + heading: "Label Position: Side", + label: "Pick one:", + labelPosition: "side", + helpText: "Select an option to continue.", + }, + { + heading: "Invalid", + isInvalid: true, + helpText: "Select an option to continue.", + }, + ].map( + ({ heading, ...item }) => html` +
    + ${Typography( + { + semantics: "heading", + size: "l", + content: [heading], + customClasses: ["chromatic-ignore"], + }, + context, + )} +
    + ${Template( + { + ...args, + ...item, + }, + context, + )} +
    +
    + `, + )} +
    +`; diff --git a/components/fieldlabel/form.template.js b/components/fieldlabel/form.template.js new file mode 100644 index 0000000000..87b1679ac0 --- /dev/null +++ b/components/fieldlabel/form.template.js @@ -0,0 +1,88 @@ +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Form", + labelsAbove = false, + customClasses = [], + customStyles = {}, + id, + items = [], +}, context) => html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + > + ${repeat(items, (item) => item.id, ({ label, content, ...item }) => { + if (!content) return; + + return html` +
    + ${when(label, () => FieldLabel({ + label, + forInput: item.id, + alignment: labelsAbove ? undefined : "left", + }, context))} +
    + ${typeof content === "function" ? content({ ...item }, context) : content} +
    +
    + `; + })} +
    +`; + +export const FormGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[{}, { + heading: "Labels above", + labelsAbove: true, + }].map(({ heading, ...item }) => html` +
    + ${Typography({ + semantics: "heading", + size: "s", + content: [heading], + }, context)} +
    + ${Template({ + ...args, + ...item, + }, context)} +
    +
    + `)} +
    +`; diff --git a/components/fieldlabel/index-base.css b/components/fieldlabel/index-base.css new file mode 100644 index 0000000000..499e1590ae --- /dev/null +++ b/components/fieldlabel/index-base.css @@ -0,0 +1,137 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FieldLabel { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-medium); + --spectrum-fieldlabel-font-weight: var(--spectrum-regular-font-weight); + --spectrum-fieldlabel-line-height: var(--spectrum-line-height-100); + --spectrum-fieldlabel-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-FieldLabel--sizeS { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-75); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-small); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-100); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-small); +} +.spectrum-FieldLabel--sizeM { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-75); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-medium); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-medium); +} +.spectrum-FieldLabel--sizeL { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-100); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-100); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-large); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-large); +} +.spectrum-FieldLabel--sizeXL { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-200); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-200); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-extra-large); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-extra-large); +} +.spectrum-FieldLabel { + display: block; + box-sizing: border-box; + min-block-size: var(--mod-fieldlabel-min-height, var(--spectrum-fieldlabel-min-height)); + padding-block: var(--mod-field-label-top-to-text, var(--spectrum-fieldlabel-top-to-text)) var(--mod-field-label-bottom-to-text, var(--spectrum-fieldlabel-bottom-to-text)); + padding-inline: 0; + font-size: var(--mod-fieldlabel-font-size, var(--spectrum-fieldlabel-font-size)); + font-weight: var(--mod-fieldlabel-font-weight, var(--spectrum-fieldlabel-font-weight)); + line-height: var(--mod-fieldlabel-line-height, var(--spectrum-fieldlabel-line-height)); + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; + color: var(--spectrum-fieldlabel-color); +} +.spectrum-FieldLabel:lang(ja), +.spectrum-FieldLabel:lang(ko), +.spectrum-FieldLabel:lang(zh) { + line-height: var(--mod-fieldlabel-line-height-cjk, var(--spectrum-fieldlabel-line-height-cjk)); +} +.spectrum-FieldLabel-requiredIcon { + margin-block: 0; + margin-inline: var(--mod-field-label-text-to-asterisk, var(--spectrum-field-label-text-to-asterisk)) 0; + vertical-align: var(--mod-field-label-asterisk-vertical-align, baseline); +} +.spectrum-FieldLabel--left, +.spectrum-FieldLabel--right { + display: inline-block; + margin-block-start: var(--mod-fieldlabel-side-margin-block-start, var(--spectrum-fieldlabel-side-margin-block-start)); + margin-block-end: 0; + margin-inline-end: var(--mod-fieldlabel-side-padding-right, var(--spectrum-fieldlabel-side-padding-right)); + vertical-align: top; +} +.spectrum-FieldLabel--right { + text-align: end; +} +.spectrum-Form { + --spectrum-tableform-item-block-spacing: var(--spectrum-spacing-300); + margin: 0; + display: grid; + grid-template-columns: var(--mod-form-grid-template-columns, auto auto); + inline-size: var(--mod-form-inline-size, -moz-fit-content); + inline-size: var(--mod-form-inline-size, fit-content); + justify-content: start; + row-gap: var(--mod-form-item-block-spacing, var(--mod-tableform-item-block-spacing, var(--spectrum-tableform-item-block-spacing))); +} +.spectrum-Form-item { + display: contents; +} +@supports (grid-template-columns: subgrid) { + .spectrum-Form-item { + display: grid; + grid-column: span 2; + grid-template-columns: subgrid; + } +} +.spectrum-Form-itemField, +.spectrum-Form-itemLabel { + display: block; +} +.spectrum-Form-itemField > * { + vertical-align: top; +} +.spectrum-Form--labelsAbove { + --mod-form-item-block-spacing: var(--mod-form-item-block-spacing-labels-above, var(--mod-tableform-item-block-spacing-labels-above, var(--spectrum-spacing-200))); + --mod-form-grid-template-columns: var(--mod-form-grid-template-columns-labels-above, auto); +} +.spectrum-Form--labelsAbove .spectrum-Form-item { + display: block; +} +.spectrum-FieldLabel.is-disabled, +.spectrum-FieldLabel.is-disabled .spectrum-FieldLabel-requiredIcon, +.spectrum-Form-itemLabel.is-disabled, +.spectrum-Form-itemLabel.is-disabled .spectrum-FieldLabel-requiredIcon { + color: var(--highcontrast-disabled-content-color, var(--mod-disabled-content-color, var(--spectrum-disabled-content-color))); +} +@media (forced-colors: active) { + .spectrum-FieldLabel { + --highcontrast-disabled-content-color: GrayText; + } +} +/*# sourceMappingURL=components/fieldlabel/index.css.map */ diff --git a/components/fieldlabel/index-vars.css b/components/fieldlabel/index-vars.css new file mode 100644 index 0000000000..499e1590ae --- /dev/null +++ b/components/fieldlabel/index-vars.css @@ -0,0 +1,137 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FieldLabel { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-medium); + --spectrum-fieldlabel-font-weight: var(--spectrum-regular-font-weight); + --spectrum-fieldlabel-line-height: var(--spectrum-line-height-100); + --spectrum-fieldlabel-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-FieldLabel--sizeS { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-75); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-small); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-100); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-small); +} +.spectrum-FieldLabel--sizeM { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-75); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-medium); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-medium); +} +.spectrum-FieldLabel--sizeL { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-100); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-100); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-large); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-large); +} +.spectrum-FieldLabel--sizeXL { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-200); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-200); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-extra-large); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-extra-large); +} +.spectrum-FieldLabel { + display: block; + box-sizing: border-box; + min-block-size: var(--mod-fieldlabel-min-height, var(--spectrum-fieldlabel-min-height)); + padding-block: var(--mod-field-label-top-to-text, var(--spectrum-fieldlabel-top-to-text)) var(--mod-field-label-bottom-to-text, var(--spectrum-fieldlabel-bottom-to-text)); + padding-inline: 0; + font-size: var(--mod-fieldlabel-font-size, var(--spectrum-fieldlabel-font-size)); + font-weight: var(--mod-fieldlabel-font-weight, var(--spectrum-fieldlabel-font-weight)); + line-height: var(--mod-fieldlabel-line-height, var(--spectrum-fieldlabel-line-height)); + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; + color: var(--spectrum-fieldlabel-color); +} +.spectrum-FieldLabel:lang(ja), +.spectrum-FieldLabel:lang(ko), +.spectrum-FieldLabel:lang(zh) { + line-height: var(--mod-fieldlabel-line-height-cjk, var(--spectrum-fieldlabel-line-height-cjk)); +} +.spectrum-FieldLabel-requiredIcon { + margin-block: 0; + margin-inline: var(--mod-field-label-text-to-asterisk, var(--spectrum-field-label-text-to-asterisk)) 0; + vertical-align: var(--mod-field-label-asterisk-vertical-align, baseline); +} +.spectrum-FieldLabel--left, +.spectrum-FieldLabel--right { + display: inline-block; + margin-block-start: var(--mod-fieldlabel-side-margin-block-start, var(--spectrum-fieldlabel-side-margin-block-start)); + margin-block-end: 0; + margin-inline-end: var(--mod-fieldlabel-side-padding-right, var(--spectrum-fieldlabel-side-padding-right)); + vertical-align: top; +} +.spectrum-FieldLabel--right { + text-align: end; +} +.spectrum-Form { + --spectrum-tableform-item-block-spacing: var(--spectrum-spacing-300); + margin: 0; + display: grid; + grid-template-columns: var(--mod-form-grid-template-columns, auto auto); + inline-size: var(--mod-form-inline-size, -moz-fit-content); + inline-size: var(--mod-form-inline-size, fit-content); + justify-content: start; + row-gap: var(--mod-form-item-block-spacing, var(--mod-tableform-item-block-spacing, var(--spectrum-tableform-item-block-spacing))); +} +.spectrum-Form-item { + display: contents; +} +@supports (grid-template-columns: subgrid) { + .spectrum-Form-item { + display: grid; + grid-column: span 2; + grid-template-columns: subgrid; + } +} +.spectrum-Form-itemField, +.spectrum-Form-itemLabel { + display: block; +} +.spectrum-Form-itemField > * { + vertical-align: top; +} +.spectrum-Form--labelsAbove { + --mod-form-item-block-spacing: var(--mod-form-item-block-spacing-labels-above, var(--mod-tableform-item-block-spacing-labels-above, var(--spectrum-spacing-200))); + --mod-form-grid-template-columns: var(--mod-form-grid-template-columns-labels-above, auto); +} +.spectrum-Form--labelsAbove .spectrum-Form-item { + display: block; +} +.spectrum-FieldLabel.is-disabled, +.spectrum-FieldLabel.is-disabled .spectrum-FieldLabel-requiredIcon, +.spectrum-Form-itemLabel.is-disabled, +.spectrum-Form-itemLabel.is-disabled .spectrum-FieldLabel-requiredIcon { + color: var(--highcontrast-disabled-content-color, var(--mod-disabled-content-color, var(--spectrum-disabled-content-color))); +} +@media (forced-colors: active) { + .spectrum-FieldLabel { + --highcontrast-disabled-content-color: GrayText; + } +} +/*# sourceMappingURL=components/fieldlabel/index.css.map */ diff --git a/components/fieldlabel/index.css b/components/fieldlabel/index.css new file mode 100644 index 0000000000..499e1590ae --- /dev/null +++ b/components/fieldlabel/index.css @@ -0,0 +1,137 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FieldLabel { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-medium); + --spectrum-fieldlabel-font-weight: var(--spectrum-regular-font-weight); + --spectrum-fieldlabel-line-height: var(--spectrum-line-height-100); + --spectrum-fieldlabel-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-FieldLabel--sizeS { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-75); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-small); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-100); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-small); +} +.spectrum-FieldLabel--sizeM { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-75); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-75); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-medium); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-medium); +} +.spectrum-FieldLabel--sizeL { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-100); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-100); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-large); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-large); +} +.spectrum-FieldLabel--sizeXL { + --spectrum-fieldlabel-min-height: var(--spectrum-component-height-200); + --spectrum-fieldlabel-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-fieldlabel-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-fieldlabel-font-size: var(--spectrum-font-size-200); + --spectrum-fieldlabel-side-margin-block-start: var(--spectrum-field-label-top-margin-extra-large); + --spectrum-fieldlabel-side-padding-right: var(--spectrum-spacing-200); + --spectrum-field-label-text-to-asterisk: var(--spectrum-field-label-text-to-asterisk-extra-large); +} +.spectrum-FieldLabel { + display: block; + box-sizing: border-box; + min-block-size: var(--mod-fieldlabel-min-height, var(--spectrum-fieldlabel-min-height)); + padding-block: var(--mod-field-label-top-to-text, var(--spectrum-fieldlabel-top-to-text)) var(--mod-field-label-bottom-to-text, var(--spectrum-fieldlabel-bottom-to-text)); + padding-inline: 0; + font-size: var(--mod-fieldlabel-font-size, var(--spectrum-fieldlabel-font-size)); + font-weight: var(--mod-fieldlabel-font-weight, var(--spectrum-fieldlabel-font-weight)); + line-height: var(--mod-fieldlabel-line-height, var(--spectrum-fieldlabel-line-height)); + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; + color: var(--spectrum-fieldlabel-color); +} +.spectrum-FieldLabel:lang(ja), +.spectrum-FieldLabel:lang(ko), +.spectrum-FieldLabel:lang(zh) { + line-height: var(--mod-fieldlabel-line-height-cjk, var(--spectrum-fieldlabel-line-height-cjk)); +} +.spectrum-FieldLabel-requiredIcon { + margin-block: 0; + margin-inline: var(--mod-field-label-text-to-asterisk, var(--spectrum-field-label-text-to-asterisk)) 0; + vertical-align: var(--mod-field-label-asterisk-vertical-align, baseline); +} +.spectrum-FieldLabel--left, +.spectrum-FieldLabel--right { + display: inline-block; + margin-block-start: var(--mod-fieldlabel-side-margin-block-start, var(--spectrum-fieldlabel-side-margin-block-start)); + margin-block-end: 0; + margin-inline-end: var(--mod-fieldlabel-side-padding-right, var(--spectrum-fieldlabel-side-padding-right)); + vertical-align: top; +} +.spectrum-FieldLabel--right { + text-align: end; +} +.spectrum-Form { + --spectrum-tableform-item-block-spacing: var(--spectrum-spacing-300); + margin: 0; + display: grid; + grid-template-columns: var(--mod-form-grid-template-columns, auto auto); + inline-size: var(--mod-form-inline-size, -moz-fit-content); + inline-size: var(--mod-form-inline-size, fit-content); + justify-content: start; + row-gap: var(--mod-form-item-block-spacing, var(--mod-tableform-item-block-spacing, var(--spectrum-tableform-item-block-spacing))); +} +.spectrum-Form-item { + display: contents; +} +@supports (grid-template-columns: subgrid) { + .spectrum-Form-item { + display: grid; + grid-column: span 2; + grid-template-columns: subgrid; + } +} +.spectrum-Form-itemField, +.spectrum-Form-itemLabel { + display: block; +} +.spectrum-Form-itemField > * { + vertical-align: top; +} +.spectrum-Form--labelsAbove { + --mod-form-item-block-spacing: var(--mod-form-item-block-spacing-labels-above, var(--mod-tableform-item-block-spacing-labels-above, var(--spectrum-spacing-200))); + --mod-form-grid-template-columns: var(--mod-form-grid-template-columns-labels-above, auto); +} +.spectrum-Form--labelsAbove .spectrum-Form-item { + display: block; +} +.spectrum-FieldLabel.is-disabled, +.spectrum-FieldLabel.is-disabled .spectrum-FieldLabel-requiredIcon, +.spectrum-Form-itemLabel.is-disabled, +.spectrum-Form-itemLabel.is-disabled .spectrum-FieldLabel-requiredIcon { + color: var(--highcontrast-disabled-content-color, var(--mod-disabled-content-color, var(--spectrum-disabled-content-color))); +} +@media (forced-colors: active) { + .spectrum-FieldLabel { + --highcontrast-disabled-content-color: GrayText; + } +} +/*# sourceMappingURL=components/fieldlabel/index.css.map */ diff --git a/components/fieldlabel/metadata.json b/components/fieldlabel/metadata.json new file mode 100644 index 0000000000..01cf2c4dc8 --- /dev/null +++ b/components/fieldlabel/metadata.json @@ -0,0 +1,85 @@ +{ + "selectors": [ + ".spectrum-FieldLabel", + ".spectrum-FieldLabel--left,\n.spectrum-FieldLabel--right", + ".spectrum-FieldLabel--right", + ".spectrum-FieldLabel--sizeL", + ".spectrum-FieldLabel--sizeM", + ".spectrum-FieldLabel--sizeS", + ".spectrum-FieldLabel--sizeXL", + ".spectrum-FieldLabel-requiredIcon", + ".spectrum-FieldLabel.is-disabled,\n.spectrum-FieldLabel.is-disabled .spectrum-FieldLabel-requiredIcon,\n.spectrum-Form-itemLabel.is-disabled,\n.spectrum-Form-itemLabel.is-disabled .spectrum-FieldLabel-requiredIcon", + ".spectrum-FieldLabel:lang(ja),\n.spectrum-FieldLabel:lang(ko),\n.spectrum-FieldLabel:lang(zh)", + ".spectrum-Form", + ".spectrum-Form--labelsAbove", + ".spectrum-Form--labelsAbove .spectrum-Form-item", + ".spectrum-Form-item", + ".spectrum-Form-itemField > *", + ".spectrum-Form-itemField,\n.spectrum-Form-itemLabel" + ], + "mods": [ + "--mod-disabled-content-color", + "--mod-field-label-asterisk-vertical-align", + "--mod-field-label-bottom-to-text", + "--mod-field-label-text-to-asterisk", + "--mod-field-label-top-to-text", + "--mod-fieldlabel-font-size", + "--mod-fieldlabel-font-weight", + "--mod-fieldlabel-line-height", + "--mod-fieldlabel-line-height-cjk", + "--mod-fieldlabel-min-height", + "--mod-fieldlabel-side-margin-block-start", + "--mod-fieldlabel-side-padding-right", + "--mod-form-grid-template-columns", + "--mod-form-grid-template-columns-labels-above", + "--mod-form-inline-size", + "--mod-form-item-block-spacing", + "--mod-form-item-block-spacing-labels-above", + "--mod-tableform-item-block-spacing", + "--mod-tableform-item-block-spacing-labels-above" + ], + "spectrum": [ + "--spectrum-cjk-line-height-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-75", + "--spectrum-disabled-content-color", + "--spectrum-field-label-text-to-asterisk", + "--spectrum-field-label-text-to-asterisk-extra-large", + "--spectrum-field-label-text-to-asterisk-large", + "--spectrum-field-label-text-to-asterisk-medium", + "--spectrum-field-label-text-to-asterisk-small", + "--spectrum-field-label-top-margin-extra-large", + "--spectrum-field-label-top-margin-large", + "--spectrum-field-label-top-margin-medium", + "--spectrum-field-label-top-margin-small", + "--spectrum-fieldlabel-bottom-to-text", + "--spectrum-fieldlabel-color", + "--spectrum-fieldlabel-font-size", + "--spectrum-fieldlabel-font-weight", + "--spectrum-fieldlabel-line-height", + "--spectrum-fieldlabel-line-height-cjk", + "--spectrum-fieldlabel-min-height", + "--spectrum-fieldlabel-side-margin-block-start", + "--spectrum-fieldlabel-side-padding-right", + "--spectrum-fieldlabel-top-to-text", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-75", + "--spectrum-line-height-100", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-regular-font-weight", + "--spectrum-spacing-100", + "--spectrum-spacing-200", + "--spectrum-spacing-300", + "--spectrum-tableform-item-block-spacing" + ], + "system": [], + "a11y": ["--highcontrast-disabled-content-color"] +} diff --git a/components/fieldlabel/package.json b/components/fieldlabel/package.json new file mode 100644 index 0000000000..cd9c40386f --- /dev/null +++ b/components/fieldlabel/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/fieldlabel", + "version": "8.1.1", + "description": "The Spectrum CSS fieldlabel component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/fieldlabel", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/fieldlabel" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/fieldlabel/template.js b/components/fieldlabel/template.js new file mode 100644 index 0000000000..0a43eb4b7c --- /dev/null +++ b/components/fieldlabel/template.js @@ -0,0 +1,148 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-FieldLabel", + customClasses = [], + customStyles = {}, + size = "m", + label, + id, + testId, + forInput, + alignment, + isDisabled, + isRequired, +} = {}, context = {}) => { + if (!label) { + console.warn("FieldLabel: please provide a label for the field label."); + } + + let iconName = "Asterisk100"; + switch (size) { + case "s": + iconName = "Asterisk100"; + break; + case "l": + iconName = "Asterisk200"; + break; + case "xl": + iconName = "Asterisk300"; + break; + default: + iconName = "Asterisk100"; + } + + const icon = Icon({ size, iconName, setName: "ui", customClasses: [`${rootClass}-UIIcon`, `${rootClass}-requiredIcon`] }, context); + + return html` + + `; +}; + +export const FieldLabelGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[{}, + { + heading: "Right alignment", + alignment: "right", + customStyles: { width: "200px" }, + }, + { + heading: "Disabled", + isDisabled: true, + customStyles: { width: "200px" }, + }, + { + heading: "Required", + isRequired: true, + customStyles: { width: "200px" }, + }, + { + heading: "Wrapped", + label: "Label example with longer text that will wrap to the next line. And with an asterisk that marks it as required.", + customStyles: { width: "200px" }, + }].map(({ heading, ...item }) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [heading], + }, context)} + ${Template({ + ...args, + ...item, + }, context)} +
    + `)} +
    +
    + ${Sizes(args, context)} +
    +`; + +const Sizes = (args, context) => ["s", "m", "l", "xl"].map((size) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [ + { + s: "Small", + m: "Medium", + l: "Large", + xl: "Extra-large", + }[size] + ], + customClasses: ["chromatic-ignore"], + }, context)} +
    + ${Template({...args, size}, context)} +
    +
    +`); diff --git a/components/floatingactionbutton/index-base.css b/components/floatingactionbutton/index-base.css new file mode 100644 index 0000000000..89030ae0f0 --- /dev/null +++ b/components/floatingactionbutton/index-base.css @@ -0,0 +1,106 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FloatingActionButton { + --spectrum-floating-action-button-size: var(--spectrum-component-height-200); + --spectrum-floating-action-button-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-floating-action-button-padding: var(--spectrum-component-pill-edge-to-visual-only-200); + --spectrum-floating-action-button-margin: var(--spectrum-spacing-200); + --spectrum-floating-action-button-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-floating-action-button-focus-ring-width: var(--spectrum-focus-indicator-thickness); + --spectrum-floating-action-button-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-floating-action-button-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-floating-action-button-background-color: var(--spectrum-accent-background-color-default); + --spectrum-floating-action-button-background-color-hover: var(--spectrum-accent-background-color-hover); + --spectrum-floating-action-button-background-color-down: var(--spectrum-accent-background-color-down); + --spectrum-floating-action-button-background-color-key-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-floating-action-button-icon-color: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-hover: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-down: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-key-focus: var(--spectrum-white); +} +.spectrum-FloatingActionButton--secondary { + --spectrum-floating-action-button-background-color: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-hover: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-down: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-key-focus: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-icon-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-floating-action-button-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-floating-action-button-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-floating-action-button-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); +} +@media (forced-colors: active) { + .spectrum-FloatingActionButton { + --highcontrast-floating-action-button-background-color: ButtonText; + --highcontrast-floating-action-button-background-color-hover: Highlight; + --highcontrast-floating-action-button-background-color-down: Highlight; + --highcontrast-floating-action-button-background-color-key-focus: Highlight; + --highcontrast-floating-action-button-icon-color: ButtonFace; + --highcontrast-floating-action-button-icon-color-hover: ButtonFace; + --highcontrast-floating-action-button-icon-color-down: ButtonFace; + --highcontrast-floating-action-button-icon-color-key-focus: ButtonFace; + } + .spectrum-FloatingActionButton:after { + forced-color-adjust: none; + } +} +.spectrum-FloatingActionButton { + cursor: pointer; + block-size: var(--mod-floating-action-button-size, var(--spectrum-floating-action-button-size)); + inline-size: var(--mod-floating-action-button-size, var(--spectrum-floating-action-button-size)); + border-radius: var(--mod-floating-action-button-border-radius, 50%); + padding-inline: var(--mod-floating-action-button-padding, var(--spectrum-floating-action-button-padding)); + padding-block: var(--mod-floating-action-button-padding, var(--spectrum-floating-action-button-padding)); + margin-inline-end: var(--mod-floating-action-button-margin, var(--spectrum-floating-action-button-margin)); + margin-block-end: var(--mod-floating-action-button-margin, var(--spectrum-floating-action-button-margin)); + border: none; + box-shadow: var(--mod-floating-action-button-drop-shadow-x, var(--spectrum-floating-action-button-drop-shadow-x)) var(--mod-floating-action-button-drop-shadow-y, var(--spectrum-floating-action-button-drop-shadow-y)) var(--mod-floating-action-button-drop-shadow-blur, var(--spectrum-floating-action-button-drop-shadow-blur)) var(--mod-floating-action-button-drop-shadow-color, var(--spectrum-floating-action-button-drop-shadow-color)); + position: relative; + background-color: var(--highcontrast-floating-action-button-background-color, var(--mod-floating-action-button-background-color, var(--spectrum-floating-action-button-background-color))); +} +@media (hover: hover) { + .spectrum-FloatingActionButton:hover { + background-color: var(--highcontrast-floating-action-button-background-color-hover, var(--mod-floating-action-button-background-color-hover, var(--spectrum-floating-action-button-background-color-hover))); + } + .spectrum-FloatingActionButton:hover .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-hover, var(--mod-floating-action-button-icon-color-hover, var(--spectrum-floating-action-button-icon-color-hover))); + } +} +.spectrum-FloatingActionButton:active { + background-color: var(--highcontrast-floating-action-button-background-color-down, var(--mod-floating-action-button-background-color-down, var(--spectrum-floating-action-button-background-color-down))); +} +.spectrum-FloatingActionButton:active .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-down, var(--mod-floating-action-button-icon-color-down, var(--spectrum-floating-action-button-icon-color-down))); +} +.spectrum-FloatingActionButton:focus-visible { + background-color: var(--highcontrast-floating-action-button-background-color-key-focus, var(--mod-floating-action-button-background-color-key-focus, var(--spectrum-floating-action-button-background-color-key-focus))); + outline: 0; +} +.spectrum-FloatingActionButton:focus-visible .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-key-focus, var(--mod-floating-action-button-icon-color-key-focus, var(--spectrum-floating-action-button-icon-color-key-focus))); +} +.spectrum-FloatingActionButton:focus-visible:after { + position: absolute; + inset: 0; + margin: calc(var(--mod-floating-action-button-focus-ring-gap, var(--spectrum-floating-action-button-focus-ring-gap)) * -1); + box-shadow: 0 0 0 var(--mod-floating-action-button-focus-ring-width, var(--spectrum-floating-action-button-focus-ring-width)) var(--highcontrast-floating-action-button-focus-ring-color, var(--mod-afloating-action-button-focus-ring-color, var(--spectrum-floating-action-button-focus-ring-color))); + border-radius: var(--mod-floating-action-button-border-radius, 50%); + pointer-events: none; + content: ""; +} +.spectrum-Icon.spectrum-FloatingActionButton-icon { + block-size: var(--mod-floating-action-button-icon-size, var(--spectrum-floating-action-button-icon-size)); + inline-size: var(--mod-floating-action-button-icon-size, var(--spectrum-floating-action-button-icon-size)); + fill: var(--highcontrast-floating-action-button-icon-color, var(--mod-floating-action-button-icon-color, var(--spectrum-floating-action-button-icon-color))); +} +/*# sourceMappingURL=components/floatingactionbutton/index.css.map */ diff --git a/components/floatingactionbutton/index-vars.css b/components/floatingactionbutton/index-vars.css new file mode 100644 index 0000000000..89030ae0f0 --- /dev/null +++ b/components/floatingactionbutton/index-vars.css @@ -0,0 +1,106 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FloatingActionButton { + --spectrum-floating-action-button-size: var(--spectrum-component-height-200); + --spectrum-floating-action-button-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-floating-action-button-padding: var(--spectrum-component-pill-edge-to-visual-only-200); + --spectrum-floating-action-button-margin: var(--spectrum-spacing-200); + --spectrum-floating-action-button-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-floating-action-button-focus-ring-width: var(--spectrum-focus-indicator-thickness); + --spectrum-floating-action-button-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-floating-action-button-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-floating-action-button-background-color: var(--spectrum-accent-background-color-default); + --spectrum-floating-action-button-background-color-hover: var(--spectrum-accent-background-color-hover); + --spectrum-floating-action-button-background-color-down: var(--spectrum-accent-background-color-down); + --spectrum-floating-action-button-background-color-key-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-floating-action-button-icon-color: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-hover: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-down: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-key-focus: var(--spectrum-white); +} +.spectrum-FloatingActionButton--secondary { + --spectrum-floating-action-button-background-color: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-hover: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-down: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-key-focus: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-icon-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-floating-action-button-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-floating-action-button-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-floating-action-button-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); +} +@media (forced-colors: active) { + .spectrum-FloatingActionButton { + --highcontrast-floating-action-button-background-color: ButtonText; + --highcontrast-floating-action-button-background-color-hover: Highlight; + --highcontrast-floating-action-button-background-color-down: Highlight; + --highcontrast-floating-action-button-background-color-key-focus: Highlight; + --highcontrast-floating-action-button-icon-color: ButtonFace; + --highcontrast-floating-action-button-icon-color-hover: ButtonFace; + --highcontrast-floating-action-button-icon-color-down: ButtonFace; + --highcontrast-floating-action-button-icon-color-key-focus: ButtonFace; + } + .spectrum-FloatingActionButton:after { + forced-color-adjust: none; + } +} +.spectrum-FloatingActionButton { + cursor: pointer; + block-size: var(--mod-floating-action-button-size, var(--spectrum-floating-action-button-size)); + inline-size: var(--mod-floating-action-button-size, var(--spectrum-floating-action-button-size)); + border-radius: var(--mod-floating-action-button-border-radius, 50%); + padding-inline: var(--mod-floating-action-button-padding, var(--spectrum-floating-action-button-padding)); + padding-block: var(--mod-floating-action-button-padding, var(--spectrum-floating-action-button-padding)); + margin-inline-end: var(--mod-floating-action-button-margin, var(--spectrum-floating-action-button-margin)); + margin-block-end: var(--mod-floating-action-button-margin, var(--spectrum-floating-action-button-margin)); + border: none; + box-shadow: var(--mod-floating-action-button-drop-shadow-x, var(--spectrum-floating-action-button-drop-shadow-x)) var(--mod-floating-action-button-drop-shadow-y, var(--spectrum-floating-action-button-drop-shadow-y)) var(--mod-floating-action-button-drop-shadow-blur, var(--spectrum-floating-action-button-drop-shadow-blur)) var(--mod-floating-action-button-drop-shadow-color, var(--spectrum-floating-action-button-drop-shadow-color)); + position: relative; + background-color: var(--highcontrast-floating-action-button-background-color, var(--mod-floating-action-button-background-color, var(--spectrum-floating-action-button-background-color))); +} +@media (hover: hover) { + .spectrum-FloatingActionButton:hover { + background-color: var(--highcontrast-floating-action-button-background-color-hover, var(--mod-floating-action-button-background-color-hover, var(--spectrum-floating-action-button-background-color-hover))); + } + .spectrum-FloatingActionButton:hover .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-hover, var(--mod-floating-action-button-icon-color-hover, var(--spectrum-floating-action-button-icon-color-hover))); + } +} +.spectrum-FloatingActionButton:active { + background-color: var(--highcontrast-floating-action-button-background-color-down, var(--mod-floating-action-button-background-color-down, var(--spectrum-floating-action-button-background-color-down))); +} +.spectrum-FloatingActionButton:active .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-down, var(--mod-floating-action-button-icon-color-down, var(--spectrum-floating-action-button-icon-color-down))); +} +.spectrum-FloatingActionButton:focus-visible { + background-color: var(--highcontrast-floating-action-button-background-color-key-focus, var(--mod-floating-action-button-background-color-key-focus, var(--spectrum-floating-action-button-background-color-key-focus))); + outline: 0; +} +.spectrum-FloatingActionButton:focus-visible .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-key-focus, var(--mod-floating-action-button-icon-color-key-focus, var(--spectrum-floating-action-button-icon-color-key-focus))); +} +.spectrum-FloatingActionButton:focus-visible:after { + position: absolute; + inset: 0; + margin: calc(var(--mod-floating-action-button-focus-ring-gap, var(--spectrum-floating-action-button-focus-ring-gap)) * -1); + box-shadow: 0 0 0 var(--mod-floating-action-button-focus-ring-width, var(--spectrum-floating-action-button-focus-ring-width)) var(--highcontrast-floating-action-button-focus-ring-color, var(--mod-afloating-action-button-focus-ring-color, var(--spectrum-floating-action-button-focus-ring-color))); + border-radius: var(--mod-floating-action-button-border-radius, 50%); + pointer-events: none; + content: ""; +} +.spectrum-Icon.spectrum-FloatingActionButton-icon { + block-size: var(--mod-floating-action-button-icon-size, var(--spectrum-floating-action-button-icon-size)); + inline-size: var(--mod-floating-action-button-icon-size, var(--spectrum-floating-action-button-icon-size)); + fill: var(--highcontrast-floating-action-button-icon-color, var(--mod-floating-action-button-icon-color, var(--spectrum-floating-action-button-icon-color))); +} +/*# sourceMappingURL=components/floatingactionbutton/index.css.map */ diff --git a/components/floatingactionbutton/index.css b/components/floatingactionbutton/index.css new file mode 100644 index 0000000000..89030ae0f0 --- /dev/null +++ b/components/floatingactionbutton/index.css @@ -0,0 +1,106 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-FloatingActionButton { + --spectrum-floating-action-button-size: var(--spectrum-component-height-200); + --spectrum-floating-action-button-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-floating-action-button-padding: var(--spectrum-component-pill-edge-to-visual-only-200); + --spectrum-floating-action-button-margin: var(--spectrum-spacing-200); + --spectrum-floating-action-button-drop-shadow-x: var(--spectrum-drop-shadow-x); + --spectrum-floating-action-button-focus-ring-width: var(--spectrum-focus-indicator-thickness); + --spectrum-floating-action-button-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-floating-action-button-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-floating-action-button-background-color: var(--spectrum-accent-background-color-default); + --spectrum-floating-action-button-background-color-hover: var(--spectrum-accent-background-color-hover); + --spectrum-floating-action-button-background-color-down: var(--spectrum-accent-background-color-down); + --spectrum-floating-action-button-background-color-key-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-floating-action-button-icon-color: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-hover: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-down: var(--spectrum-white); + --spectrum-floating-action-button-icon-color-key-focus: var(--spectrum-white); +} +.spectrum-FloatingActionButton--secondary { + --spectrum-floating-action-button-background-color: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-hover: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-down: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-background-color-key-focus: var(--spectrum-background-layer-2-color); + --spectrum-floating-action-button-icon-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-floating-action-button-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-floating-action-button-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-floating-action-button-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); +} +@media (forced-colors: active) { + .spectrum-FloatingActionButton { + --highcontrast-floating-action-button-background-color: ButtonText; + --highcontrast-floating-action-button-background-color-hover: Highlight; + --highcontrast-floating-action-button-background-color-down: Highlight; + --highcontrast-floating-action-button-background-color-key-focus: Highlight; + --highcontrast-floating-action-button-icon-color: ButtonFace; + --highcontrast-floating-action-button-icon-color-hover: ButtonFace; + --highcontrast-floating-action-button-icon-color-down: ButtonFace; + --highcontrast-floating-action-button-icon-color-key-focus: ButtonFace; + } + .spectrum-FloatingActionButton:after { + forced-color-adjust: none; + } +} +.spectrum-FloatingActionButton { + cursor: pointer; + block-size: var(--mod-floating-action-button-size, var(--spectrum-floating-action-button-size)); + inline-size: var(--mod-floating-action-button-size, var(--spectrum-floating-action-button-size)); + border-radius: var(--mod-floating-action-button-border-radius, 50%); + padding-inline: var(--mod-floating-action-button-padding, var(--spectrum-floating-action-button-padding)); + padding-block: var(--mod-floating-action-button-padding, var(--spectrum-floating-action-button-padding)); + margin-inline-end: var(--mod-floating-action-button-margin, var(--spectrum-floating-action-button-margin)); + margin-block-end: var(--mod-floating-action-button-margin, var(--spectrum-floating-action-button-margin)); + border: none; + box-shadow: var(--mod-floating-action-button-drop-shadow-x, var(--spectrum-floating-action-button-drop-shadow-x)) var(--mod-floating-action-button-drop-shadow-y, var(--spectrum-floating-action-button-drop-shadow-y)) var(--mod-floating-action-button-drop-shadow-blur, var(--spectrum-floating-action-button-drop-shadow-blur)) var(--mod-floating-action-button-drop-shadow-color, var(--spectrum-floating-action-button-drop-shadow-color)); + position: relative; + background-color: var(--highcontrast-floating-action-button-background-color, var(--mod-floating-action-button-background-color, var(--spectrum-floating-action-button-background-color))); +} +@media (hover: hover) { + .spectrum-FloatingActionButton:hover { + background-color: var(--highcontrast-floating-action-button-background-color-hover, var(--mod-floating-action-button-background-color-hover, var(--spectrum-floating-action-button-background-color-hover))); + } + .spectrum-FloatingActionButton:hover .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-hover, var(--mod-floating-action-button-icon-color-hover, var(--spectrum-floating-action-button-icon-color-hover))); + } +} +.spectrum-FloatingActionButton:active { + background-color: var(--highcontrast-floating-action-button-background-color-down, var(--mod-floating-action-button-background-color-down, var(--spectrum-floating-action-button-background-color-down))); +} +.spectrum-FloatingActionButton:active .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-down, var(--mod-floating-action-button-icon-color-down, var(--spectrum-floating-action-button-icon-color-down))); +} +.spectrum-FloatingActionButton:focus-visible { + background-color: var(--highcontrast-floating-action-button-background-color-key-focus, var(--mod-floating-action-button-background-color-key-focus, var(--spectrum-floating-action-button-background-color-key-focus))); + outline: 0; +} +.spectrum-FloatingActionButton:focus-visible .spectrum-FloatingActionButton-icon { + fill: var(--highcontrast-floating-action-button-icon-color-key-focus, var(--mod-floating-action-button-icon-color-key-focus, var(--spectrum-floating-action-button-icon-color-key-focus))); +} +.spectrum-FloatingActionButton:focus-visible:after { + position: absolute; + inset: 0; + margin: calc(var(--mod-floating-action-button-focus-ring-gap, var(--spectrum-floating-action-button-focus-ring-gap)) * -1); + box-shadow: 0 0 0 var(--mod-floating-action-button-focus-ring-width, var(--spectrum-floating-action-button-focus-ring-width)) var(--highcontrast-floating-action-button-focus-ring-color, var(--mod-afloating-action-button-focus-ring-color, var(--spectrum-floating-action-button-focus-ring-color))); + border-radius: var(--mod-floating-action-button-border-radius, 50%); + pointer-events: none; + content: ""; +} +.spectrum-Icon.spectrum-FloatingActionButton-icon { + block-size: var(--mod-floating-action-button-icon-size, var(--spectrum-floating-action-button-icon-size)); + inline-size: var(--mod-floating-action-button-icon-size, var(--spectrum-floating-action-button-icon-size)); + fill: var(--highcontrast-floating-action-button-icon-color, var(--mod-floating-action-button-icon-color, var(--spectrum-floating-action-button-icon-color))); +} +/*# sourceMappingURL=components/floatingactionbutton/index.css.map */ diff --git a/components/floatingactionbutton/metadata.json b/components/floatingactionbutton/metadata.json new file mode 100644 index 0000000000..11bebfeb55 --- /dev/null +++ b/components/floatingactionbutton/metadata.json @@ -0,0 +1,88 @@ +{ + "selectors": [ + ".spectrum-FloatingActionButton", + ".spectrum-FloatingActionButton--secondary", + ".spectrum-FloatingActionButton:active", + ".spectrum-FloatingActionButton:active .spectrum-FloatingActionButton-icon", + ".spectrum-FloatingActionButton:after", + ".spectrum-FloatingActionButton:focus-visible", + ".spectrum-FloatingActionButton:focus-visible .spectrum-FloatingActionButton-icon", + ".spectrum-FloatingActionButton:focus-visible:after", + ".spectrum-FloatingActionButton:hover", + ".spectrum-FloatingActionButton:hover .spectrum-FloatingActionButton-icon", + ".spectrum-Icon.spectrum-FloatingActionButton-icon" + ], + "mods": [ + "--mod-afloating-action-button-focus-ring-color", + "--mod-floating-action-button-background-color", + "--mod-floating-action-button-background-color-down", + "--mod-floating-action-button-background-color-hover", + "--mod-floating-action-button-background-color-key-focus", + "--mod-floating-action-button-border-radius", + "--mod-floating-action-button-drop-shadow-blur", + "--mod-floating-action-button-drop-shadow-color", + "--mod-floating-action-button-drop-shadow-x", + "--mod-floating-action-button-drop-shadow-y", + "--mod-floating-action-button-focus-ring-gap", + "--mod-floating-action-button-focus-ring-width", + "--mod-floating-action-button-icon-color", + "--mod-floating-action-button-icon-color-down", + "--mod-floating-action-button-icon-color-hover", + "--mod-floating-action-button-icon-color-key-focus", + "--mod-floating-action-button-icon-size", + "--mod-floating-action-button-margin", + "--mod-floating-action-button-padding", + "--mod-floating-action-button-size" + ], + "spectrum": [ + "--spectrum-accent-background-color-default", + "--spectrum-accent-background-color-down", + "--spectrum-accent-background-color-hover", + "--spectrum-accent-background-color-key-focus", + "--spectrum-background-layer-2-color", + "--spectrum-component-height-200", + "--spectrum-component-pill-edge-to-visual-only-200", + "--spectrum-drop-shadow-x", + "--spectrum-floating-action-button-background-color", + "--spectrum-floating-action-button-background-color-down", + "--spectrum-floating-action-button-background-color-hover", + "--spectrum-floating-action-button-background-color-key-focus", + "--spectrum-floating-action-button-drop-shadow-blur", + "--spectrum-floating-action-button-drop-shadow-color", + "--spectrum-floating-action-button-drop-shadow-x", + "--spectrum-floating-action-button-drop-shadow-y", + "--spectrum-floating-action-button-focus-ring-color", + "--spectrum-floating-action-button-focus-ring-gap", + "--spectrum-floating-action-button-focus-ring-width", + "--spectrum-floating-action-button-icon-color", + "--spectrum-floating-action-button-icon-color-down", + "--spectrum-floating-action-button-icon-color-hover", + "--spectrum-floating-action-button-icon-color-key-focus", + "--spectrum-floating-action-button-icon-size", + "--spectrum-floating-action-button-margin", + "--spectrum-floating-action-button-padding", + "--spectrum-floating-action-button-size", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-neutral-subdued-content-color-down", + "--spectrum-neutral-subdued-content-color-hover", + "--spectrum-neutral-subdued-content-color-key-focus", + "--spectrum-spacing-200", + "--spectrum-white", + "--spectrum-workflow-icon-size-200" + ], + "system": [], + "a11y": [ + "--highcontrast-floating-action-button-background-color", + "--highcontrast-floating-action-button-background-color-down", + "--highcontrast-floating-action-button-background-color-hover", + "--highcontrast-floating-action-button-background-color-key-focus", + "--highcontrast-floating-action-button-focus-ring-color", + "--highcontrast-floating-action-button-icon-color", + "--highcontrast-floating-action-button-icon-color-down", + "--highcontrast-floating-action-button-icon-color-hover", + "--highcontrast-floating-action-button-icon-color-key-focus" + ] +} diff --git a/components/floatingactionbutton/package.json b/components/floatingactionbutton/package.json new file mode 100644 index 0000000000..f3285f34fa --- /dev/null +++ b/components/floatingactionbutton/package.json @@ -0,0 +1,40 @@ +{ + "name": "@spectrum-css/floatingactionbutton", + "version": "2.1.1", + "description": "The Spectrum CSS floatingactionbutton component", + "license": "Apache-2.0", + "author": "Adobe", + "contributors": [], + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/floatingactionbutton" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/floatingactionbutton/template.js b/components/floatingactionbutton/template.js new file mode 100644 index 0000000000..aafe7eaa89 --- /dev/null +++ b/components/floatingactionbutton/template.js @@ -0,0 +1,28 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-FloatingActionButton", + variant, + id, + iconName, + customClasses = [], +}, context) => html` + +`; diff --git a/components/helptext/index-base.css b/components/helptext/index-base.css new file mode 100644 index 0000000000..966cac9a31 --- /dev/null +++ b/components/helptext/index-base.css @@ -0,0 +1,130 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-HelpText { + --spectrum-helptext-line-height: var(--spectrum-line-height-100); + --spectrum-helptext-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-disabled-content-color: var(--spectrum-disabled-content-color); +} +.spectrum-HelpText.spectrum-HelpText--neutral { + --spectrum-helptext-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); +} +.spectrum-HelpText.spectrum-HelpText--negative { + --spectrum-helptext-content-color-default: var(--spectrum-negative-color-900); + --spectrum-helptext-icon-color-default: var(--spectrum-negative-color-900); +} +.spectrum-HelpText.is-disabled { + --spectrum-helptext-content-color-default: var(--spectrum-helptext-disabled-content-color); + --spectrum-helptext-icon-color-default: var(--spectrum-helptext-disabled-content-color); +} +.spectrum-HelpText:lang(ja), +.spectrum-HelpText:lang(ko), +.spectrum-HelpText:lang(zh) { + --spectrum-helptext-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-HelpText--sizeS { + --spectrum-helptext-min-height: var(--spectrum-component-height-75); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-helptext-font-size: var(--spectrum-font-size-75); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-small); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-HelpText--sizeM { + --spectrum-helptext-min-height: var(--spectrum-component-height-75); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-helptext-font-size: var(--spectrum-font-size-75); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-medium); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-HelpText--sizeL { + --spectrum-helptext-min-height: var(--spectrum-component-height-100); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-helptext-font-size: var(--spectrum-font-size-100); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-large); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-100); +} +.spectrum-HelpText--sizeXL { + --spectrum-helptext-min-height: var(--spectrum-component-height-200); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-helptext-font-size: var(--spectrum-font-size-200); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-extra-large); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-200); +} +@media (forced-colors: active) { + .spectrum-HelpText { + --highcontrast-helptext-content-color-default: CanvasText; + --highcontrast-helptext-icon-color-default: CanvasText; + } + .spectrum-HelpText, + .spectrum-HelpText .spectrum-HelpText-text, + .spectrum-HelpText .spectrum-HelpText-validationIcon { + forced-color-adjust: none; + } +} +.spectrum-HelpText { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); + display: flex; + font-size: var(--mod-helptext-font-size, var(--spectrum-helptext-font-size)); + min-block-size: var(--mod-helptext-min-height, var(--spectrum-helptext-min-height)); +} +.spectrum-HelpText .spectrum-HelpText-validationIcon { + margin-inline-end: var(--mod-helptext-text-to-visual, var(--spectrum-helptext-text-to-visual)); + padding-block-start: var(--mod-helptext-top-to-workflow-icon, var(--spectrum-helptext-top-to-workflow-icon)); + padding-block-end: var(--mod-helptext-bottom-to-workflow-icon, var(--spectrum-helptext-bottom-to-workflow-icon)); + flex-shrink: 0; + block-size: var(--mod-helptext-icon-size, var(--spectrum-helptext-icon-size)); + inline-size: var(--mod-helptext-icon-size, var(--spectrum-helptext-icon-size)); +} +.spectrum-HelpText .spectrum-HelpText-text { + padding-block-start: var(--mod-helptext-top-to-text, var(--spectrum-helptext-top-to-text)); + padding-block-end: var(--mod-helptext-bottom-to-text, var(--spectrum-helptext-bottom-to-text)); + line-height: var(--mod-helptext-line-height, var(--spectrum-helptext-line-height)); +} +.spectrum-HelpText:lang(ja) .spectrum-HelpText-text, +.spectrum-HelpText:lang(ko) .spectrum-HelpText-text, +.spectrum-HelpText:lang(zh) .spectrum-HelpText-text { + line-height: var(--mod-helptext-line-height-cjk, var(--spectrum-helptext-line-height-cjk)); +} +.spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +.spectrum-HelpText.is-disabled .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.is-disabled .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +/*# sourceMappingURL=components/helptext/index.css.map */ diff --git a/components/helptext/index-vars.css b/components/helptext/index-vars.css new file mode 100644 index 0000000000..966cac9a31 --- /dev/null +++ b/components/helptext/index-vars.css @@ -0,0 +1,130 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-HelpText { + --spectrum-helptext-line-height: var(--spectrum-line-height-100); + --spectrum-helptext-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-disabled-content-color: var(--spectrum-disabled-content-color); +} +.spectrum-HelpText.spectrum-HelpText--neutral { + --spectrum-helptext-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); +} +.spectrum-HelpText.spectrum-HelpText--negative { + --spectrum-helptext-content-color-default: var(--spectrum-negative-color-900); + --spectrum-helptext-icon-color-default: var(--spectrum-negative-color-900); +} +.spectrum-HelpText.is-disabled { + --spectrum-helptext-content-color-default: var(--spectrum-helptext-disabled-content-color); + --spectrum-helptext-icon-color-default: var(--spectrum-helptext-disabled-content-color); +} +.spectrum-HelpText:lang(ja), +.spectrum-HelpText:lang(ko), +.spectrum-HelpText:lang(zh) { + --spectrum-helptext-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-HelpText--sizeS { + --spectrum-helptext-min-height: var(--spectrum-component-height-75); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-helptext-font-size: var(--spectrum-font-size-75); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-small); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-HelpText--sizeM { + --spectrum-helptext-min-height: var(--spectrum-component-height-75); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-helptext-font-size: var(--spectrum-font-size-75); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-medium); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-HelpText--sizeL { + --spectrum-helptext-min-height: var(--spectrum-component-height-100); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-helptext-font-size: var(--spectrum-font-size-100); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-large); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-100); +} +.spectrum-HelpText--sizeXL { + --spectrum-helptext-min-height: var(--spectrum-component-height-200); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-helptext-font-size: var(--spectrum-font-size-200); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-extra-large); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-200); +} +@media (forced-colors: active) { + .spectrum-HelpText { + --highcontrast-helptext-content-color-default: CanvasText; + --highcontrast-helptext-icon-color-default: CanvasText; + } + .spectrum-HelpText, + .spectrum-HelpText .spectrum-HelpText-text, + .spectrum-HelpText .spectrum-HelpText-validationIcon { + forced-color-adjust: none; + } +} +.spectrum-HelpText { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); + display: flex; + font-size: var(--mod-helptext-font-size, var(--spectrum-helptext-font-size)); + min-block-size: var(--mod-helptext-min-height, var(--spectrum-helptext-min-height)); +} +.spectrum-HelpText .spectrum-HelpText-validationIcon { + margin-inline-end: var(--mod-helptext-text-to-visual, var(--spectrum-helptext-text-to-visual)); + padding-block-start: var(--mod-helptext-top-to-workflow-icon, var(--spectrum-helptext-top-to-workflow-icon)); + padding-block-end: var(--mod-helptext-bottom-to-workflow-icon, var(--spectrum-helptext-bottom-to-workflow-icon)); + flex-shrink: 0; + block-size: var(--mod-helptext-icon-size, var(--spectrum-helptext-icon-size)); + inline-size: var(--mod-helptext-icon-size, var(--spectrum-helptext-icon-size)); +} +.spectrum-HelpText .spectrum-HelpText-text { + padding-block-start: var(--mod-helptext-top-to-text, var(--spectrum-helptext-top-to-text)); + padding-block-end: var(--mod-helptext-bottom-to-text, var(--spectrum-helptext-bottom-to-text)); + line-height: var(--mod-helptext-line-height, var(--spectrum-helptext-line-height)); +} +.spectrum-HelpText:lang(ja) .spectrum-HelpText-text, +.spectrum-HelpText:lang(ko) .spectrum-HelpText-text, +.spectrum-HelpText:lang(zh) .spectrum-HelpText-text { + line-height: var(--mod-helptext-line-height-cjk, var(--spectrum-helptext-line-height-cjk)); +} +.spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +.spectrum-HelpText.is-disabled .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.is-disabled .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +/*# sourceMappingURL=components/helptext/index.css.map */ diff --git a/components/helptext/index.css b/components/helptext/index.css new file mode 100644 index 0000000000..966cac9a31 --- /dev/null +++ b/components/helptext/index.css @@ -0,0 +1,130 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-HelpText { + --spectrum-helptext-line-height: var(--spectrum-line-height-100); + --spectrum-helptext-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-disabled-content-color: var(--spectrum-disabled-content-color); +} +.spectrum-HelpText.spectrum-HelpText--neutral { + --spectrum-helptext-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-helptext-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); +} +.spectrum-HelpText.spectrum-HelpText--negative { + --spectrum-helptext-content-color-default: var(--spectrum-negative-color-900); + --spectrum-helptext-icon-color-default: var(--spectrum-negative-color-900); +} +.spectrum-HelpText.is-disabled { + --spectrum-helptext-content-color-default: var(--spectrum-helptext-disabled-content-color); + --spectrum-helptext-icon-color-default: var(--spectrum-helptext-disabled-content-color); +} +.spectrum-HelpText:lang(ja), +.spectrum-HelpText:lang(ko), +.spectrum-HelpText:lang(zh) { + --spectrum-helptext-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-HelpText--sizeS { + --spectrum-helptext-min-height: var(--spectrum-component-height-75); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-helptext-font-size: var(--spectrum-font-size-75); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-small); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-HelpText--sizeM { + --spectrum-helptext-min-height: var(--spectrum-component-height-75); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-helptext-font-size: var(--spectrum-font-size-75); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-medium); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-HelpText--sizeL { + --spectrum-helptext-min-height: var(--spectrum-component-height-100); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-helptext-font-size: var(--spectrum-font-size-100); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-large); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-100); +} +.spectrum-HelpText--sizeXL { + --spectrum-helptext-min-height: var(--spectrum-component-height-200); + --spectrum-helptext-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-helptext-font-size: var(--spectrum-font-size-200); + --spectrum-helptext-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-helptext-top-to-workflow-icon: var(--spectrum-help-text-top-to-workflow-icon-extra-large); + --spectrum-helptext-bottom-to-workflow-icon: var(--spectrum-helptext-top-to-workflow-icon); + --spectrum-helptext-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-helptext-bottom-to-text: var(--spectrum-component-bottom-to-text-200); +} +@media (forced-colors: active) { + .spectrum-HelpText { + --highcontrast-helptext-content-color-default: CanvasText; + --highcontrast-helptext-icon-color-default: CanvasText; + } + .spectrum-HelpText, + .spectrum-HelpText .spectrum-HelpText-text, + .spectrum-HelpText .spectrum-HelpText-validationIcon { + forced-color-adjust: none; + } +} +.spectrum-HelpText { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); + display: flex; + font-size: var(--mod-helptext-font-size, var(--spectrum-helptext-font-size)); + min-block-size: var(--mod-helptext-min-height, var(--spectrum-helptext-min-height)); +} +.spectrum-HelpText .spectrum-HelpText-validationIcon { + margin-inline-end: var(--mod-helptext-text-to-visual, var(--spectrum-helptext-text-to-visual)); + padding-block-start: var(--mod-helptext-top-to-workflow-icon, var(--spectrum-helptext-top-to-workflow-icon)); + padding-block-end: var(--mod-helptext-bottom-to-workflow-icon, var(--spectrum-helptext-bottom-to-workflow-icon)); + flex-shrink: 0; + block-size: var(--mod-helptext-icon-size, var(--spectrum-helptext-icon-size)); + inline-size: var(--mod-helptext-icon-size, var(--spectrum-helptext-icon-size)); +} +.spectrum-HelpText .spectrum-HelpText-text { + padding-block-start: var(--mod-helptext-top-to-text, var(--spectrum-helptext-top-to-text)); + padding-block-end: var(--mod-helptext-bottom-to-text, var(--spectrum-helptext-bottom-to-text)); + line-height: var(--mod-helptext-line-height, var(--spectrum-helptext-line-height)); +} +.spectrum-HelpText:lang(ja) .spectrum-HelpText-text, +.spectrum-HelpText:lang(ko) .spectrum-HelpText-text, +.spectrum-HelpText:lang(zh) .spectrum-HelpText-text { + line-height: var(--mod-helptext-line-height-cjk, var(--spectrum-helptext-line-height-cjk)); +} +.spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +.spectrum-HelpText.is-disabled .spectrum-HelpText-text { + color: var(--highcontrast-helptext-content-color-default, var(--mod-helptext-content-color-default, var(--spectrum-helptext-content-color-default))); +} +.spectrum-HelpText.is-disabled .spectrum-HelpText-validationIcon { + color: var(--highcontrast-helptext-icon-color-default, var(--mod-helptext-icon-color-default, var(--spectrum-helptext-icon-color-default))); +} +/*# sourceMappingURL=components/helptext/index.css.map */ diff --git a/components/helptext/metadata.json b/components/helptext/metadata.json new file mode 100644 index 0000000000..8ef12e35f0 --- /dev/null +++ b/components/helptext/metadata.json @@ -0,0 +1,85 @@ +{ + "selectors": [ + ".spectrum-HelpText", + ".spectrum-HelpText .spectrum-HelpText-text", + ".spectrum-HelpText .spectrum-HelpText-validationIcon", + ".spectrum-HelpText,\n\t.spectrum-HelpText .spectrum-HelpText-text,\n\t.spectrum-HelpText .spectrum-HelpText-validationIcon", + ".spectrum-HelpText--sizeL", + ".spectrum-HelpText--sizeM", + ".spectrum-HelpText--sizeS", + ".spectrum-HelpText--sizeXL", + ".spectrum-HelpText.is-disabled", + ".spectrum-HelpText.is-disabled .spectrum-HelpText-text", + ".spectrum-HelpText.is-disabled .spectrum-HelpText-validationIcon", + ".spectrum-HelpText.spectrum-HelpText--negative", + ".spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-text", + ".spectrum-HelpText.spectrum-HelpText--negative .spectrum-HelpText-validationIcon", + ".spectrum-HelpText.spectrum-HelpText--neutral", + ".spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-text", + ".spectrum-HelpText.spectrum-HelpText--neutral .spectrum-HelpText-validationIcon", + ".spectrum-HelpText:lang(ja) .spectrum-HelpText-text,\n.spectrum-HelpText:lang(ko) .spectrum-HelpText-text,\n.spectrum-HelpText:lang(zh) .spectrum-HelpText-text", + ".spectrum-HelpText:lang(ja),\n.spectrum-HelpText:lang(ko),\n.spectrum-HelpText:lang(zh)" + ], + "mods": [ + "--mod-helptext-bottom-to-text", + "--mod-helptext-bottom-to-workflow-icon", + "--mod-helptext-content-color-default", + "--mod-helptext-font-size", + "--mod-helptext-icon-color-default", + "--mod-helptext-icon-size", + "--mod-helptext-line-height", + "--mod-helptext-line-height-cjk", + "--mod-helptext-min-height", + "--mod-helptext-text-to-visual", + "--mod-helptext-top-to-text", + "--mod-helptext-top-to-workflow-icon" + ], + "spectrum": [ + "--spectrum-cjk-line-height-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-75", + "--spectrum-disabled-content-color", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-75", + "--spectrum-help-text-top-to-workflow-icon-extra-large", + "--spectrum-help-text-top-to-workflow-icon-large", + "--spectrum-help-text-top-to-workflow-icon-medium", + "--spectrum-help-text-top-to-workflow-icon-small", + "--spectrum-helptext-bottom-to-text", + "--spectrum-helptext-bottom-to-workflow-icon", + "--spectrum-helptext-content-color-default", + "--spectrum-helptext-disabled-content-color", + "--spectrum-helptext-font-size", + "--spectrum-helptext-icon-color-default", + "--spectrum-helptext-icon-size", + "--spectrum-helptext-line-height", + "--spectrum-helptext-line-height-cjk", + "--spectrum-helptext-min-height", + "--spectrum-helptext-text-to-visual", + "--spectrum-helptext-top-to-text", + "--spectrum-helptext-top-to-workflow-icon", + "--spectrum-line-height-100", + "--spectrum-negative-color-900", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-75", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-75" + ], + "system": [], + "a11y": [ + "--highcontrast-helptext-content-color-default", + "--highcontrast-helptext-icon-color-default" + ] +} diff --git a/components/helptext/package.json b/components/helptext/package.json new file mode 100644 index 0000000000..12e4a1de10 --- /dev/null +++ b/components/helptext/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/helptext", + "version": "5.1.1", + "description": "The Spectrum CSS helptext component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/helptext", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/helptext" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/helptext/template.js b/components/helptext/template.js new file mode 100644 index 0000000000..a14caaf103 --- /dev/null +++ b/components/helptext/template.js @@ -0,0 +1,166 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ( + { + rootClass = "spectrum-HelpText", + size = "m", + isDisabled = false, + hideIcon = false, + text, + variant, + id, + customClasses = [], + customStyles = {}, + }, + context +) => html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + id=${ifDefined(id)} + > + ${when(!hideIcon && variant == "negative", () => + Icon( + { + iconName: "Alert", + size, + customClasses: [`${rootClass}-validationIcon`], + }, + context + ) + )} +
    ${text}
    +
    +`; + +const Sizes = (args, context) => { + const sizes = context?.argTypes?.size?.options; + return sizes.map( + (size) => html` +
    + ${Typography( + { + semantics: "heading", + size: "m", + weight: "light", + content: [ + { + s: "Small", + m: "Medium", + l: "Large", + xl: "Extra-large", + }[size], + ], + customClasses: ["chromatic-ignore"], + }, + context + )} +
    ${Template({ ...args, size }, context)}
    +
    + ` + ); +}; + +export const Variants = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[ + { + heading: "Neutral", + variant: "neutral", + }, + { + heading: "Negative", + variant: "negative", + text: "This is an example with wrapping text. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + customStyles: {"max-width": "350px"}, + }, + { + heading: "Negative with no icon", + variant: "negative", + hideIcon: true, + text: "This is an example with wrapping text. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", + customStyles: {"max-width": "350px"}, + }, + { + heading: "Disabled", + isDisabled: true, + }, + ].map( + ({ heading, ...item }) => html` +
    + ${when(heading, () => + Typography( + { + semantics: "heading", + size: "l", + content: [heading], + customClasses: ["chromatic-ignore"], + }, + context + ) + )} +
    + ${Template({ ...args, ...item }, context)} +
    +
    + ` + )} +
    + ${Typography( + { + semantics: "heading", + size: "l", + content: ["Sizing"], + }, + context + )} +
    + ${Sizes(args, context)} +
    +
    +
    +`; diff --git a/components/icon/index-base.css b/components/icon/index-base.css new file mode 100644 index 0000000000..c113114b3a --- /dev/null +++ b/components/icon/index-base.css @@ -0,0 +1,370 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Icon, +.spectrum-UIIcon { + --spectrum-icon-inline-size: var(--mod-icon-inline-size, var(--mod-icon-size, var(--spectrum-icon-size))); + --spectrum-icon-block-size: var(--mod-icon-block-size, var(--mod-icon-size, var(--spectrum-icon-size))); + display: inline-block; + inline-size: var(--spectrum-icon-inline-size); + block-size: var(--spectrum-icon-block-size); + color: var(--mod-icon-color, inherit); + fill: currentColor; + pointer-events: none; +} +.spectrum-Icon:not(:root), +.spectrum-UIIcon:not(:root) { + overflow: hidden; +} +@media (forced-colors: active) { + .spectrum-Icon, + .spectrum-UIIcon { + forced-color-adjust: auto; + } +} +.spectrum-Icon { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-100); +} +.spectrum-Icon--sizeXXS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-xxs); +} +.spectrum-Icon--sizeXS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-50); +} +.spectrum-Icon--sizeS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-75); +} +.spectrum-Icon--sizeL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-200); +} +.spectrum-Icon--sizeXL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-300); +} +.spectrum-Icon--sizeXXL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-xxl); +} +.spectrum-Icon img, +.spectrum-Icon svg { + inline-size: var(--spectrum-icon-inline-size); + block-size: var(--spectrum-icon-block-size); +} +.spectrum-UIIcon--medium { + display: var(--mod-ui-icon-medium-display, var(--spectrum-ui-icon-medium-display, block)); +} +.spectrum-UIIcon--large { + display: var(--mod-ui-icon-large-display, var(--spectrum-ui-icon-large-display, none)); +} +.spectrum-UIIcon-ChevronRight50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); +} +.spectrum-UIIcon-ChevronRight75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); +} +.spectrum-UIIcon-ChevronRight100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); +} +.spectrum-UIIcon-ChevronRight200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); +} +.spectrum-UIIcon-ChevronRight300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); +} +.spectrum-UIIcon-ChevronRight400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); +} +.spectrum-UIIcon-ChevronRight500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); +} +.spectrum-UIIcon-ChevronDown50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronLeft50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronUp50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowRight75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); +} +.spectrum-UIIcon-ArrowRight100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); +} +.spectrum-UIIcon-ArrowRight200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); +} +.spectrum-UIIcon-ArrowRight300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); +} +.spectrum-UIIcon-ArrowRight400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); +} +.spectrum-UIIcon-ArrowRight500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); +} +.spectrum-UIIcon-ArrowRight600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); +} +.spectrum-UIIcon-ArrowDown75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowLeft75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowUp75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(270deg); +} +.spectrum-UIIcon-Checkmark50 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-50); +} +.spectrum-UIIcon-Checkmark75 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-75); +} +.spectrum-UIIcon-Checkmark100 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-100); +} +.spectrum-UIIcon-Checkmark200 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-200); +} +.spectrum-UIIcon-Checkmark300 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-300); +} +.spectrum-UIIcon-Checkmark400 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-400); +} +.spectrum-UIIcon-Checkmark500 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-500); +} +.spectrum-UIIcon-Checkmark600 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-600); +} +.spectrum-UIIcon-Dash50 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-50); +} +.spectrum-UIIcon-Dash75 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-75); +} +.spectrum-UIIcon-Dash100 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-100); +} +.spectrum-UIIcon-Dash200 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-200); +} +.spectrum-UIIcon-Dash300 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-300); +} +.spectrum-UIIcon-Dash400 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-400); +} +.spectrum-UIIcon-Dash500 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-500); +} +.spectrum-UIIcon-Dash600 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-600); +} +.spectrum-UIIcon-Cross75 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-75); +} +.spectrum-UIIcon-Cross100 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-100); +} +.spectrum-UIIcon-Cross200 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-200); +} +.spectrum-UIIcon-Cross300 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-300); +} +.spectrum-UIIcon-Cross400 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-400); +} +.spectrum-UIIcon-Cross500 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-500); +} +.spectrum-UIIcon-Cross600 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-600); +} +.spectrum-UIIcon-CornerTriangle75 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-75); +} +.spectrum-UIIcon-CornerTriangle100 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-100); +} +.spectrum-UIIcon-CornerTriangle200 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-200); +} +.spectrum-UIIcon-CornerTriangle300 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-300); +} +.spectrum-UIIcon-Asterisk75 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-75); +} +.spectrum-UIIcon-Asterisk100 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-100); +} +.spectrum-UIIcon-Asterisk200 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-200); +} +.spectrum-UIIcon-Asterisk300 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-300); +} +/*# sourceMappingURL=components/icon/index.css.map */ diff --git a/components/icon/index-vars.css b/components/icon/index-vars.css new file mode 100644 index 0000000000..c113114b3a --- /dev/null +++ b/components/icon/index-vars.css @@ -0,0 +1,370 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Icon, +.spectrum-UIIcon { + --spectrum-icon-inline-size: var(--mod-icon-inline-size, var(--mod-icon-size, var(--spectrum-icon-size))); + --spectrum-icon-block-size: var(--mod-icon-block-size, var(--mod-icon-size, var(--spectrum-icon-size))); + display: inline-block; + inline-size: var(--spectrum-icon-inline-size); + block-size: var(--spectrum-icon-block-size); + color: var(--mod-icon-color, inherit); + fill: currentColor; + pointer-events: none; +} +.spectrum-Icon:not(:root), +.spectrum-UIIcon:not(:root) { + overflow: hidden; +} +@media (forced-colors: active) { + .spectrum-Icon, + .spectrum-UIIcon { + forced-color-adjust: auto; + } +} +.spectrum-Icon { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-100); +} +.spectrum-Icon--sizeXXS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-xxs); +} +.spectrum-Icon--sizeXS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-50); +} +.spectrum-Icon--sizeS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-75); +} +.spectrum-Icon--sizeL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-200); +} +.spectrum-Icon--sizeXL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-300); +} +.spectrum-Icon--sizeXXL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-xxl); +} +.spectrum-Icon img, +.spectrum-Icon svg { + inline-size: var(--spectrum-icon-inline-size); + block-size: var(--spectrum-icon-block-size); +} +.spectrum-UIIcon--medium { + display: var(--mod-ui-icon-medium-display, var(--spectrum-ui-icon-medium-display, block)); +} +.spectrum-UIIcon--large { + display: var(--mod-ui-icon-large-display, var(--spectrum-ui-icon-large-display, none)); +} +.spectrum-UIIcon-ChevronRight50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); +} +.spectrum-UIIcon-ChevronRight75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); +} +.spectrum-UIIcon-ChevronRight100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); +} +.spectrum-UIIcon-ChevronRight200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); +} +.spectrum-UIIcon-ChevronRight300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); +} +.spectrum-UIIcon-ChevronRight400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); +} +.spectrum-UIIcon-ChevronRight500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); +} +.spectrum-UIIcon-ChevronDown50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronLeft50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronUp50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowRight75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); +} +.spectrum-UIIcon-ArrowRight100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); +} +.spectrum-UIIcon-ArrowRight200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); +} +.spectrum-UIIcon-ArrowRight300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); +} +.spectrum-UIIcon-ArrowRight400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); +} +.spectrum-UIIcon-ArrowRight500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); +} +.spectrum-UIIcon-ArrowRight600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); +} +.spectrum-UIIcon-ArrowDown75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowLeft75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowUp75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(270deg); +} +.spectrum-UIIcon-Checkmark50 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-50); +} +.spectrum-UIIcon-Checkmark75 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-75); +} +.spectrum-UIIcon-Checkmark100 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-100); +} +.spectrum-UIIcon-Checkmark200 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-200); +} +.spectrum-UIIcon-Checkmark300 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-300); +} +.spectrum-UIIcon-Checkmark400 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-400); +} +.spectrum-UIIcon-Checkmark500 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-500); +} +.spectrum-UIIcon-Checkmark600 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-600); +} +.spectrum-UIIcon-Dash50 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-50); +} +.spectrum-UIIcon-Dash75 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-75); +} +.spectrum-UIIcon-Dash100 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-100); +} +.spectrum-UIIcon-Dash200 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-200); +} +.spectrum-UIIcon-Dash300 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-300); +} +.spectrum-UIIcon-Dash400 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-400); +} +.spectrum-UIIcon-Dash500 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-500); +} +.spectrum-UIIcon-Dash600 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-600); +} +.spectrum-UIIcon-Cross75 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-75); +} +.spectrum-UIIcon-Cross100 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-100); +} +.spectrum-UIIcon-Cross200 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-200); +} +.spectrum-UIIcon-Cross300 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-300); +} +.spectrum-UIIcon-Cross400 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-400); +} +.spectrum-UIIcon-Cross500 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-500); +} +.spectrum-UIIcon-Cross600 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-600); +} +.spectrum-UIIcon-CornerTriangle75 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-75); +} +.spectrum-UIIcon-CornerTriangle100 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-100); +} +.spectrum-UIIcon-CornerTriangle200 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-200); +} +.spectrum-UIIcon-CornerTriangle300 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-300); +} +.spectrum-UIIcon-Asterisk75 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-75); +} +.spectrum-UIIcon-Asterisk100 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-100); +} +.spectrum-UIIcon-Asterisk200 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-200); +} +.spectrum-UIIcon-Asterisk300 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-300); +} +/*# sourceMappingURL=components/icon/index.css.map */ diff --git a/components/icon/index.css b/components/icon/index.css new file mode 100644 index 0000000000..c113114b3a --- /dev/null +++ b/components/icon/index.css @@ -0,0 +1,370 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Icon, +.spectrum-UIIcon { + --spectrum-icon-inline-size: var(--mod-icon-inline-size, var(--mod-icon-size, var(--spectrum-icon-size))); + --spectrum-icon-block-size: var(--mod-icon-block-size, var(--mod-icon-size, var(--spectrum-icon-size))); + display: inline-block; + inline-size: var(--spectrum-icon-inline-size); + block-size: var(--spectrum-icon-block-size); + color: var(--mod-icon-color, inherit); + fill: currentColor; + pointer-events: none; +} +.spectrum-Icon:not(:root), +.spectrum-UIIcon:not(:root) { + overflow: hidden; +} +@media (forced-colors: active) { + .spectrum-Icon, + .spectrum-UIIcon { + forced-color-adjust: auto; + } +} +.spectrum-Icon { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-100); +} +.spectrum-Icon--sizeXXS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-xxs); +} +.spectrum-Icon--sizeXS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-50); +} +.spectrum-Icon--sizeS { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-75); +} +.spectrum-Icon--sizeL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-200); +} +.spectrum-Icon--sizeXL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-300); +} +.spectrum-Icon--sizeXXL { + --spectrum-icon-size: var(--spectrum-workflow-icon-size-xxl); +} +.spectrum-Icon img, +.spectrum-Icon svg { + inline-size: var(--spectrum-icon-inline-size); + block-size: var(--spectrum-icon-block-size); +} +.spectrum-UIIcon--medium { + display: var(--mod-ui-icon-medium-display, var(--spectrum-ui-icon-medium-display, block)); +} +.spectrum-UIIcon--large { + display: var(--mod-ui-icon-large-display, var(--spectrum-ui-icon-large-display, none)); +} +.spectrum-UIIcon-ChevronRight50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); +} +.spectrum-UIIcon-ChevronRight75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); +} +.spectrum-UIIcon-ChevronRight100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); +} +.spectrum-UIIcon-ChevronRight200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); +} +.spectrum-UIIcon-ChevronRight300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); +} +.spectrum-UIIcon-ChevronRight400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); +} +.spectrum-UIIcon-ChevronRight500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); +} +.spectrum-UIIcon-ChevronDown50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronDown500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(90deg); +} +.spectrum-UIIcon-ChevronLeft50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronLeft500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(180deg); +} +.spectrum-UIIcon-ChevronUp50 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-50); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp75 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-75); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp100 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-100); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp200 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-200); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp300 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-300); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp400 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-400); + transform: rotate(270deg); +} +.spectrum-UIIcon-ChevronUp500 { + --spectrum-icon-size: var(--spectrum-chevron-icon-size-500); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowRight75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); +} +.spectrum-UIIcon-ArrowRight100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); +} +.spectrum-UIIcon-ArrowRight200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); +} +.spectrum-UIIcon-ArrowRight300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); +} +.spectrum-UIIcon-ArrowRight400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); +} +.spectrum-UIIcon-ArrowRight500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); +} +.spectrum-UIIcon-ArrowRight600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); +} +.spectrum-UIIcon-ArrowDown75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowDown600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(90deg); +} +.spectrum-UIIcon-ArrowLeft75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowLeft600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(180deg); +} +.spectrum-UIIcon-ArrowUp75 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-75); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp100 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-100); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp200 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-200); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp300 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-300); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp400 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-400); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp500 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-500); + transform: rotate(270deg); +} +.spectrum-UIIcon-ArrowUp600 { + --spectrum-icon-size: var(--spectrum-arrow-icon-size-600); + transform: rotate(270deg); +} +.spectrum-UIIcon-Checkmark50 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-50); +} +.spectrum-UIIcon-Checkmark75 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-75); +} +.spectrum-UIIcon-Checkmark100 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-100); +} +.spectrum-UIIcon-Checkmark200 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-200); +} +.spectrum-UIIcon-Checkmark300 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-300); +} +.spectrum-UIIcon-Checkmark400 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-400); +} +.spectrum-UIIcon-Checkmark500 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-500); +} +.spectrum-UIIcon-Checkmark600 { + --spectrum-icon-size: var(--spectrum-checkmark-icon-size-600); +} +.spectrum-UIIcon-Dash50 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-50); +} +.spectrum-UIIcon-Dash75 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-75); +} +.spectrum-UIIcon-Dash100 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-100); +} +.spectrum-UIIcon-Dash200 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-200); +} +.spectrum-UIIcon-Dash300 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-300); +} +.spectrum-UIIcon-Dash400 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-400); +} +.spectrum-UIIcon-Dash500 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-500); +} +.spectrum-UIIcon-Dash600 { + --spectrum-icon-size: var(--spectrum-dash-icon-size-600); +} +.spectrum-UIIcon-Cross75 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-75); +} +.spectrum-UIIcon-Cross100 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-100); +} +.spectrum-UIIcon-Cross200 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-200); +} +.spectrum-UIIcon-Cross300 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-300); +} +.spectrum-UIIcon-Cross400 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-400); +} +.spectrum-UIIcon-Cross500 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-500); +} +.spectrum-UIIcon-Cross600 { + --spectrum-icon-size: var(--spectrum-cross-icon-size-600); +} +.spectrum-UIIcon-CornerTriangle75 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-75); +} +.spectrum-UIIcon-CornerTriangle100 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-100); +} +.spectrum-UIIcon-CornerTriangle200 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-200); +} +.spectrum-UIIcon-CornerTriangle300 { + --spectrum-icon-size: var(--spectrum-corner-triangle-icon-size-300); +} +.spectrum-UIIcon-Asterisk75 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-75); +} +.spectrum-UIIcon-Asterisk100 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-100); +} +.spectrum-UIIcon-Asterisk200 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-200); +} +.spectrum-UIIcon-Asterisk300 { + --spectrum-icon-size: var(--spectrum-asterisk-icon-size-300); +} +/*# sourceMappingURL=components/icon/index.css.map */ diff --git a/components/icon/metadata.json b/components/icon/metadata.json new file mode 100644 index 0000000000..1af0292d9b --- /dev/null +++ b/components/icon/metadata.json @@ -0,0 +1,173 @@ +{ + "selectors": [ + ".spectrum-Icon", + ".spectrum-Icon img,\n.spectrum-Icon svg", + ".spectrum-Icon,\n\t.spectrum-UIIcon", + ".spectrum-Icon,\n.spectrum-UIIcon", + ".spectrum-Icon--sizeL", + ".spectrum-Icon--sizeS", + ".spectrum-Icon--sizeXL", + ".spectrum-Icon--sizeXS", + ".spectrum-Icon--sizeXXL", + ".spectrum-Icon--sizeXXS", + ".spectrum-Icon:not(:root),\n.spectrum-UIIcon:not(:root)", + ".spectrum-UIIcon--large", + ".spectrum-UIIcon--medium", + ".spectrum-UIIcon-ArrowDown100", + ".spectrum-UIIcon-ArrowDown200", + ".spectrum-UIIcon-ArrowDown300", + ".spectrum-UIIcon-ArrowDown400", + ".spectrum-UIIcon-ArrowDown500", + ".spectrum-UIIcon-ArrowDown600", + ".spectrum-UIIcon-ArrowDown75", + ".spectrum-UIIcon-ArrowLeft100", + ".spectrum-UIIcon-ArrowLeft200", + ".spectrum-UIIcon-ArrowLeft300", + ".spectrum-UIIcon-ArrowLeft400", + ".spectrum-UIIcon-ArrowLeft500", + ".spectrum-UIIcon-ArrowLeft600", + ".spectrum-UIIcon-ArrowLeft75", + ".spectrum-UIIcon-ArrowRight100", + ".spectrum-UIIcon-ArrowRight200", + ".spectrum-UIIcon-ArrowRight300", + ".spectrum-UIIcon-ArrowRight400", + ".spectrum-UIIcon-ArrowRight500", + ".spectrum-UIIcon-ArrowRight600", + ".spectrum-UIIcon-ArrowRight75", + ".spectrum-UIIcon-ArrowUp100", + ".spectrum-UIIcon-ArrowUp200", + ".spectrum-UIIcon-ArrowUp300", + ".spectrum-UIIcon-ArrowUp400", + ".spectrum-UIIcon-ArrowUp500", + ".spectrum-UIIcon-ArrowUp600", + ".spectrum-UIIcon-ArrowUp75", + ".spectrum-UIIcon-Asterisk100", + ".spectrum-UIIcon-Asterisk200", + ".spectrum-UIIcon-Asterisk300", + ".spectrum-UIIcon-Asterisk75", + ".spectrum-UIIcon-Checkmark100", + ".spectrum-UIIcon-Checkmark200", + ".spectrum-UIIcon-Checkmark300", + ".spectrum-UIIcon-Checkmark400", + ".spectrum-UIIcon-Checkmark50", + ".spectrum-UIIcon-Checkmark500", + ".spectrum-UIIcon-Checkmark600", + ".spectrum-UIIcon-Checkmark75", + ".spectrum-UIIcon-ChevronDown100", + ".spectrum-UIIcon-ChevronDown200", + ".spectrum-UIIcon-ChevronDown300", + ".spectrum-UIIcon-ChevronDown400", + ".spectrum-UIIcon-ChevronDown50", + ".spectrum-UIIcon-ChevronDown500", + ".spectrum-UIIcon-ChevronDown75", + ".spectrum-UIIcon-ChevronLeft100", + ".spectrum-UIIcon-ChevronLeft200", + ".spectrum-UIIcon-ChevronLeft300", + ".spectrum-UIIcon-ChevronLeft400", + ".spectrum-UIIcon-ChevronLeft50", + ".spectrum-UIIcon-ChevronLeft500", + ".spectrum-UIIcon-ChevronLeft75", + ".spectrum-UIIcon-ChevronRight100", + ".spectrum-UIIcon-ChevronRight200", + ".spectrum-UIIcon-ChevronRight300", + ".spectrum-UIIcon-ChevronRight400", + ".spectrum-UIIcon-ChevronRight50", + ".spectrum-UIIcon-ChevronRight500", + ".spectrum-UIIcon-ChevronRight75", + ".spectrum-UIIcon-ChevronUp100", + ".spectrum-UIIcon-ChevronUp200", + ".spectrum-UIIcon-ChevronUp300", + ".spectrum-UIIcon-ChevronUp400", + ".spectrum-UIIcon-ChevronUp50", + ".spectrum-UIIcon-ChevronUp500", + ".spectrum-UIIcon-ChevronUp75", + ".spectrum-UIIcon-CornerTriangle100", + ".spectrum-UIIcon-CornerTriangle200", + ".spectrum-UIIcon-CornerTriangle300", + ".spectrum-UIIcon-CornerTriangle75", + ".spectrum-UIIcon-Cross100", + ".spectrum-UIIcon-Cross200", + ".spectrum-UIIcon-Cross300", + ".spectrum-UIIcon-Cross400", + ".spectrum-UIIcon-Cross500", + ".spectrum-UIIcon-Cross600", + ".spectrum-UIIcon-Cross75", + ".spectrum-UIIcon-Dash100", + ".spectrum-UIIcon-Dash200", + ".spectrum-UIIcon-Dash300", + ".spectrum-UIIcon-Dash400", + ".spectrum-UIIcon-Dash50", + ".spectrum-UIIcon-Dash500", + ".spectrum-UIIcon-Dash600", + ".spectrum-UIIcon-Dash75" + ], + "mods": [ + "--mod-icon-block-size", + "--mod-icon-color", + "--mod-icon-inline-size", + "--mod-icon-size", + "--mod-ui-icon-large-display", + "--mod-ui-icon-medium-display" + ], + "spectrum": [ + "--spectrum-arrow-icon-size-100", + "--spectrum-arrow-icon-size-200", + "--spectrum-arrow-icon-size-300", + "--spectrum-arrow-icon-size-400", + "--spectrum-arrow-icon-size-500", + "--spectrum-arrow-icon-size-600", + "--spectrum-arrow-icon-size-75", + "--spectrum-asterisk-icon-size-100", + "--spectrum-asterisk-icon-size-200", + "--spectrum-asterisk-icon-size-300", + "--spectrum-asterisk-icon-size-75", + "--spectrum-checkmark-icon-size-100", + "--spectrum-checkmark-icon-size-200", + "--spectrum-checkmark-icon-size-300", + "--spectrum-checkmark-icon-size-400", + "--spectrum-checkmark-icon-size-50", + "--spectrum-checkmark-icon-size-500", + "--spectrum-checkmark-icon-size-600", + "--spectrum-checkmark-icon-size-75", + "--spectrum-chevron-icon-size-100", + "--spectrum-chevron-icon-size-200", + "--spectrum-chevron-icon-size-300", + "--spectrum-chevron-icon-size-400", + "--spectrum-chevron-icon-size-50", + "--spectrum-chevron-icon-size-500", + "--spectrum-chevron-icon-size-75", + "--spectrum-corner-triangle-icon-size-100", + "--spectrum-corner-triangle-icon-size-200", + "--spectrum-corner-triangle-icon-size-300", + "--spectrum-corner-triangle-icon-size-75", + "--spectrum-cross-icon-size-100", + "--spectrum-cross-icon-size-200", + "--spectrum-cross-icon-size-300", + "--spectrum-cross-icon-size-400", + "--spectrum-cross-icon-size-500", + "--spectrum-cross-icon-size-600", + "--spectrum-cross-icon-size-75", + "--spectrum-dash-icon-size-100", + "--spectrum-dash-icon-size-200", + "--spectrum-dash-icon-size-300", + "--spectrum-dash-icon-size-400", + "--spectrum-dash-icon-size-50", + "--spectrum-dash-icon-size-500", + "--spectrum-dash-icon-size-600", + "--spectrum-dash-icon-size-75", + "--spectrum-icon-block-size", + "--spectrum-icon-inline-size", + "--spectrum-icon-size", + "--spectrum-ui-icon-large-display", + "--spectrum-ui-icon-medium-display", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-50", + "--spectrum-workflow-icon-size-75", + "--spectrum-workflow-icon-size-xxl", + "--spectrum-workflow-icon-size-xxs" + ], + "system": [], + "a11y": [] +} diff --git a/components/icon/package.json b/components/icon/package.json new file mode 100644 index 0000000000..be63bb3db4 --- /dev/null +++ b/components/icon/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/icon", + "version": "7.1.1", + "description": "The Spectrum CSS icon component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/icon" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/icon/template.js b/components/icon/template.js new file mode 100644 index 0000000000..daca1567af --- /dev/null +++ b/components/icon/template.js @@ -0,0 +1,352 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { unsafeSVG } from "lit/directives/unsafe-svg.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +/** + * @typedef { keyof import("./icon.stories.js").default.args } IconArgs + * @typedef { IconArgs & { scale: string, setName: 'workflow' | 'ui' } } IconProps + */ + +const fetchIconDetails = ({ + icons, + workflowIcons = [], + uiIcons = [], + uiIconSizes = {}, +}) => { + if (!icons || Object.keys(icons).length == 0) { + // Fetch loaded data if not provided + if (window.icons) icons = window.icons; + else { + return { + workflowIcons: [], + uiIcons: [], + uiIconSizes: {}, + uiIconsWithDirections: [], + }; + } + } + + // clean up loaded icon data + icons = Object.entries(icons).reduce((acc, [setName, data]) => { + acc[setName] = Object.entries(data).reduce((acc, [size, data]) => { + acc[size] = Object.entries(data).reduce((acc, [iconName, svg]) => { + // simplify icon name + iconName = iconName.split("/").pop().replace(/\.svg$/, ""); + acc[iconName] = svg; + + // Add the icon name to the workflowIcons list if it's from the workflow set + if (setName === "workflow") { + workflowIcons.push(iconName); + } + else { + const iconNameRoot = iconName.replace(/\d{2,3}$/, "").replace(/(Right|Left|Down|Up)$/, ""); + const iconNameSize = iconName.match(/\d{2,3}/g)?.[0]; + uiIcons.push(iconNameRoot); + uiIconSizes[iconNameRoot] = [ + ...new Set([ + ...uiIconSizes[iconNameRoot] ?? [], + ...(iconNameSize ? [iconNameSize] : []), + ]) + ]; + } + return acc; + }, {}); + return acc; + }, {}); + return acc; + }, {}); + + return { + icons, + workflowIcons: [...new Set(workflowIcons)], + uiIcons: [...new Set(uiIcons)], + uiIconSizes, + uiIconsWithDirections: [ + ...new Set([ + ...(uiIcons.filter((c) => !["Chevron", "Arrow"].includes(c)) ?? []), + "ArrowRight", + "ArrowLeft", + "ArrowUp", + "ArrowDown", + "ChevronRight", + "ChevronLeft", + "ChevronUp", + "ChevronDown", + ]) + ], + }; +}; + +/** + * Template for rendering an icon + * @description Icon template that renders an icon based on the provided icon name and set name. + * @param {IconProps} props + * @param {string} props.rootClass + * @param {"xs"|"s"|"m"|"l"|"xl"|"xxl"} props.size + * @param {"ui"|"workflow"} props.setName + * @param {string} props.iconName - Icon name with or without the icon scale number appended. Names with the scale (e.g. 75, 100) will replace it based upon the value of 'size'. + * @param {string} props.fill + * @param {string} props.id + * @param {string[]} props.customClasses + * @returns {import('lit').TemplateResult<1>} + */ +export const Template = ({ + rootClass = "spectrum-Icon", + size = "m", + setName, + iconName, + fill, + id, + customClasses = [], + icons, + useRef = false, + workflowIcons, + uiIcons, + uiIconSizes, +} = {}, context = {}) => { + const { globals = {}, loaded = {} } = context; + const scale = globals.scale ?? "medium"; + + if (!workflowIcons || !uiIcons || !uiIconSizes) { + const details = fetchIconDetails({ + icons: loaded.icons, + workflowIcons, + uiIcons, + uiIconSizes + }); + + if(details.icons) { + icons = details.icons; + } + + if (!workflowIcons && details.workflowIcons) { + workflowIcons = details.workflowIcons; + } + + if (!uiIcons && details.uiIcons) { + uiIcons = details.uiIcons; + } + + if (!uiIconSizes && details.uiIconSizes) { + uiIconSizes = details.uiIconSizes; + } + } + + if (!iconName) { + console.warn( + "Icon: Could not render a result because no icon name was provided to the icon template." + ); + return html``; + } + + let idKey = iconName; + + // If icon set was not provided, try determine which icon set contains this icon. + // Note: icon sets can contain the same icon name, with different icons. + if (!["workflow","ui"].includes(setName)) { + if (workflowIcons.includes(idKey)) { + setName = "workflow"; + } + else if (uiIcons.includes(idKey.replace(/\d{2,3}$/, "").replace(/(Right|Left|Down|Up)$/, ""))) { + setName = "ui"; + } + } + + if (!setName) { + console.warn( + `Icon: Could not determine the icon set for the provided icon name: ${idKey}.` + ); + return html``; + } + + // If a descriptor like Right, Left, Down, or Up is present for the UI icons Chevron or + // Arrow, use that only for the class and not the icon fetch. + if ( + setName == "ui" && + uiIcons.some((c) => idKey.startsWith(c)) && + ["Right", "Left", "Down", "Up"].some((c) => idKey.includes(c)) + ) { + idKey = idKey.replace(/(Right|Left|Down|Up)/, ""); + } + + /** + * Fallback UI Icon sizing number. + * + * If the icon name includes its scale, we want to leave that scale. This is preferred, + * as UI icons do not use workflow icon sizing. + * + * If the UI icon name does not include scale, reformat it to match the provided sizing. + * E.g. with a size of "s", the icon name "ChevronRight" would become "ChevronRight75". + */ + if ( + setName == "ui" && + // Exists in the list of available UI icons. + uiIcons.includes(idKey.replace(/\d{2,3}$/, "")) && + // Does not already have size number at the end. + !idKey.match(/^(?!\d).*\d{2,3}$/) && + // Exclude some UI icons that do not (yet) have size numbers. + uiIconSizes[idKey]?.length != 0 + ) { + let sizeVal; + switch (size) { + case "xs": + case "s": + sizeVal = "75"; + break; + case "l": + sizeVal = "200"; + break; + case "xl": + case "xxl": + sizeVal = "300"; + break; + default: + sizeVal = "100"; + break; + } + + idKey += sizeVal; + iconName += sizeVal; + } + + // Fetch SVG file markup, and set optional fill color. + let inlineStyle; + if (fill) inlineStyle = `color: ${fill}`; + + let svgString; + if (icons && icons[setName]?.[scale]?.[idKey]) { + svgString = icons[setName][scale][idKey]; + } + + /** + * Classes to apply to the SVG element. Object as used by the classMap function. + * @type {[name: string]: string | boolean | number} + */ + const classList = { + [rootClass]: true, + [`spectrum-UIIcon-${iconName}`]: !!(setName === "ui"), + [`${rootClass}--${scale}`]: !!(setName === "ui" && scale), + [`${rootClass}--size${size?.toUpperCase()}`]: !!( + (!setName || setName === "workflow") && + size + ), + ...customClasses.reduce((a, c) => ({ ...a, [c]: true }), {}), + }; + + const classesAsString = Object.entries(classList).reduce((acc, [key, value]) => { + if (value) acc += `${key} `; + return acc; + }, ""); + + if (!useRef && svgString) { + return html`${unsafeSVG( + svgString.replace(/`; +}; + +/** + * Chromatic VRT template that displays multiple icons to cover various options. + */ +export const IconGroup = (args, context) => { + let icons = context?.loaded?.icons ?? {}; + const { + workflowIcons, + uiIcons, + uiIconSizes, + uiIconsWithDirections + } = fetchIconDetails({ icons }); + + const testData = [{ + setName: "workflow", + iconName: "Alert", + fill: "var(--spectrum-negative-content-color-default)", + }, + { + setName: "workflow", + iconName: "Hand", + }, + { + setName: "workflow", + iconName: "Help", + }, + { + setName: "workflow", + iconName: "ArrowLeft", + }, + { + setName: "workflow", + iconName: "ArrowRight", + }, + { + setName: "workflow", + iconName: "ChevronDown", + }]; + + return html` +
    + ${Template({ ...args, icons, workflowIcons, uiIcons, uiIconSizes })} +
    +
    + ${testData.map((row_args) => html` +
    + ${["xs","s","m","l","xl","xxl"].map( + (size) => Template({ ...args, ...row_args, size, icons, workflowIcons, uiIcons, uiIconSizes }) + )} +
    ` + )} +
    + ${uiIconsWithDirections.map(iconName => html` +
    + ${uiIconSizes[iconName.replace(/(Left|Right|Up|Down)$/, "")]?.map((iconSize) => + Template({ ...args, setName: "ui", iconName: iconName + iconSize, icons, workflowIcons, uiIcons, uiIconSizes }) + )} + ${when(uiIconSizes[iconName]?.length == 0, () => + Template({ ...args, setName: "ui", iconName, icons, workflowIcons, uiIcons, uiIconSizes }) + )} +
    ` + )} +
    +
    + `; +}; diff --git a/components/icon/utilities.js b/components/icon/utilities.js new file mode 100644 index 0000000000..d4219af797 --- /dev/null +++ b/components/icon/utilities.js @@ -0,0 +1,44 @@ +// Imports an array of all icon names in the workflow set +import iconOpts from "@adobe/spectrum-css-workflow-icons"; + +export const workflowIcons = (iconOpts || []).map((icon) => + icon.replace(/\.svg$/, "") +); + +/** + * UI Icons have specific sizes represented by a number. + * Each size has its own individual file and a CSS class with defined dimensions. + */ +export const uiIconSizes = { + "Arrow": ["75","100","200","300","400","500","600"], + "Asterisk": ["75","100","200","300"], + "Checkmark": ["50","75","100","200","300","400","500","600"], + "Chevron": ["50","75","100","200","300","400","500"], + "CornerTriangle": ["75","100","200","300"], + "Cross": ["75","100","200","300","400","500","600"], + "Dash": ["50","75","100","200","300","400","500","600"], + "SingleGripper": [], + "DoubleGripper": [], + "TripleGripper": [], +}; + +/** + * List of UI icon names, corresponding to files. + */ +export const uiIcons = Object.keys(uiIconSizes); + +/** + * List of all UI icon names for CSS. Chevron and Arrow have directional suffixes + * for rotating the same base icon, e.g. Arrow becomes ArrowRight, ArrowDown, etc. + */ +export const uiIconsWithDirections = [ + ...uiIcons.filter((c) => !["Chevron", "Arrow"].includes(c)), + "ArrowRight", + "ArrowLeft", + "ArrowUp", + "ArrowDown", + "ChevronRight", + "ChevronLeft", + "ChevronUp", + "ChevronDown", +]; diff --git a/components/illustratedmessage/index-base.css b/components/illustratedmessage/index-base.css new file mode 100644 index 0000000000..acbb11b7f1 --- /dev/null +++ b/components/illustratedmessage/index-base.css @@ -0,0 +1,91 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-IllustratedMessage { + --spectrum-illustrated-message-description-max-inline-size: var(--spectrum-illustrated-message-maximum-width); + --spectrum-illustrated-message-heading-max-inline-size: var(--spectrum-illustrated-message-maximum-width); + --spectrum-illustrated-message-title-to-heading: var(--spectrum-spacing-400); + --spectrum-illustrated-message-heading-to-description: var(--spectrum-spacing-75); + --spectrum-illustrated-message-illustration-color: var(--spectrum-neutral-visual-color); + --spectrum-illustrated-message-illustration-accent-color: var(--spectrum-accent-visual-color); + --spectrum-illustrated-message-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-illustrated-message-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-illustrated-message-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-illustrated-message-title-font-size: var(--spectrum-illustrated-message-title-size); + --spectrum-illustrated-message-title-line-height: var(--spectrum-heading-line-height); + --spectrum-illustrated-message-title-color: var(--spectrum-heading-color); + --spectrum-illustrated-message-description-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-illustrated-message-description-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-illustrated-message-description-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-illustrated-message-description-font-size: var(--spectrum-illustrated-message-body-size); + --spectrum-illustrated-message-description-line-height: var(--spectrum-body-line-height); + --spectrum-illustrated-message-description-color: var(--spectrum-body-color); +} +.spectrum-IllustratedMessage:lang(ja), +.spectrum-IllustratedMessage:lang(ko), +.spectrum-IllustratedMessage:lang(zh) { + --spectrum-illustrated-message-title-font-size: var(--spectrum-illustrated-message-cjk-title-size); +} +@media (forced-colors: active) { + .spectrum-IllustratedMessage { + --highcontrast-illustrated-message-illustration-color: CanvasText; + --highcontrast-illustrated-message-illustration-accent-color: Highlight; + } +} +.spectrum-IllustratedMessage { + block-size: 100%; + display: var(--mod-illustrated-message-display, flex); + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + pointer-events: var(--mod-illustrated-message-pointer-events, auto); + max-inline-size: var(--mod-illustrated-message-content-maximum-width); +} +.spectrum-IllustratedMessage-illustration { + margin-block-end: var(--mod-illustrated-message-title-to-heading, var(--spectrum-illustrated-message-title-to-heading)); + color: var(--highcontrast-illustrated-message-illustration-color, var(--mod-illustrated-message-illustration-color, var(--spectrum-illustrated-message-illustration-color))); + fill: currentColor; + stroke: currentColor; +} +.spectrum-IllustratedMessage-accent { + color: var(--highcontrast-illustrated-message-illustration-accent-color, var(--mod-illustrated-message-illustration-accent-color, var(--spectrum-illustrated-message-illustration-accent-color))); + fill: currentColor; + stroke: currentColor; +} +.spectrum-IllustratedMessage-heading { + font-family: var(--mod-illustrated-message-title-font-family, var(--spectrum-illustrated-message-title-font-family)); + font-weight: var(--mod-illustrated-message-title-font-weight, var(--spectrum-illustrated-message-title-font-weight)); + font-style: var(--mod-illustrated-message-title-font-style, var(--spectrum-illustrated-message-title-font-style)); + font-size: var(--mod-illustrated-message-title-font-size, var(--spectrum-illustrated-message-title-font-size)); + line-height: var(--mod-illustrated-message-title-line-height, var(--spectrum-illustrated-message-title-line-height)); + color: var(--mod-illustrated-message-title-color, var(--spectrum-illustrated-message-title-color)); + max-inline-size: var(--mod-illustrated-message-heading-max-inline-size, var(--spectrum-illustrated-message-heading-max-inline-size)); + margin-block-start: 0; + margin-block-end: var(--mod-illustrated-message-heading-to-body, 0); +} +.spectrum-IllustratedMessage-description { + position: var(--mod-illustrated-message-description-position); + z-index: var(--mod-illustrated-message-description-z-index); + pointer-events: var(--mod-illustrated-message-description-pointer-events, auto); + font-family: var(--mod-illustrated-message-description-font-family, var(--spectrum-illustrated-message-description-font-family)); + font-weight: var(--mod-illustrated-message-description-font-weight, var(--spectrum-illustrated-message-description-font-weight)); + font-style: var(--mod-illustrated-message-description-font-style, var(--spectrum-illustrated-message-description-font-style)); + font-size: var(--mod-illustrated-message-description-font-size, var(--spectrum-illustrated-message-description-font-size)); + line-height: var(--mod-illustrated-message-description-line-height, var(--spectrum-illustrated-message-description-line-height)); + color: var(--mod-illustrated-message-description-color, var(--spectrum-illustrated-message-description-color)); + max-inline-size: var(--mod-illustrated-message-description-max-inline-size, var(--spectrum-illustrated-message-description-max-inline-size)); + margin-block-start: var(--mod-illustrated-message-heading-to-description, var(--spectrum-illustrated-message-heading-to-description)); + margin-block-end: 0; +} +/*# sourceMappingURL=components/illustratedmessage/index.css.map */ diff --git a/components/illustratedmessage/index-vars.css b/components/illustratedmessage/index-vars.css new file mode 100644 index 0000000000..acbb11b7f1 --- /dev/null +++ b/components/illustratedmessage/index-vars.css @@ -0,0 +1,91 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-IllustratedMessage { + --spectrum-illustrated-message-description-max-inline-size: var(--spectrum-illustrated-message-maximum-width); + --spectrum-illustrated-message-heading-max-inline-size: var(--spectrum-illustrated-message-maximum-width); + --spectrum-illustrated-message-title-to-heading: var(--spectrum-spacing-400); + --spectrum-illustrated-message-heading-to-description: var(--spectrum-spacing-75); + --spectrum-illustrated-message-illustration-color: var(--spectrum-neutral-visual-color); + --spectrum-illustrated-message-illustration-accent-color: var(--spectrum-accent-visual-color); + --spectrum-illustrated-message-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-illustrated-message-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-illustrated-message-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-illustrated-message-title-font-size: var(--spectrum-illustrated-message-title-size); + --spectrum-illustrated-message-title-line-height: var(--spectrum-heading-line-height); + --spectrum-illustrated-message-title-color: var(--spectrum-heading-color); + --spectrum-illustrated-message-description-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-illustrated-message-description-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-illustrated-message-description-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-illustrated-message-description-font-size: var(--spectrum-illustrated-message-body-size); + --spectrum-illustrated-message-description-line-height: var(--spectrum-body-line-height); + --spectrum-illustrated-message-description-color: var(--spectrum-body-color); +} +.spectrum-IllustratedMessage:lang(ja), +.spectrum-IllustratedMessage:lang(ko), +.spectrum-IllustratedMessage:lang(zh) { + --spectrum-illustrated-message-title-font-size: var(--spectrum-illustrated-message-cjk-title-size); +} +@media (forced-colors: active) { + .spectrum-IllustratedMessage { + --highcontrast-illustrated-message-illustration-color: CanvasText; + --highcontrast-illustrated-message-illustration-accent-color: Highlight; + } +} +.spectrum-IllustratedMessage { + block-size: 100%; + display: var(--mod-illustrated-message-display, flex); + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + pointer-events: var(--mod-illustrated-message-pointer-events, auto); + max-inline-size: var(--mod-illustrated-message-content-maximum-width); +} +.spectrum-IllustratedMessage-illustration { + margin-block-end: var(--mod-illustrated-message-title-to-heading, var(--spectrum-illustrated-message-title-to-heading)); + color: var(--highcontrast-illustrated-message-illustration-color, var(--mod-illustrated-message-illustration-color, var(--spectrum-illustrated-message-illustration-color))); + fill: currentColor; + stroke: currentColor; +} +.spectrum-IllustratedMessage-accent { + color: var(--highcontrast-illustrated-message-illustration-accent-color, var(--mod-illustrated-message-illustration-accent-color, var(--spectrum-illustrated-message-illustration-accent-color))); + fill: currentColor; + stroke: currentColor; +} +.spectrum-IllustratedMessage-heading { + font-family: var(--mod-illustrated-message-title-font-family, var(--spectrum-illustrated-message-title-font-family)); + font-weight: var(--mod-illustrated-message-title-font-weight, var(--spectrum-illustrated-message-title-font-weight)); + font-style: var(--mod-illustrated-message-title-font-style, var(--spectrum-illustrated-message-title-font-style)); + font-size: var(--mod-illustrated-message-title-font-size, var(--spectrum-illustrated-message-title-font-size)); + line-height: var(--mod-illustrated-message-title-line-height, var(--spectrum-illustrated-message-title-line-height)); + color: var(--mod-illustrated-message-title-color, var(--spectrum-illustrated-message-title-color)); + max-inline-size: var(--mod-illustrated-message-heading-max-inline-size, var(--spectrum-illustrated-message-heading-max-inline-size)); + margin-block-start: 0; + margin-block-end: var(--mod-illustrated-message-heading-to-body, 0); +} +.spectrum-IllustratedMessage-description { + position: var(--mod-illustrated-message-description-position); + z-index: var(--mod-illustrated-message-description-z-index); + pointer-events: var(--mod-illustrated-message-description-pointer-events, auto); + font-family: var(--mod-illustrated-message-description-font-family, var(--spectrum-illustrated-message-description-font-family)); + font-weight: var(--mod-illustrated-message-description-font-weight, var(--spectrum-illustrated-message-description-font-weight)); + font-style: var(--mod-illustrated-message-description-font-style, var(--spectrum-illustrated-message-description-font-style)); + font-size: var(--mod-illustrated-message-description-font-size, var(--spectrum-illustrated-message-description-font-size)); + line-height: var(--mod-illustrated-message-description-line-height, var(--spectrum-illustrated-message-description-line-height)); + color: var(--mod-illustrated-message-description-color, var(--spectrum-illustrated-message-description-color)); + max-inline-size: var(--mod-illustrated-message-description-max-inline-size, var(--spectrum-illustrated-message-description-max-inline-size)); + margin-block-start: var(--mod-illustrated-message-heading-to-description, var(--spectrum-illustrated-message-heading-to-description)); + margin-block-end: 0; +} +/*# sourceMappingURL=components/illustratedmessage/index.css.map */ diff --git a/components/illustratedmessage/index.css b/components/illustratedmessage/index.css new file mode 100644 index 0000000000..acbb11b7f1 --- /dev/null +++ b/components/illustratedmessage/index.css @@ -0,0 +1,91 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-IllustratedMessage { + --spectrum-illustrated-message-description-max-inline-size: var(--spectrum-illustrated-message-maximum-width); + --spectrum-illustrated-message-heading-max-inline-size: var(--spectrum-illustrated-message-maximum-width); + --spectrum-illustrated-message-title-to-heading: var(--spectrum-spacing-400); + --spectrum-illustrated-message-heading-to-description: var(--spectrum-spacing-75); + --spectrum-illustrated-message-illustration-color: var(--spectrum-neutral-visual-color); + --spectrum-illustrated-message-illustration-accent-color: var(--spectrum-accent-visual-color); + --spectrum-illustrated-message-title-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-illustrated-message-title-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-illustrated-message-title-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-illustrated-message-title-font-size: var(--spectrum-illustrated-message-title-size); + --spectrum-illustrated-message-title-line-height: var(--spectrum-heading-line-height); + --spectrum-illustrated-message-title-color: var(--spectrum-heading-color); + --spectrum-illustrated-message-description-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-illustrated-message-description-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-illustrated-message-description-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-illustrated-message-description-font-size: var(--spectrum-illustrated-message-body-size); + --spectrum-illustrated-message-description-line-height: var(--spectrum-body-line-height); + --spectrum-illustrated-message-description-color: var(--spectrum-body-color); +} +.spectrum-IllustratedMessage:lang(ja), +.spectrum-IllustratedMessage:lang(ko), +.spectrum-IllustratedMessage:lang(zh) { + --spectrum-illustrated-message-title-font-size: var(--spectrum-illustrated-message-cjk-title-size); +} +@media (forced-colors: active) { + .spectrum-IllustratedMessage { + --highcontrast-illustrated-message-illustration-color: CanvasText; + --highcontrast-illustrated-message-illustration-accent-color: Highlight; + } +} +.spectrum-IllustratedMessage { + block-size: 100%; + display: var(--mod-illustrated-message-display, flex); + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + pointer-events: var(--mod-illustrated-message-pointer-events, auto); + max-inline-size: var(--mod-illustrated-message-content-maximum-width); +} +.spectrum-IllustratedMessage-illustration { + margin-block-end: var(--mod-illustrated-message-title-to-heading, var(--spectrum-illustrated-message-title-to-heading)); + color: var(--highcontrast-illustrated-message-illustration-color, var(--mod-illustrated-message-illustration-color, var(--spectrum-illustrated-message-illustration-color))); + fill: currentColor; + stroke: currentColor; +} +.spectrum-IllustratedMessage-accent { + color: var(--highcontrast-illustrated-message-illustration-accent-color, var(--mod-illustrated-message-illustration-accent-color, var(--spectrum-illustrated-message-illustration-accent-color))); + fill: currentColor; + stroke: currentColor; +} +.spectrum-IllustratedMessage-heading { + font-family: var(--mod-illustrated-message-title-font-family, var(--spectrum-illustrated-message-title-font-family)); + font-weight: var(--mod-illustrated-message-title-font-weight, var(--spectrum-illustrated-message-title-font-weight)); + font-style: var(--mod-illustrated-message-title-font-style, var(--spectrum-illustrated-message-title-font-style)); + font-size: var(--mod-illustrated-message-title-font-size, var(--spectrum-illustrated-message-title-font-size)); + line-height: var(--mod-illustrated-message-title-line-height, var(--spectrum-illustrated-message-title-line-height)); + color: var(--mod-illustrated-message-title-color, var(--spectrum-illustrated-message-title-color)); + max-inline-size: var(--mod-illustrated-message-heading-max-inline-size, var(--spectrum-illustrated-message-heading-max-inline-size)); + margin-block-start: 0; + margin-block-end: var(--mod-illustrated-message-heading-to-body, 0); +} +.spectrum-IllustratedMessage-description { + position: var(--mod-illustrated-message-description-position); + z-index: var(--mod-illustrated-message-description-z-index); + pointer-events: var(--mod-illustrated-message-description-pointer-events, auto); + font-family: var(--mod-illustrated-message-description-font-family, var(--spectrum-illustrated-message-description-font-family)); + font-weight: var(--mod-illustrated-message-description-font-weight, var(--spectrum-illustrated-message-description-font-weight)); + font-style: var(--mod-illustrated-message-description-font-style, var(--spectrum-illustrated-message-description-font-style)); + font-size: var(--mod-illustrated-message-description-font-size, var(--spectrum-illustrated-message-description-font-size)); + line-height: var(--mod-illustrated-message-description-line-height, var(--spectrum-illustrated-message-description-line-height)); + color: var(--mod-illustrated-message-description-color, var(--spectrum-illustrated-message-description-color)); + max-inline-size: var(--mod-illustrated-message-description-max-inline-size, var(--spectrum-illustrated-message-description-max-inline-size)); + margin-block-start: var(--mod-illustrated-message-heading-to-description, var(--spectrum-illustrated-message-heading-to-description)); + margin-block-end: 0; +} +/*# sourceMappingURL=components/illustratedmessage/index.css.map */ diff --git a/components/illustratedmessage/metadata.json b/components/illustratedmessage/metadata.json new file mode 100644 index 0000000000..b94ef4ce2e --- /dev/null +++ b/components/illustratedmessage/metadata.json @@ -0,0 +1,79 @@ +{ + "selectors": [ + ".spectrum-IllustratedMessage", + ".spectrum-IllustratedMessage-accent", + ".spectrum-IllustratedMessage-description", + ".spectrum-IllustratedMessage-heading", + ".spectrum-IllustratedMessage-illustration", + ".spectrum-IllustratedMessage:lang(ja),\n.spectrum-IllustratedMessage:lang(ko),\n.spectrum-IllustratedMessage:lang(zh)" + ], + "mods": [ + "--mod-illustrated-message-content-maximum-width", + "--mod-illustrated-message-description-color", + "--mod-illustrated-message-description-font-family", + "--mod-illustrated-message-description-font-size", + "--mod-illustrated-message-description-font-style", + "--mod-illustrated-message-description-font-weight", + "--mod-illustrated-message-description-line-height", + "--mod-illustrated-message-description-max-inline-size", + "--mod-illustrated-message-description-pointer-events", + "--mod-illustrated-message-description-position", + "--mod-illustrated-message-description-z-index", + "--mod-illustrated-message-display", + "--mod-illustrated-message-heading-max-inline-size", + "--mod-illustrated-message-heading-to-body", + "--mod-illustrated-message-heading-to-description", + "--mod-illustrated-message-illustration-accent-color", + "--mod-illustrated-message-illustration-color", + "--mod-illustrated-message-pointer-events", + "--mod-illustrated-message-title-color", + "--mod-illustrated-message-title-font-family", + "--mod-illustrated-message-title-font-size", + "--mod-illustrated-message-title-font-style", + "--mod-illustrated-message-title-font-weight", + "--mod-illustrated-message-title-line-height", + "--mod-illustrated-message-title-to-heading" + ], + "spectrum": [ + "--spectrum-accent-visual-color", + "--spectrum-body-color", + "--spectrum-body-line-height", + "--spectrum-body-sans-serif-font-style", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-heading-color", + "--spectrum-heading-line-height", + "--spectrum-heading-sans-serif-font-style", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-illustrated-message-body-size", + "--spectrum-illustrated-message-cjk-title-size", + "--spectrum-illustrated-message-description-color", + "--spectrum-illustrated-message-description-font-family", + "--spectrum-illustrated-message-description-font-size", + "--spectrum-illustrated-message-description-font-style", + "--spectrum-illustrated-message-description-font-weight", + "--spectrum-illustrated-message-description-line-height", + "--spectrum-illustrated-message-description-max-inline-size", + "--spectrum-illustrated-message-heading-max-inline-size", + "--spectrum-illustrated-message-heading-to-description", + "--spectrum-illustrated-message-illustration-accent-color", + "--spectrum-illustrated-message-illustration-color", + "--spectrum-illustrated-message-maximum-width", + "--spectrum-illustrated-message-title-color", + "--spectrum-illustrated-message-title-font-family", + "--spectrum-illustrated-message-title-font-size", + "--spectrum-illustrated-message-title-font-style", + "--spectrum-illustrated-message-title-font-weight", + "--spectrum-illustrated-message-title-line-height", + "--spectrum-illustrated-message-title-size", + "--spectrum-illustrated-message-title-to-heading", + "--spectrum-neutral-visual-color", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-400", + "--spectrum-spacing-75" + ], + "system": [], + "a11y": [ + "--highcontrast-illustrated-message-illustration-accent-color", + "--highcontrast-illustrated-message-illustration-color" + ] +} diff --git a/components/illustratedmessage/package.json b/components/illustratedmessage/package.json new file mode 100644 index 0000000000..10aab182fa --- /dev/null +++ b/components/illustratedmessage/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/illustratedmessage", + "version": "7.1.1", + "description": "The Spectrum CSS illustratedmessage component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/illustratedmessage", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/illustratedmessage" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14", + "@spectrum-css/typography": ">=6" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^", + "@spectrum-css/typography": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/illustratedmessage/template.js b/components/illustratedmessage/template.js new file mode 100644 index 0000000000..46876df350 --- /dev/null +++ b/components/illustratedmessage/template.js @@ -0,0 +1,139 @@ +import { Template as Link } from "@spectrum-css/link/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-IllustratedMessage", + heading, + description, + customClasses = [], + useAccentColor = false, +}, context) => html` +
    ({ ...a, [c]: true }), {}), + })} + > + ${illustrationSvgMarkup(useAccentColor)} + ${when(heading, () => + Typography({ + semantics: "heading", + "size": "m", + customClasses: [`${rootClass}-heading`], + content: [heading], + }, context) + )} + ${when(description, () => + Typography({ + semantics: "body", + "size": "s", + customClasses: [`${rootClass}-description`], + content: [ + ...description.map((c) => (typeof c === "function" ? c({}) : c)) + ], + }, context) + )} +
    +`; + +const illustrationSvgMarkup = (withAccentColorClass = false) => html` + + + + + + + + + + + + + + + +`; + + +export const IllustratedMessageGroup = Variants({ + Template, + testData: [{ + heading: "Error 404: Page not found", + description: [ + "This page isn't available. Try checking the URL or visit a different page.", + ], + useAccentColor: false, + }, { + testHeading: "With accent color", + heading: "Drag and drop your file", + description: [ + () => { + return html`${Link({ url: "#", text: "Select a file" })} from your computer.`; + }, + ], + useAccentColor: true, + } + ], +}); diff --git a/components/infieldbutton/index-base.css b/components/infieldbutton/index-base.css new file mode 100644 index 0000000000..3b759ab4d6 --- /dev/null +++ b/components/infieldbutton/index-base.css @@ -0,0 +1,218 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-InfieldButton { + --spectrum-infield-button-height: var(--spectrum-component-height-100); + --spectrum-infield-button-width: var(--spectrum-component-height-100); + --spectrum-infield-button-stacked-border-radius-reset: var(--spectrum-in-field-button-fill-stacked-inner-border-rounding); + --spectrum-infield-button-edge-to-fill: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-infield-button-inner-edge-to-fill: var(--spectrum-in-field-button-stacked-inner-edge-to-fill); + --spectrum-infield-button-fill-padding: 0px; + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-infield-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-infield-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-infield-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-infield-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-infield-button-fill-justify-content: center; +} +.spectrum-InfieldButton:disabled { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-background-color-hover: var(--mod-infield-button-background-color-hover-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-background-color-down: var(--mod-infield-button-background-color-down-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-border-color: var(--mod-infield-button-border-color-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-icon-color: var(--mod-infield-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-hover: var(--mod-infield-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-down: var(--mod-infield-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-key-focus: var(--mod-infield-button-icon-color-key-focus-disabled, var(--spectrum-disabled-content-color)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeS { + --spectrum-infield-button-height: var(--spectrum-component-height-75); + --spectrum-infield-button-width: var(--spectrum-component-height-75); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-small); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-small); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-small); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeL { + --spectrum-infield-button-height: var(--spectrum-component-height-200); + --spectrum-infield-button-width: var(--spectrum-component-height-200); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-large); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-large); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-large); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeXL { + --spectrum-infield-button-height: var(--spectrum-component-height-300); + --spectrum-infield-button-width: var(--spectrum-component-height-300); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-extra-large); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-extra-large); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-extra-large); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom, +.spectrum-InfieldButton.spectrum-InfieldButton--top { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-medium)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeS, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeS { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-small)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeL, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeL { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-large)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeXL, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeXL { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-extra-large)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--quiet { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-quiet, transparent); + --mod-infield-button-background-color-hover: var(--mod-infield-button-background-color-hover-quiet, transparent); + --mod-infield-button-background-color-down: var(--mod-infield-button-background-color-down-quiet, transparent); + --mod-infield-button-background-color-key-focus: var(--mod-infield-button-background-color-key-focus-quiet, transparent); + --mod-infield-border-color: var(--mod-infield-border-color-quiet, transparent); + --mod-infield-button-border-width: var(--mod-infield-button-border-width-quiet, 0); +} +.spectrum-InfieldButton.spectrum-InfieldButton--quiet:disabled { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-quiet-disabled, transparent); + --mod-infield-button-border-color: var(--mod-infield-button-border-color-quiet-disabled, transparent); +} +@media (forced-colors: active) { + .spectrum-InfieldButton:active:not(:disabled), + .spectrum-InfieldButton:focus-visible:not(:disabled) { + --highcontrast-infield-button-border-color: Highlight; + } + @media (hover: hover) { + .spectrum-InfieldButton:hover:not(:disabled) { + --highcontrast-infield-button-border-color: Highlight; + } + } +} +.spectrum-InfieldButton { + border-style: none; + background-color: initial; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + block-size: var(--mod-infield-button-height, var(--spectrum-infield-button-height)); + inline-size: var(--mod-infield-button-width, var(--spectrum-infield-button-width)); + padding: var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)); +} +.spectrum-InfieldButton .spectrum-InfieldButton-fill { + block-size: 100%; + inline-size: 100%; + background-color: var(--mod-infield-button-background-color, var(--spectrum-infield-button-background-color)); + border-width: var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width)); + border-style: solid; + border-color: var(--highcontrast-infield-button-border-color, var(--mod-infield-button-border-color, var(--spectrum-infield-button-border-color))); + border-end-end-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-start-end-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-end-start-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-start-start-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + padding: var(--mod-infield-button-fill-padding, var(--spectrum-infield-button-fill-padding)); +} +.spectrum-InfieldButton .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color, var(--spectrum-infield-button-icon-color)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--right .spectrum-InfieldButton-fill { + border-end-start-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); + border-start-start-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--left .spectrum-InfieldButton-fill { + border-end-end-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); + border-start-end-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); +} +.spectrum-InfieldButton:disabled { + cursor: auto; +} +@media (hover: hover) { + .spectrum-InfieldButton:hover .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-hover, var(--spectrum-infield-button-background-color-hover)); + } + .spectrum-InfieldButton:hover .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-hover, var(--spectrum-infield-button-icon-color-hover)); + } +} +.spectrum-InfieldButton:active .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-down, var(--spectrum-infield-button-background-color-down)); +} +.spectrum-InfieldButton:active .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-down, var(--spectrum-infield-button-icon-color-down)); +} +.spectrum-InfieldButton:focus-visible { + outline: none; +} +.spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-key-focus, var(--spectrum-infield-button-background-color-key-focus)); +} +.spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-key-focus, var(--spectrum-infield-button-icon-color-key-focus)); +} +.spectrum-InfieldButton-fill { + display: flex; + align-items: center; + justify-content: var(--mod-infield-button-fill-justify-content, var(--spectrum-infield-button-fill-justify-content)); + transition: border-color var(--spectrum-global-animation-duration-100) ease-in-out; +} +.spectrum-InfieldButton--bottom, +.spectrum-InfieldButton--top { + block-size: calc(var(--mod-infield-button-height, var(--spectrum-infield-button-height)) / 2); +} +.spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill, +.spectrum-InfieldButton--top .spectrum-InfieldButton-fill { + box-sizing: border-box; + padding-inline-start: calc(var(--mod-infield-button-stacked-fill-padding-inline, var(--spectrum-infield-button-stacked-fill-padding-inline)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-inline-end: calc(var(--mod-infield-button-stacked-fill-padding-inline, var(--spectrum-infield-button-stacked-fill-padding-inline)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); +} +.spectrum-InfieldButton--top { + padding-block-end: var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)); +} +.spectrum-InfieldButton--top .spectrum-InfieldButton-fill { + padding-block-start: calc(var(--mod-infield-button-stacked-fill-padding-outer, var(--spectrum-infield-button-stacked-fill-padding-outer)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-block-end: calc(var(--mod-infield-button-stacked-fill-padding-inner, var(--spectrum-infield-button-stacked-fill-padding-inner)) - var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill))); + border-block-end: none; + border-start-start-radius: var(--mod-infield-button-stacked-top-border-radius-start-start, var(--spectrum-infield-button-stacked-top-border-radius-start-start)); + border-end-start-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-end-end-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); +} +.spectrum-InfieldButton--bottom { + padding-block-start: var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)); +} +.spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill { + padding-block-start: calc(var(--mod-infield-button-stacked-fill-padding-inner, var(--spectrum-infield-button-stacked-fill-padding-inner)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-block-end: calc(var(--mod-infield-button-stacked-fill-padding-outer, var(--spectrum-infield-button-stacked-fill-padding-outer)) - var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + border-end-start-radius: var(--mod-infield-button-stacked-bottom-border-radius-end-start, var(--spectrum-infield-button-stacked-bottom-border-radius-end-start)); + border-start-start-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-start-end-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-end-end-radius: var(--mod-infield-button-stacked-bottom-border-radius-end-end, var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius))); + border-block-end-width: var(--mod-infield-button-stacked-bottom-border-block-end-width, var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); +} +.spectrum-InfieldButton-icon { + display: initial; + flex-shrink: 0; + margin: 0 !important; +} +.spectrum-InfieldButton { + --spectrum-infield-button-border-width: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-width); + --spectrum-infield-button-border-color: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-color); + --spectrum-infield-button-border-radius: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-radius); + --spectrum-infield-button-border-radius-reset: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset); + --spectrum-infield-button-stacked-top-border-radius-start-start: var(--system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start); + --spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start); + --spectrum-infield-button-background-color: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color); + --spectrum-infield-button-background-color-hover: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover); + --spectrum-infield-button-background-color-down: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-down); + --spectrum-infield-button-background-color-key-focus: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus); +} +/*# sourceMappingURL=components/infieldbutton/index.css.map */ diff --git a/components/infieldbutton/index-theme.css b/components/infieldbutton/index-theme.css new file mode 100644 index 0000000000..8c39d1b0a2 --- /dev/null +++ b/components/infieldbutton/index-theme.css @@ -0,0 +1,38 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: inherit; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: transparent; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-300); +} +/*# sourceMappingURL=components/infieldbutton/themes/express.css.map */ diff --git a/components/infieldbutton/index-vars.css b/components/infieldbutton/index-vars.css new file mode 100644 index 0000000000..5a4298540b --- /dev/null +++ b/components/infieldbutton/index-vars.css @@ -0,0 +1,242 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: inherit; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: transparent; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-300); +} +.spectrum-InfieldButton { + --spectrum-infield-button-height: var(--spectrum-component-height-100); + --spectrum-infield-button-width: var(--spectrum-component-height-100); + --spectrum-infield-button-stacked-border-radius-reset: var(--spectrum-in-field-button-fill-stacked-inner-border-rounding); + --spectrum-infield-button-edge-to-fill: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-infield-button-inner-edge-to-fill: var(--spectrum-in-field-button-stacked-inner-edge-to-fill); + --spectrum-infield-button-fill-padding: 0px; + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-infield-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-infield-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-infield-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-infield-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-infield-button-fill-justify-content: center; +} +.spectrum-InfieldButton:disabled { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-background-color-hover: var(--mod-infield-button-background-color-hover-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-background-color-down: var(--mod-infield-button-background-color-down-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-border-color: var(--mod-infield-button-border-color-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-icon-color: var(--mod-infield-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-hover: var(--mod-infield-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-down: var(--mod-infield-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-key-focus: var(--mod-infield-button-icon-color-key-focus-disabled, var(--spectrum-disabled-content-color)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeS { + --spectrum-infield-button-height: var(--spectrum-component-height-75); + --spectrum-infield-button-width: var(--spectrum-component-height-75); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-small); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-small); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-small); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeL { + --spectrum-infield-button-height: var(--spectrum-component-height-200); + --spectrum-infield-button-width: var(--spectrum-component-height-200); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-large); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-large); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-large); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeXL { + --spectrum-infield-button-height: var(--spectrum-component-height-300); + --spectrum-infield-button-width: var(--spectrum-component-height-300); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-extra-large); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-extra-large); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-extra-large); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom, +.spectrum-InfieldButton.spectrum-InfieldButton--top { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-medium)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeS, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeS { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-small)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeL, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeL { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-large)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeXL, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeXL { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-extra-large)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--quiet { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-quiet, transparent); + --mod-infield-button-background-color-hover: var(--mod-infield-button-background-color-hover-quiet, transparent); + --mod-infield-button-background-color-down: var(--mod-infield-button-background-color-down-quiet, transparent); + --mod-infield-button-background-color-key-focus: var(--mod-infield-button-background-color-key-focus-quiet, transparent); + --mod-infield-border-color: var(--mod-infield-border-color-quiet, transparent); + --mod-infield-button-border-width: var(--mod-infield-button-border-width-quiet, 0); +} +.spectrum-InfieldButton.spectrum-InfieldButton--quiet:disabled { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-quiet-disabled, transparent); + --mod-infield-button-border-color: var(--mod-infield-button-border-color-quiet-disabled, transparent); +} +@media (forced-colors: active) { + .spectrum-InfieldButton:active:not(:disabled), + .spectrum-InfieldButton:focus-visible:not(:disabled) { + --highcontrast-infield-button-border-color: Highlight; + } + @media (hover: hover) { + .spectrum-InfieldButton:hover:not(:disabled) { + --highcontrast-infield-button-border-color: Highlight; + } + } +} +.spectrum-InfieldButton { + border-style: none; + background-color: initial; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + block-size: var(--mod-infield-button-height, var(--spectrum-infield-button-height)); + inline-size: var(--mod-infield-button-width, var(--spectrum-infield-button-width)); + padding: var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)); +} +.spectrum-InfieldButton .spectrum-InfieldButton-fill { + block-size: 100%; + inline-size: 100%; + background-color: var(--mod-infield-button-background-color, var(--spectrum-infield-button-background-color)); + border-width: var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width)); + border-style: solid; + border-color: var(--highcontrast-infield-button-border-color, var(--mod-infield-button-border-color, var(--spectrum-infield-button-border-color))); + border-end-end-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-start-end-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-end-start-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-start-start-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + padding: var(--mod-infield-button-fill-padding, var(--spectrum-infield-button-fill-padding)); +} +.spectrum-InfieldButton .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color, var(--spectrum-infield-button-icon-color)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--right .spectrum-InfieldButton-fill { + border-end-start-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); + border-start-start-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--left .spectrum-InfieldButton-fill { + border-end-end-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); + border-start-end-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); +} +.spectrum-InfieldButton:disabled { + cursor: auto; +} +@media (hover: hover) { + .spectrum-InfieldButton:hover .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-hover, var(--spectrum-infield-button-background-color-hover)); + } + .spectrum-InfieldButton:hover .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-hover, var(--spectrum-infield-button-icon-color-hover)); + } +} +.spectrum-InfieldButton:active .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-down, var(--spectrum-infield-button-background-color-down)); +} +.spectrum-InfieldButton:active .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-down, var(--spectrum-infield-button-icon-color-down)); +} +.spectrum-InfieldButton:focus-visible { + outline: none; +} +.spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-key-focus, var(--spectrum-infield-button-background-color-key-focus)); +} +.spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-key-focus, var(--spectrum-infield-button-icon-color-key-focus)); +} +.spectrum-InfieldButton-fill { + display: flex; + align-items: center; + justify-content: var(--mod-infield-button-fill-justify-content, var(--spectrum-infield-button-fill-justify-content)); + transition: border-color var(--spectrum-global-animation-duration-100) ease-in-out; +} +.spectrum-InfieldButton--bottom, +.spectrum-InfieldButton--top { + block-size: calc(var(--mod-infield-button-height, var(--spectrum-infield-button-height)) / 2); +} +.spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill, +.spectrum-InfieldButton--top .spectrum-InfieldButton-fill { + box-sizing: border-box; + padding-inline-start: calc(var(--mod-infield-button-stacked-fill-padding-inline, var(--spectrum-infield-button-stacked-fill-padding-inline)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-inline-end: calc(var(--mod-infield-button-stacked-fill-padding-inline, var(--spectrum-infield-button-stacked-fill-padding-inline)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); +} +.spectrum-InfieldButton--top { + padding-block-end: var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)); +} +.spectrum-InfieldButton--top .spectrum-InfieldButton-fill { + padding-block-start: calc(var(--mod-infield-button-stacked-fill-padding-outer, var(--spectrum-infield-button-stacked-fill-padding-outer)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-block-end: calc(var(--mod-infield-button-stacked-fill-padding-inner, var(--spectrum-infield-button-stacked-fill-padding-inner)) - var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill))); + border-block-end: none; + border-start-start-radius: var(--mod-infield-button-stacked-top-border-radius-start-start, var(--spectrum-infield-button-stacked-top-border-radius-start-start)); + border-end-start-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-end-end-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); +} +.spectrum-InfieldButton--bottom { + padding-block-start: var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)); +} +.spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill { + padding-block-start: calc(var(--mod-infield-button-stacked-fill-padding-inner, var(--spectrum-infield-button-stacked-fill-padding-inner)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-block-end: calc(var(--mod-infield-button-stacked-fill-padding-outer, var(--spectrum-infield-button-stacked-fill-padding-outer)) - var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + border-end-start-radius: var(--mod-infield-button-stacked-bottom-border-radius-end-start, var(--spectrum-infield-button-stacked-bottom-border-radius-end-start)); + border-start-start-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-start-end-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-end-end-radius: var(--mod-infield-button-stacked-bottom-border-radius-end-end, var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius))); + border-block-end-width: var(--mod-infield-button-stacked-bottom-border-block-end-width, var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); +} +.spectrum-InfieldButton-icon { + display: initial; + flex-shrink: 0; + margin: 0 !important; +} +.spectrum-InfieldButton { + --spectrum-infield-button-border-width: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-width); + --spectrum-infield-button-border-color: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-color); + --spectrum-infield-button-border-radius: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-radius); + --spectrum-infield-button-border-radius-reset: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset); + --spectrum-infield-button-stacked-top-border-radius-start-start: var(--system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start); + --spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start); + --spectrum-infield-button-background-color: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color); + --spectrum-infield-button-background-color-hover: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover); + --spectrum-infield-button-background-color-down: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-down); + --spectrum-infield-button-background-color-key-focus: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus); +} +/*# sourceMappingURL=components/infieldbutton/index.css.map */ diff --git a/components/infieldbutton/index.css b/components/infieldbutton/index.css new file mode 100644 index 0000000000..5a4298540b --- /dev/null +++ b/components/infieldbutton/index.css @@ -0,0 +1,242 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: inherit; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: transparent; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-300); +} +.spectrum-InfieldButton { + --spectrum-infield-button-height: var(--spectrum-component-height-100); + --spectrum-infield-button-width: var(--spectrum-component-height-100); + --spectrum-infield-button-stacked-border-radius-reset: var(--spectrum-in-field-button-fill-stacked-inner-border-rounding); + --spectrum-infield-button-edge-to-fill: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-infield-button-inner-edge-to-fill: var(--spectrum-in-field-button-stacked-inner-edge-to-fill); + --spectrum-infield-button-fill-padding: 0px; + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-medium); + --spectrum-infield-button-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-infield-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-infield-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-infield-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-infield-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-infield-button-fill-justify-content: center; +} +.spectrum-InfieldButton:disabled { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-background-color-hover: var(--mod-infield-button-background-color-hover-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-background-color-down: var(--mod-infield-button-background-color-down-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-border-color: var(--mod-infield-button-border-color-disabled, var(--spectrum-disabled-background-color)); + --mod-infield-button-icon-color: var(--mod-infield-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-hover: var(--mod-infield-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-down: var(--mod-infield-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-infield-button-icon-color-key-focus: var(--mod-infield-button-icon-color-key-focus-disabled, var(--spectrum-disabled-content-color)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeS { + --spectrum-infield-button-height: var(--spectrum-component-height-75); + --spectrum-infield-button-width: var(--spectrum-component-height-75); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-small); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-small); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-small); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeL { + --spectrum-infield-button-height: var(--spectrum-component-height-200); + --spectrum-infield-button-width: var(--spectrum-component-height-200); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-large); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-large); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-large); +} +.spectrum-InfieldButton.spectrum-InfieldButton--sizeXL { + --spectrum-infield-button-height: var(--spectrum-component-height-300); + --spectrum-infield-button-width: var(--spectrum-component-height-300); + --spectrum-infield-button-stacked-fill-padding-inline: var(--spectrum-in-field-button-edge-to-disclosure-icon-stacked-extra-large); + --spectrum-infield-button-stacked-fill-padding-outer: var(--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-extra-large); + --spectrum-infield-button-stacked-fill-padding-inner: var(--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-extra-large); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom, +.spectrum-InfieldButton.spectrum-InfieldButton--top { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-medium)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeS, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeS { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-small)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeL, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeL { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-large)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeXL, +.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeXL { + --mod-infield-button-width: var(--mod-infield-button-width-stacked, var(--spectrum-in-field-button-width-stacked-extra-large)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--quiet { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-quiet, transparent); + --mod-infield-button-background-color-hover: var(--mod-infield-button-background-color-hover-quiet, transparent); + --mod-infield-button-background-color-down: var(--mod-infield-button-background-color-down-quiet, transparent); + --mod-infield-button-background-color-key-focus: var(--mod-infield-button-background-color-key-focus-quiet, transparent); + --mod-infield-border-color: var(--mod-infield-border-color-quiet, transparent); + --mod-infield-button-border-width: var(--mod-infield-button-border-width-quiet, 0); +} +.spectrum-InfieldButton.spectrum-InfieldButton--quiet:disabled { + --mod-infield-button-background-color: var(--mod-infield-button-background-color-quiet-disabled, transparent); + --mod-infield-button-border-color: var(--mod-infield-button-border-color-quiet-disabled, transparent); +} +@media (forced-colors: active) { + .spectrum-InfieldButton:active:not(:disabled), + .spectrum-InfieldButton:focus-visible:not(:disabled) { + --highcontrast-infield-button-border-color: Highlight; + } + @media (hover: hover) { + .spectrum-InfieldButton:hover:not(:disabled) { + --highcontrast-infield-button-border-color: Highlight; + } + } +} +.spectrum-InfieldButton { + border-style: none; + background-color: initial; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + block-size: var(--mod-infield-button-height, var(--spectrum-infield-button-height)); + inline-size: var(--mod-infield-button-width, var(--spectrum-infield-button-width)); + padding: var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)); +} +.spectrum-InfieldButton .spectrum-InfieldButton-fill { + block-size: 100%; + inline-size: 100%; + background-color: var(--mod-infield-button-background-color, var(--spectrum-infield-button-background-color)); + border-width: var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width)); + border-style: solid; + border-color: var(--highcontrast-infield-button-border-color, var(--mod-infield-button-border-color, var(--spectrum-infield-button-border-color))); + border-end-end-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-start-end-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-end-start-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + border-start-start-radius: var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius)); + padding: var(--mod-infield-button-fill-padding, var(--spectrum-infield-button-fill-padding)); +} +.spectrum-InfieldButton .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color, var(--spectrum-infield-button-icon-color)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--right .spectrum-InfieldButton-fill { + border-end-start-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); + border-start-start-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); +} +.spectrum-InfieldButton.spectrum-InfieldButton--left .spectrum-InfieldButton-fill { + border-end-end-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); + border-start-end-radius: var(--mod-infield-button-border-radius-reset, var(--spectrum-infield-button-border-radius-reset)); +} +.spectrum-InfieldButton:disabled { + cursor: auto; +} +@media (hover: hover) { + .spectrum-InfieldButton:hover .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-hover, var(--spectrum-infield-button-background-color-hover)); + } + .spectrum-InfieldButton:hover .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-hover, var(--spectrum-infield-button-icon-color-hover)); + } +} +.spectrum-InfieldButton:active .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-down, var(--spectrum-infield-button-background-color-down)); +} +.spectrum-InfieldButton:active .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-down, var(--spectrum-infield-button-icon-color-down)); +} +.spectrum-InfieldButton:focus-visible { + outline: none; +} +.spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-fill { + background-color: var(--mod-infield-button-background-color-key-focus, var(--spectrum-infield-button-background-color-key-focus)); +} +.spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-icon { + color: var(--mod-infield-button-icon-color-key-focus, var(--spectrum-infield-button-icon-color-key-focus)); +} +.spectrum-InfieldButton-fill { + display: flex; + align-items: center; + justify-content: var(--mod-infield-button-fill-justify-content, var(--spectrum-infield-button-fill-justify-content)); + transition: border-color var(--spectrum-global-animation-duration-100) ease-in-out; +} +.spectrum-InfieldButton--bottom, +.spectrum-InfieldButton--top { + block-size: calc(var(--mod-infield-button-height, var(--spectrum-infield-button-height)) / 2); +} +.spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill, +.spectrum-InfieldButton--top .spectrum-InfieldButton-fill { + box-sizing: border-box; + padding-inline-start: calc(var(--mod-infield-button-stacked-fill-padding-inline, var(--spectrum-infield-button-stacked-fill-padding-inline)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-inline-end: calc(var(--mod-infield-button-stacked-fill-padding-inline, var(--spectrum-infield-button-stacked-fill-padding-inline)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); +} +.spectrum-InfieldButton--top { + padding-block-end: var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)); +} +.spectrum-InfieldButton--top .spectrum-InfieldButton-fill { + padding-block-start: calc(var(--mod-infield-button-stacked-fill-padding-outer, var(--spectrum-infield-button-stacked-fill-padding-outer)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-block-end: calc(var(--mod-infield-button-stacked-fill-padding-inner, var(--spectrum-infield-button-stacked-fill-padding-inner)) - var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill))); + border-block-end: none; + border-start-start-radius: var(--mod-infield-button-stacked-top-border-radius-start-start, var(--spectrum-infield-button-stacked-top-border-radius-start-start)); + border-end-start-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-end-end-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); +} +.spectrum-InfieldButton--bottom { + padding-block-start: var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)); +} +.spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill { + padding-block-start: calc(var(--mod-infield-button-stacked-fill-padding-inner, var(--spectrum-infield-button-stacked-fill-padding-inner)) - var(--mod-infield-button-edge-to-fill, var(--spectrum-infield-button-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + padding-block-end: calc(var(--mod-infield-button-stacked-fill-padding-outer, var(--spectrum-infield-button-stacked-fill-padding-outer)) - var(--mod-infield-button-inner-edge-to-fill, var(--spectrum-infield-button-inner-edge-to-fill)) - var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); + border-end-start-radius: var(--mod-infield-button-stacked-bottom-border-radius-end-start, var(--spectrum-infield-button-stacked-bottom-border-radius-end-start)); + border-start-start-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-start-end-radius: var(--mod-infield-button-stacked-border-radius-reset, var(--spectrum-infield-button-stacked-border-radius-reset)); + border-end-end-radius: var(--mod-infield-button-stacked-bottom-border-radius-end-end, var(--mod-infield-button-border-radius, var(--spectrum-infield-button-border-radius))); + border-block-end-width: var(--mod-infield-button-stacked-bottom-border-block-end-width, var(--mod-infield-button-border-width, var(--spectrum-infield-button-border-width))); +} +.spectrum-InfieldButton-icon { + display: initial; + flex-shrink: 0; + margin: 0 !important; +} +.spectrum-InfieldButton { + --spectrum-infield-button-border-width: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-width); + --spectrum-infield-button-border-color: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-color); + --spectrum-infield-button-border-radius: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-radius); + --spectrum-infield-button-border-radius-reset: var(--system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset); + --spectrum-infield-button-stacked-top-border-radius-start-start: var(--system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start); + --spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start); + --spectrum-infield-button-background-color: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color); + --spectrum-infield-button-background-color-hover: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover); + --spectrum-infield-button-background-color-down: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-down); + --spectrum-infield-button-background-color-key-focus: var(--system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus); +} +/*# sourceMappingURL=components/infieldbutton/index.css.map */ diff --git a/components/infieldbutton/metadata.json b/components/infieldbutton/metadata.json new file mode 100644 index 0000000000..7411f64ef5 --- /dev/null +++ b/components/infieldbutton/metadata.json @@ -0,0 +1,160 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-InfieldButton", + ".spectrum-InfieldButton .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton .spectrum-InfieldButton-icon", + ".spectrum-InfieldButton--bottom", + ".spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton--bottom .spectrum-InfieldButton-fill,\n.spectrum-InfieldButton--top .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton--bottom,\n.spectrum-InfieldButton--top", + ".spectrum-InfieldButton--top", + ".spectrum-InfieldButton--top .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton-fill", + ".spectrum-InfieldButton-icon", + ".spectrum-InfieldButton.spectrum-InfieldButton--bottom,\n.spectrum-InfieldButton.spectrum-InfieldButton--top", + ".spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeL,\n.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeL", + ".spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeS,\n.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeS", + ".spectrum-InfieldButton.spectrum-InfieldButton--bottom.spectrum-InfieldButton--sizeXL,\n.spectrum-InfieldButton.spectrum-InfieldButton--top.spectrum-InfieldButton--sizeXL", + ".spectrum-InfieldButton.spectrum-InfieldButton--left .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton.spectrum-InfieldButton--quiet", + ".spectrum-InfieldButton.spectrum-InfieldButton--quiet:disabled", + ".spectrum-InfieldButton.spectrum-InfieldButton--right .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton.spectrum-InfieldButton--sizeL", + ".spectrum-InfieldButton.spectrum-InfieldButton--sizeS", + ".spectrum-InfieldButton.spectrum-InfieldButton--sizeXL", + ".spectrum-InfieldButton:active .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton:active .spectrum-InfieldButton-icon", + ".spectrum-InfieldButton:active:not(:disabled),\n\t.spectrum-InfieldButton:focus-visible:not(:disabled)", + ".spectrum-InfieldButton:disabled", + ".spectrum-InfieldButton:focus-visible", + ".spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton:focus-visible .spectrum-InfieldButton-icon", + ".spectrum-InfieldButton:hover .spectrum-InfieldButton-fill", + ".spectrum-InfieldButton:hover .spectrum-InfieldButton-icon", + ".spectrum-InfieldButton:hover:not(:disabled)" + ], + "mods": [ + "--mod-infield-border-color-quiet", + "--mod-infield-button-background-color", + "--mod-infield-button-background-color-disabled", + "--mod-infield-button-background-color-down", + "--mod-infield-button-background-color-down-disabled", + "--mod-infield-button-background-color-down-quiet", + "--mod-infield-button-background-color-hover", + "--mod-infield-button-background-color-hover-disabled", + "--mod-infield-button-background-color-hover-quiet", + "--mod-infield-button-background-color-key-focus", + "--mod-infield-button-background-color-key-focus-quiet", + "--mod-infield-button-background-color-quiet", + "--mod-infield-button-background-color-quiet-disabled", + "--mod-infield-button-border-color", + "--mod-infield-button-border-color-disabled", + "--mod-infield-button-border-color-quiet-disabled", + "--mod-infield-button-border-radius", + "--mod-infield-button-border-radius-reset", + "--mod-infield-button-border-width", + "--mod-infield-button-border-width-quiet", + "--mod-infield-button-edge-to-fill", + "--mod-infield-button-fill-justify-content", + "--mod-infield-button-fill-padding", + "--mod-infield-button-height", + "--mod-infield-button-icon-color", + "--mod-infield-button-icon-color-disabled", + "--mod-infield-button-icon-color-down", + "--mod-infield-button-icon-color-down-disabled", + "--mod-infield-button-icon-color-hover", + "--mod-infield-button-icon-color-hover-disabled", + "--mod-infield-button-icon-color-key-focus", + "--mod-infield-button-icon-color-key-focus-disabled", + "--mod-infield-button-inner-edge-to-fill", + "--mod-infield-button-stacked-border-radius-reset", + "--mod-infield-button-stacked-bottom-border-block-end-width", + "--mod-infield-button-stacked-bottom-border-radius-end-end", + "--mod-infield-button-stacked-bottom-border-radius-end-start", + "--mod-infield-button-stacked-fill-padding-inline", + "--mod-infield-button-stacked-fill-padding-inner", + "--mod-infield-button-stacked-fill-padding-outer", + "--mod-infield-button-stacked-top-border-radius-start-start", + "--mod-infield-button-width", + "--mod-infield-button-width-stacked" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-border-width-100", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-corner-radius-100", + "--spectrum-corner-radius-75", + "--spectrum-disabled-background-color", + "--spectrum-disabled-content-color", + "--spectrum-global-animation-duration-100", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-75", + "--spectrum-in-field-button-edge-to-disclosure-icon-stacked-extra-large", + "--spectrum-in-field-button-edge-to-disclosure-icon-stacked-large", + "--spectrum-in-field-button-edge-to-disclosure-icon-stacked-medium", + "--spectrum-in-field-button-edge-to-disclosure-icon-stacked-small", + "--spectrum-in-field-button-edge-to-fill", + "--spectrum-in-field-button-fill-stacked-inner-border-rounding", + "--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-extra-large", + "--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-large", + "--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-medium", + "--spectrum-in-field-button-inner-edge-to-disclosure-icon-stacked-small", + "--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-extra-large", + "--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-large", + "--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-medium", + "--spectrum-in-field-button-outer-edge-to-disclosure-icon-stacked-small", + "--spectrum-in-field-button-stacked-inner-edge-to-fill", + "--spectrum-in-field-button-width-stacked-extra-large", + "--spectrum-in-field-button-width-stacked-large", + "--spectrum-in-field-button-width-stacked-medium", + "--spectrum-in-field-button-width-stacked-small", + "--spectrum-infield-button-background-color", + "--spectrum-infield-button-background-color-down", + "--spectrum-infield-button-background-color-hover", + "--spectrum-infield-button-background-color-key-focus", + "--spectrum-infield-button-border-color", + "--spectrum-infield-button-border-radius", + "--spectrum-infield-button-border-radius-reset", + "--spectrum-infield-button-border-width", + "--spectrum-infield-button-edge-to-fill", + "--spectrum-infield-button-fill-justify-content", + "--spectrum-infield-button-fill-padding", + "--spectrum-infield-button-height", + "--spectrum-infield-button-icon-color", + "--spectrum-infield-button-icon-color-down", + "--spectrum-infield-button-icon-color-hover", + "--spectrum-infield-button-icon-color-key-focus", + "--spectrum-infield-button-inner-edge-to-fill", + "--spectrum-infield-button-stacked-border-radius-reset", + "--spectrum-infield-button-stacked-bottom-border-radius-end-start", + "--spectrum-infield-button-stacked-fill-padding-inline", + "--spectrum-infield-button-stacked-fill-padding-inner", + "--spectrum-infield-button-stacked-fill-padding-outer", + "--spectrum-infield-button-stacked-top-border-radius-start-start", + "--spectrum-infield-button-width", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus" + ], + "system": [ + "--system-spectrum-infieldbutton-spectrum-infield-button-background-color", + "--system-spectrum-infieldbutton-spectrum-infield-button-background-color-down", + "--system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover", + "--system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus", + "--system-spectrum-infieldbutton-spectrum-infield-button-border-color", + "--system-spectrum-infieldbutton-spectrum-infield-button-border-radius", + "--system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset", + "--system-spectrum-infieldbutton-spectrum-infield-button-border-width", + "--system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start", + "--system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start" + ], + "a11y": ["--highcontrast-infield-button-border-color"] +} diff --git a/components/infieldbutton/package.json b/components/infieldbutton/package.json new file mode 100644 index 0000000000..476c7ccd68 --- /dev/null +++ b/components/infieldbutton/package.json @@ -0,0 +1,46 @@ +{ + "name": "@spectrum-css/infieldbutton", + "version": "5.1.1", + "description": "The Spectrum CSS infield button component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/infieldbutton", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/infieldbutton" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/infieldbutton/template.js b/components/infieldbutton/template.js new file mode 100644 index 0000000000..04c0371b53 --- /dev/null +++ b/components/infieldbutton/template.js @@ -0,0 +1,91 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-InfieldButton", + customClasses = [], + size = "m", + position, + isQuiet, + iconName = "Add", + isDisabled, + isInvalid, + isStacked, + tabIndex = 0, +} = {}, context = {}) => { + return isStacked ? html` + + + ` : html` + + `; +}; diff --git a/components/infieldbutton/themes/express.css b/components/infieldbutton/themes/express.css new file mode 100644 index 0000000000..076d193d05 --- /dev/null +++ b/components/infieldbutton/themes/express.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: transparent; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-corner-radius-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-300); +} +/*# sourceMappingURL=components/infieldbutton/themes/express.css.map */ diff --git a/components/infieldbutton/themes/spectrum.css b/components/infieldbutton/themes/spectrum.css new file mode 100644 index 0000000000..0d8cdfb606 --- /dev/null +++ b/components/infieldbutton/themes/spectrum.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-infieldbutton-spectrum-infield-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-color: inherit; + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-infieldbutton-spectrum-infield-button-border-radius-reset: 0; + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-top-border-radius-start-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-stacked-bottom-border-radius-end-start: var(--spectrum-infield-button-border-radius-reset); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color: var(--spectrum-gray-75); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-infieldbutton-spectrum-infield-button-background-color-key-focus: var(--spectrum-gray-200); +} +/*# sourceMappingURL=components/infieldbutton/themes/spectrum.css.map */ diff --git a/components/inlinealert/index-base.css b/components/inlinealert/index-base.css new file mode 100644 index 0000000000..90bce25f67 --- /dev/null +++ b/components/inlinealert/index-base.css @@ -0,0 +1,129 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-InLineAlert { + --spectrum-inlinealert-heading-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-inlinealert-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-inlinealert-heading-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-inlinealert-heading-font-size: var(--spectrum-heading-size-xxs); + --spectrum-inlinealert-heading-line-height: var(--spectrum-heading-line-height); + --spectrum-inlinealert-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-inlinealert-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-inlinealert-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-inlinealert-content-font-size: var(--spectrum-body-size-s); + --spectrum-inlinealert-content-line-height: var(--spectrum-body-line-height); + --spectrum-inlinealert-border-width: var(--spectrum-border-width-200); + --spectrum-inlinealert-border-radius: var(--spectrum-corner-radius-100); + --spectrum-inlinealert-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-inlinealert-min-inline-size: var(--spectrum-in-line-alert-minimum-width); + --spectrum-inlinealert-header-min-block-size: var(--spectrum-component-height-50); + --spectrum-inlinealert-spacing-edge-to-text: var(--spectrum-spacing-400); + --spectrum-inlinealert-spacing-header-to-icon: var(--spectrum-spacing-400); + --spectrum-inlinealert-spacing-header-content-button: var(--spectrum-spacing-300); + --spectrum-inlinealert-background-color: var(--spectrum-background-layer-2-color); + --spectrum-inlinealert-border-and-icon-color: var(--spectrum-neutral-visual-color); + --spectrum-inlinealert-header-color: var(--spectrum-heading-color); + --spectrum-inlinealert-content-color: var(--spectrum-body-color); + --spectrum-inlinealert-border-and-icon-color-info: var(--spectrum-informative-visual-color); + --spectrum-inlinealert-border-and-icon-color-positive: var(--spectrum-positive-visual-color); + --spectrum-inlinealert-border-and-icon-color-notice: var(--spectrum-notice-visual-color); + --spectrum-inlinealert-border-and-icon-color-negative: var(--spectrum-negative-visual-color); + position: relative; + display: inline-block; + box-sizing: border-box; + min-inline-size: var(--mod-inlinealert-min-inline-size, var(--spectrum-inlinealert-min-inline-size)); + padding-block: var(--mod-inlinealert-spacing-edge-to-text, var(--spectrum-inlinealert-spacing-edge-to-text)); + padding-inline: var(--mod-inlinealert-spacing-edge-to-text, var(--spectrum-inlinealert-spacing-edge-to-text)); + border-block-width: var(--mod-inlinealert-border-width, var(--spectrum-inlinealert-border-width)); + border-inline-width: var(--mod-inlinealert-border-width, var(--spectrum-inlinealert-border-width)); + border-style: solid; + border-radius: var(--mod-inlinealert-border-radius, var(--spectrum-inlinealert-border-radius)); + background-color: var(--highcontrast-inlinealert-background-color, var(--mod-inlinealert-background-color, var(--spectrum-inlinealert-background-color))); + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color, var(--spectrum-inlinealert-border-and-icon-color))); +} +@media (forced-colors: active) { + .spectrum-InLineAlert { + --highcontrast-inlinealert-background-color: Background; + --highcontrast-inlinealert-header-color: CanvasText; + --highcontrast-inlinealert-content-color: CanvasText; + --highcontrast-inlinealert-border-and-icon-color: ButtonBorder; + } +} +.spectrum-InLineAlert-icon { + inline-size: var(--mod-inlinealert-icon-size, var(--spectrum-inlinealert-icon-size)); + block-size: var(--mod-inlinealert-icon-size, var(--spectrum-inlinealert-icon-size)); +} +.spectrum-InLineAlert-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--mod-inlinealert-spacing-header-to-icon, var(--spectrum-inlinealert-spacing-header-to-icon)); + font-weight: var(--mod-inlinealert-heading-font-weight, var(--spectrum-inlinealert-heading-font-weight)); + font-family: var(--mod-inlinealert-heading-font-family, var(--spectrum-inlinealert-heading-font-family)); + font-style: var(--mod-inlinealert-heading-font-style, var(--spectrum-inlinealert-heading-font-style)); + font-size: var(--mod-inlinealert-heading-font-size, var(--spectrum-inlinealert-heading-font-size)); + line-height: var(--mod-inlinealert-heading-line-height, var(--spectrum-inlinealert-heading-line-height)); + text-transform: none; + min-block-size: var(--mod-inlinealert-header-min-block-size, var(--spectrum-inlinealert-header-min-block-size)); + color: var(--highcontrast-inlinealert-header-color, var(--mod-inlinealert-header-color, var(--spectrum-inlinealert-header-color))); +} +.spectrum-InLineAlert-content { + display: block; + margin-block-end: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding: 0; + word-wrap: break-word; + font-weight: var(--mod-inlinealert-content-font-weight, var(--spectrum-inlinealert-content-font-weight)); + font-family: var(--mod-inlinealert-content-font-family, var(--spectrum-inlinealert-content-font-family)); + font-style: var(--mod-inlinealert-content-font-style, var(--spectrum-inlinealert-content-font-style)); + font-size: var(--mod-inlinealert-content-font-size, var(--spectrum-inlinealert-content-font-size)); + line-height: var(--mod-inlinealert-content-line-height, var(--spectrum-inlinealert-content-line-height)); + color: var(--highcontrast-inlinealert-content-color, var(--mod-inlinealert-content-color, var(--spectrum-inlinealert-content-color))); +} +.spectrum-InLineAlert-content, +.spectrum-InLineAlert-footer { + margin-block-start: var(--mod-inlinealert-spacing-header-content-button, var(--spectrum-inlinealert-spacing-header-content-button)); +} +.spectrum-InLineAlert-footer { + display: flex; + justify-content: flex-end; +} +.spectrum-InLineAlert-footer:empty { + display: none; +} +.spectrum-InLineAlert--info { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-info, var(--spectrum-inlinealert-border-and-icon-color-info))); +} +.spectrum-InLineAlert--info .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-info, var(--spectrum-inlinealert-border-and-icon-color-info))); +} +.spectrum-InLineAlert--notice { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-notice, var(--spectrum-inlinealert-border-and-icon-color-notice))); +} +.spectrum-InLineAlert--notice .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-notice, var(--spectrum-inlinealert-border-and-icon-color-notice))); +} +.spectrum-InLineAlert--positive { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-positive, var(--spectrum-inlinealert-border-and-icon-color-positive))); +} +.spectrum-InLineAlert--positive .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-positive, var(--spectrum-inlinealert-border-and-icon-color-positive))); +} +.spectrum-InLineAlert--negative { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-negative, var(--spectrum-inlinealert-border-and-icon-color-negative))); +} +.spectrum-InLineAlert--negative .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-negative, var(--spectrum-inlinealert-border-and-icon-color-negative))); +} +/*# sourceMappingURL=components/inlinealert/index.css.map */ diff --git a/components/inlinealert/index-vars.css b/components/inlinealert/index-vars.css new file mode 100644 index 0000000000..90bce25f67 --- /dev/null +++ b/components/inlinealert/index-vars.css @@ -0,0 +1,129 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-InLineAlert { + --spectrum-inlinealert-heading-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-inlinealert-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-inlinealert-heading-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-inlinealert-heading-font-size: var(--spectrum-heading-size-xxs); + --spectrum-inlinealert-heading-line-height: var(--spectrum-heading-line-height); + --spectrum-inlinealert-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-inlinealert-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-inlinealert-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-inlinealert-content-font-size: var(--spectrum-body-size-s); + --spectrum-inlinealert-content-line-height: var(--spectrum-body-line-height); + --spectrum-inlinealert-border-width: var(--spectrum-border-width-200); + --spectrum-inlinealert-border-radius: var(--spectrum-corner-radius-100); + --spectrum-inlinealert-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-inlinealert-min-inline-size: var(--spectrum-in-line-alert-minimum-width); + --spectrum-inlinealert-header-min-block-size: var(--spectrum-component-height-50); + --spectrum-inlinealert-spacing-edge-to-text: var(--spectrum-spacing-400); + --spectrum-inlinealert-spacing-header-to-icon: var(--spectrum-spacing-400); + --spectrum-inlinealert-spacing-header-content-button: var(--spectrum-spacing-300); + --spectrum-inlinealert-background-color: var(--spectrum-background-layer-2-color); + --spectrum-inlinealert-border-and-icon-color: var(--spectrum-neutral-visual-color); + --spectrum-inlinealert-header-color: var(--spectrum-heading-color); + --spectrum-inlinealert-content-color: var(--spectrum-body-color); + --spectrum-inlinealert-border-and-icon-color-info: var(--spectrum-informative-visual-color); + --spectrum-inlinealert-border-and-icon-color-positive: var(--spectrum-positive-visual-color); + --spectrum-inlinealert-border-and-icon-color-notice: var(--spectrum-notice-visual-color); + --spectrum-inlinealert-border-and-icon-color-negative: var(--spectrum-negative-visual-color); + position: relative; + display: inline-block; + box-sizing: border-box; + min-inline-size: var(--mod-inlinealert-min-inline-size, var(--spectrum-inlinealert-min-inline-size)); + padding-block: var(--mod-inlinealert-spacing-edge-to-text, var(--spectrum-inlinealert-spacing-edge-to-text)); + padding-inline: var(--mod-inlinealert-spacing-edge-to-text, var(--spectrum-inlinealert-spacing-edge-to-text)); + border-block-width: var(--mod-inlinealert-border-width, var(--spectrum-inlinealert-border-width)); + border-inline-width: var(--mod-inlinealert-border-width, var(--spectrum-inlinealert-border-width)); + border-style: solid; + border-radius: var(--mod-inlinealert-border-radius, var(--spectrum-inlinealert-border-radius)); + background-color: var(--highcontrast-inlinealert-background-color, var(--mod-inlinealert-background-color, var(--spectrum-inlinealert-background-color))); + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color, var(--spectrum-inlinealert-border-and-icon-color))); +} +@media (forced-colors: active) { + .spectrum-InLineAlert { + --highcontrast-inlinealert-background-color: Background; + --highcontrast-inlinealert-header-color: CanvasText; + --highcontrast-inlinealert-content-color: CanvasText; + --highcontrast-inlinealert-border-and-icon-color: ButtonBorder; + } +} +.spectrum-InLineAlert-icon { + inline-size: var(--mod-inlinealert-icon-size, var(--spectrum-inlinealert-icon-size)); + block-size: var(--mod-inlinealert-icon-size, var(--spectrum-inlinealert-icon-size)); +} +.spectrum-InLineAlert-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--mod-inlinealert-spacing-header-to-icon, var(--spectrum-inlinealert-spacing-header-to-icon)); + font-weight: var(--mod-inlinealert-heading-font-weight, var(--spectrum-inlinealert-heading-font-weight)); + font-family: var(--mod-inlinealert-heading-font-family, var(--spectrum-inlinealert-heading-font-family)); + font-style: var(--mod-inlinealert-heading-font-style, var(--spectrum-inlinealert-heading-font-style)); + font-size: var(--mod-inlinealert-heading-font-size, var(--spectrum-inlinealert-heading-font-size)); + line-height: var(--mod-inlinealert-heading-line-height, var(--spectrum-inlinealert-heading-line-height)); + text-transform: none; + min-block-size: var(--mod-inlinealert-header-min-block-size, var(--spectrum-inlinealert-header-min-block-size)); + color: var(--highcontrast-inlinealert-header-color, var(--mod-inlinealert-header-color, var(--spectrum-inlinealert-header-color))); +} +.spectrum-InLineAlert-content { + display: block; + margin-block-end: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding: 0; + word-wrap: break-word; + font-weight: var(--mod-inlinealert-content-font-weight, var(--spectrum-inlinealert-content-font-weight)); + font-family: var(--mod-inlinealert-content-font-family, var(--spectrum-inlinealert-content-font-family)); + font-style: var(--mod-inlinealert-content-font-style, var(--spectrum-inlinealert-content-font-style)); + font-size: var(--mod-inlinealert-content-font-size, var(--spectrum-inlinealert-content-font-size)); + line-height: var(--mod-inlinealert-content-line-height, var(--spectrum-inlinealert-content-line-height)); + color: var(--highcontrast-inlinealert-content-color, var(--mod-inlinealert-content-color, var(--spectrum-inlinealert-content-color))); +} +.spectrum-InLineAlert-content, +.spectrum-InLineAlert-footer { + margin-block-start: var(--mod-inlinealert-spacing-header-content-button, var(--spectrum-inlinealert-spacing-header-content-button)); +} +.spectrum-InLineAlert-footer { + display: flex; + justify-content: flex-end; +} +.spectrum-InLineAlert-footer:empty { + display: none; +} +.spectrum-InLineAlert--info { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-info, var(--spectrum-inlinealert-border-and-icon-color-info))); +} +.spectrum-InLineAlert--info .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-info, var(--spectrum-inlinealert-border-and-icon-color-info))); +} +.spectrum-InLineAlert--notice { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-notice, var(--spectrum-inlinealert-border-and-icon-color-notice))); +} +.spectrum-InLineAlert--notice .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-notice, var(--spectrum-inlinealert-border-and-icon-color-notice))); +} +.spectrum-InLineAlert--positive { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-positive, var(--spectrum-inlinealert-border-and-icon-color-positive))); +} +.spectrum-InLineAlert--positive .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-positive, var(--spectrum-inlinealert-border-and-icon-color-positive))); +} +.spectrum-InLineAlert--negative { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-negative, var(--spectrum-inlinealert-border-and-icon-color-negative))); +} +.spectrum-InLineAlert--negative .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-negative, var(--spectrum-inlinealert-border-and-icon-color-negative))); +} +/*# sourceMappingURL=components/inlinealert/index.css.map */ diff --git a/components/inlinealert/index.css b/components/inlinealert/index.css new file mode 100644 index 0000000000..90bce25f67 --- /dev/null +++ b/components/inlinealert/index.css @@ -0,0 +1,129 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-InLineAlert { + --spectrum-inlinealert-heading-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-inlinealert-heading-font-weight: var(--spectrum-heading-sans-serif-font-weight); + --spectrum-inlinealert-heading-font-style: var(--spectrum-heading-sans-serif-font-style); + --spectrum-inlinealert-heading-font-size: var(--spectrum-heading-size-xxs); + --spectrum-inlinealert-heading-line-height: var(--spectrum-heading-line-height); + --spectrum-inlinealert-content-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-inlinealert-content-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-inlinealert-content-font-style: var(--spectrum-body-sans-serif-font-style); + --spectrum-inlinealert-content-font-size: var(--spectrum-body-size-s); + --spectrum-inlinealert-content-line-height: var(--spectrum-body-line-height); + --spectrum-inlinealert-border-width: var(--spectrum-border-width-200); + --spectrum-inlinealert-border-radius: var(--spectrum-corner-radius-100); + --spectrum-inlinealert-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-inlinealert-min-inline-size: var(--spectrum-in-line-alert-minimum-width); + --spectrum-inlinealert-header-min-block-size: var(--spectrum-component-height-50); + --spectrum-inlinealert-spacing-edge-to-text: var(--spectrum-spacing-400); + --spectrum-inlinealert-spacing-header-to-icon: var(--spectrum-spacing-400); + --spectrum-inlinealert-spacing-header-content-button: var(--spectrum-spacing-300); + --spectrum-inlinealert-background-color: var(--spectrum-background-layer-2-color); + --spectrum-inlinealert-border-and-icon-color: var(--spectrum-neutral-visual-color); + --spectrum-inlinealert-header-color: var(--spectrum-heading-color); + --spectrum-inlinealert-content-color: var(--spectrum-body-color); + --spectrum-inlinealert-border-and-icon-color-info: var(--spectrum-informative-visual-color); + --spectrum-inlinealert-border-and-icon-color-positive: var(--spectrum-positive-visual-color); + --spectrum-inlinealert-border-and-icon-color-notice: var(--spectrum-notice-visual-color); + --spectrum-inlinealert-border-and-icon-color-negative: var(--spectrum-negative-visual-color); + position: relative; + display: inline-block; + box-sizing: border-box; + min-inline-size: var(--mod-inlinealert-min-inline-size, var(--spectrum-inlinealert-min-inline-size)); + padding-block: var(--mod-inlinealert-spacing-edge-to-text, var(--spectrum-inlinealert-spacing-edge-to-text)); + padding-inline: var(--mod-inlinealert-spacing-edge-to-text, var(--spectrum-inlinealert-spacing-edge-to-text)); + border-block-width: var(--mod-inlinealert-border-width, var(--spectrum-inlinealert-border-width)); + border-inline-width: var(--mod-inlinealert-border-width, var(--spectrum-inlinealert-border-width)); + border-style: solid; + border-radius: var(--mod-inlinealert-border-radius, var(--spectrum-inlinealert-border-radius)); + background-color: var(--highcontrast-inlinealert-background-color, var(--mod-inlinealert-background-color, var(--spectrum-inlinealert-background-color))); + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color, var(--spectrum-inlinealert-border-and-icon-color))); +} +@media (forced-colors: active) { + .spectrum-InLineAlert { + --highcontrast-inlinealert-background-color: Background; + --highcontrast-inlinealert-header-color: CanvasText; + --highcontrast-inlinealert-content-color: CanvasText; + --highcontrast-inlinealert-border-and-icon-color: ButtonBorder; + } +} +.spectrum-InLineAlert-icon { + inline-size: var(--mod-inlinealert-icon-size, var(--spectrum-inlinealert-icon-size)); + block-size: var(--mod-inlinealert-icon-size, var(--spectrum-inlinealert-icon-size)); +} +.spectrum-InLineAlert-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--mod-inlinealert-spacing-header-to-icon, var(--spectrum-inlinealert-spacing-header-to-icon)); + font-weight: var(--mod-inlinealert-heading-font-weight, var(--spectrum-inlinealert-heading-font-weight)); + font-family: var(--mod-inlinealert-heading-font-family, var(--spectrum-inlinealert-heading-font-family)); + font-style: var(--mod-inlinealert-heading-font-style, var(--spectrum-inlinealert-heading-font-style)); + font-size: var(--mod-inlinealert-heading-font-size, var(--spectrum-inlinealert-heading-font-size)); + line-height: var(--mod-inlinealert-heading-line-height, var(--spectrum-inlinealert-heading-line-height)); + text-transform: none; + min-block-size: var(--mod-inlinealert-header-min-block-size, var(--spectrum-inlinealert-header-min-block-size)); + color: var(--highcontrast-inlinealert-header-color, var(--mod-inlinealert-header-color, var(--spectrum-inlinealert-header-color))); +} +.spectrum-InLineAlert-content { + display: block; + margin-block-end: 0; + margin-inline-start: 0; + margin-inline-end: 0; + padding: 0; + word-wrap: break-word; + font-weight: var(--mod-inlinealert-content-font-weight, var(--spectrum-inlinealert-content-font-weight)); + font-family: var(--mod-inlinealert-content-font-family, var(--spectrum-inlinealert-content-font-family)); + font-style: var(--mod-inlinealert-content-font-style, var(--spectrum-inlinealert-content-font-style)); + font-size: var(--mod-inlinealert-content-font-size, var(--spectrum-inlinealert-content-font-size)); + line-height: var(--mod-inlinealert-content-line-height, var(--spectrum-inlinealert-content-line-height)); + color: var(--highcontrast-inlinealert-content-color, var(--mod-inlinealert-content-color, var(--spectrum-inlinealert-content-color))); +} +.spectrum-InLineAlert-content, +.spectrum-InLineAlert-footer { + margin-block-start: var(--mod-inlinealert-spacing-header-content-button, var(--spectrum-inlinealert-spacing-header-content-button)); +} +.spectrum-InLineAlert-footer { + display: flex; + justify-content: flex-end; +} +.spectrum-InLineAlert-footer:empty { + display: none; +} +.spectrum-InLineAlert--info { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-info, var(--spectrum-inlinealert-border-and-icon-color-info))); +} +.spectrum-InLineAlert--info .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-info, var(--spectrum-inlinealert-border-and-icon-color-info))); +} +.spectrum-InLineAlert--notice { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-notice, var(--spectrum-inlinealert-border-and-icon-color-notice))); +} +.spectrum-InLineAlert--notice .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-notice, var(--spectrum-inlinealert-border-and-icon-color-notice))); +} +.spectrum-InLineAlert--positive { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-positive, var(--spectrum-inlinealert-border-and-icon-color-positive))); +} +.spectrum-InLineAlert--positive .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-positive, var(--spectrum-inlinealert-border-and-icon-color-positive))); +} +.spectrum-InLineAlert--negative { + border-color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-negative, var(--spectrum-inlinealert-border-and-icon-color-negative))); +} +.spectrum-InLineAlert--negative .spectrum-InLineAlert-icon { + color: var(--highcontrast-inlinealert-border-and-icon-color, var(--mod-inlinealert-border-and-icon-color-negative, var(--spectrum-inlinealert-border-and-icon-color-negative))); +} +/*# sourceMappingURL=components/inlinealert/index.css.map */ diff --git a/components/inlinealert/metadata.json b/components/inlinealert/metadata.json new file mode 100644 index 0000000000..272d049641 --- /dev/null +++ b/components/inlinealert/metadata.json @@ -0,0 +1,106 @@ +{ + "selectors": [ + ".spectrum-InLineAlert", + ".spectrum-InLineAlert--info", + ".spectrum-InLineAlert--info .spectrum-InLineAlert-icon", + ".spectrum-InLineAlert--negative", + ".spectrum-InLineAlert--negative .spectrum-InLineAlert-icon", + ".spectrum-InLineAlert--notice", + ".spectrum-InLineAlert--notice .spectrum-InLineAlert-icon", + ".spectrum-InLineAlert--positive", + ".spectrum-InLineAlert--positive .spectrum-InLineAlert-icon", + ".spectrum-InLineAlert-content", + ".spectrum-InLineAlert-content,\n.spectrum-InLineAlert-footer", + ".spectrum-InLineAlert-footer", + ".spectrum-InLineAlert-footer:empty", + ".spectrum-InLineAlert-header", + ".spectrum-InLineAlert-icon" + ], + "mods": [ + "--mod-inlinealert-background-color", + "--mod-inlinealert-border-and-icon-color", + "--mod-inlinealert-border-and-icon-color-info", + "--mod-inlinealert-border-and-icon-color-negative", + "--mod-inlinealert-border-and-icon-color-notice", + "--mod-inlinealert-border-and-icon-color-positive", + "--mod-inlinealert-border-radius", + "--mod-inlinealert-border-width", + "--mod-inlinealert-content-color", + "--mod-inlinealert-content-font-family", + "--mod-inlinealert-content-font-size", + "--mod-inlinealert-content-font-style", + "--mod-inlinealert-content-font-weight", + "--mod-inlinealert-content-line-height", + "--mod-inlinealert-header-color", + "--mod-inlinealert-header-min-block-size", + "--mod-inlinealert-heading-font-family", + "--mod-inlinealert-heading-font-size", + "--mod-inlinealert-heading-font-style", + "--mod-inlinealert-heading-font-weight", + "--mod-inlinealert-heading-line-height", + "--mod-inlinealert-icon-size", + "--mod-inlinealert-min-inline-size", + "--mod-inlinealert-spacing-edge-to-text", + "--mod-inlinealert-spacing-header-content-button", + "--mod-inlinealert-spacing-header-to-icon" + ], + "spectrum": [ + "--spectrum-background-layer-2-color", + "--spectrum-body-color", + "--spectrum-body-line-height", + "--spectrum-body-sans-serif-font-style", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-body-size-s", + "--spectrum-border-width-200", + "--spectrum-component-height-50", + "--spectrum-corner-radius-100", + "--spectrum-heading-color", + "--spectrum-heading-line-height", + "--spectrum-heading-sans-serif-font-style", + "--spectrum-heading-sans-serif-font-weight", + "--spectrum-heading-size-xxs", + "--spectrum-in-line-alert-minimum-width", + "--spectrum-informative-visual-color", + "--spectrum-inlinealert-background-color", + "--spectrum-inlinealert-border-and-icon-color", + "--spectrum-inlinealert-border-and-icon-color-info", + "--spectrum-inlinealert-border-and-icon-color-negative", + "--spectrum-inlinealert-border-and-icon-color-notice", + "--spectrum-inlinealert-border-and-icon-color-positive", + "--spectrum-inlinealert-border-radius", + "--spectrum-inlinealert-border-width", + "--spectrum-inlinealert-content-color", + "--spectrum-inlinealert-content-font-family", + "--spectrum-inlinealert-content-font-size", + "--spectrum-inlinealert-content-font-style", + "--spectrum-inlinealert-content-font-weight", + "--spectrum-inlinealert-content-line-height", + "--spectrum-inlinealert-header-color", + "--spectrum-inlinealert-header-min-block-size", + "--spectrum-inlinealert-heading-font-family", + "--spectrum-inlinealert-heading-font-size", + "--spectrum-inlinealert-heading-font-style", + "--spectrum-inlinealert-heading-font-weight", + "--spectrum-inlinealert-heading-line-height", + "--spectrum-inlinealert-icon-size", + "--spectrum-inlinealert-min-inline-size", + "--spectrum-inlinealert-spacing-edge-to-text", + "--spectrum-inlinealert-spacing-header-content-button", + "--spectrum-inlinealert-spacing-header-to-icon", + "--spectrum-negative-visual-color", + "--spectrum-neutral-visual-color", + "--spectrum-notice-visual-color", + "--spectrum-positive-visual-color", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-300", + "--spectrum-spacing-400", + "--spectrum-workflow-icon-size-100" + ], + "system": [], + "a11y": [ + "--highcontrast-inlinealert-background-color", + "--highcontrast-inlinealert-border-and-icon-color", + "--highcontrast-inlinealert-content-color", + "--highcontrast-inlinealert-header-color" + ] +} diff --git a/components/inlinealert/package.json b/components/inlinealert/package.json new file mode 100644 index 0000000000..5bc1a867e0 --- /dev/null +++ b/components/inlinealert/package.json @@ -0,0 +1,48 @@ +{ + "name": "@spectrum-css/inlinealert", + "version": "8.1.1", + "description": "The Spectrum CSS in-line alert component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/inlinealert", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/inlinealert" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/button": ">=13", + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/button": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/button": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/inlinealert/template.js b/components/inlinealert/template.js new file mode 100644 index 0000000000..3fa78596a0 --- /dev/null +++ b/components/inlinealert/template.js @@ -0,0 +1,72 @@ +import { Template as Button } from "@spectrum-css/button/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html, nothing } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-InLineAlert", + customClasses = [], + customStyles = {}, + headerText, + text, + variant = "neutral", + isClosable = false, +} = {}, context = {}) => { + let iconName; + switch (variant) { + case "info": + iconName = "Info"; + break; + case "positive": + iconName = "CheckmarkCircle"; + break; + case "notice": + case "negative": + case "closable": + iconName = "Alert"; + break; + default: + iconName = undefined; + } + + const iconMarkup = + typeof iconName !== "undefined" + ? Icon({ + iconName, + customClasses: [`${rootClass}-icon`], + }, context) : nothing; + + const closableMarkup = isClosable ? html` + + ` : nothing; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + + > +
    + ${variant.charAt(0).toUpperCase() + variant.slice(1)} ${headerText} + ${iconMarkup} +
    +
    ${text}
    + ${closableMarkup} +
    + `; +}; diff --git a/components/link/index-base.css b/components/link/index-base.css new file mode 100644 index 0000000000..dfaa03013b --- /dev/null +++ b/components/link/index-base.css @@ -0,0 +1,103 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Link { + --spectrum-link-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-link-text-color-primary-default: var(--spectrum-accent-content-color-default); + --spectrum-link-text-color-primary-hover: var(--spectrum-accent-content-color-hover); + --spectrum-link-text-color-primary-active: var(--spectrum-accent-content-color-down); + --spectrum-link-text-color-primary-focus: var(--spectrum-accent-content-color-key-focus); + --spectrum-link-text-color-secondary-default: var(--spectrum-neutral-content-color-default); + --spectrum-link-text-color-secondary-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-link-text-color-secondary-active: var(--spectrum-neutral-content-color-down); + --spectrum-link-text-color-secondary-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-link-text-color-white: var(--spectrum-white); + --spectrum-link-text-color-black: var(--spectrum-black); +} +@media (forced-colors: active) { + .spectrum-Link { + --highcontrast-link-text-color-primary-default: LinkText; + --highcontrast-link-text-color-primary-hover: LinkText; + --highcontrast-link-text-color-primary-active: LinkText; + --highcontrast-link-text-color-primary-focus: LinkText; + --highcontrast-link-text-color-secondary-default: LinkText; + --highcontrast-link-text-color-secondary-hover: LinkText; + --highcontrast-link-text-color-secondary-active: LinkText; + --highcontrast-link-text-color-secondary-focus: LinkText; + --highcontrast-link-text-color-white: LinkText; + --highcontrast-link-text-color-black: LinkText; + } +} +.spectrum-Link { + background-color: initial; + -webkit-text-decoration-skip: objects; + text-decoration-skip: objects; + -webkit-text-decoration: underline; + text-decoration: underline; + transition: color var(--mod-link-animation-duration, var(--spectrum-link-animation-duration)) ease-in-out; + outline: none; + cursor: pointer; + color: var(--highcontrast-link-text-color-primary-default, var(--mod-link-text-color-primary-default, var(--spectrum-link-text-color-primary-default))); +} +.spectrum-Link:active { + color: var(--highcontrast-link-text-color-primary-active, var(--mod-link-text-color-primary-active, var(--spectrum-link-text-color-primary-active))); +} +.spectrum-Link:focus-visible { + color: var(--highcontrast-link-text-color-primary-focus, var(--mod-link-text-color-primary-focus, var(--spectrum-link-text-color-primary-focus))); + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-style: double; + text-decoration-color: var(--highcontrast-link-focus-color, inherit); +} +.spectrum-Link--secondary { + color: var(--highcontrast-link-text-color-secondary-default, var(--mod-link-text-color-secondary-default, var(--spectrum-link-text-color-secondary-default))); +} +.spectrum-Link--secondary:active { + color: var(--highcontrast-link-text-color-secondary-active, var(--mod-link-text-color-secondary-active, var(--spectrum-link-text-color-secondary-active))); +} +.spectrum-Link--secondary:focus { + color: var(--highcontrast-link-text-color-secondary-focus, var(--mod-link-text-color-secondary-focus, var(--spectrum-link-text-color-secondary-focus))); +} +.spectrum-Link--quiet { + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Link--staticWhite, +.spectrum-Link--staticWhite:active, +.spectrum-Link--staticWhite:focus { + color: var(--highcontrast-link-text-color-white, var(--mod-link-text-color-white, var(--spectrum-link-text-color-white))); +} +.spectrum-Link--staticBlack, +.spectrum-Link--staticBlack:active, +.spectrum-Link--staticBlack:focus { + color: var(--highcontrast-link-text-color-black, var(--mod-link-text-color-black, var(--spectrum-link-text-color-black))); +} +@media (hover: hover) { + .spectrum-Link:hover { + color: var(--highcontrast-link-text-color-primary-hover, var(--mod-link-text-color-primary-hover, var(--spectrum-link-text-color-primary-hover))); + } + .spectrum-Link--secondary:hover { + color: var(--highcontrast-link-text-color-secondary-hover, var(--mod-link-text-color-secondary-hover, var(--spectrum-link-text-color-secondary-hover))); + } + .spectrum-Link--quiet:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } + .spectrum-Link--staticWhite:hover { + color: var(--highcontrast-link-text-color-white, var(--mod-link-text-color-white, var(--spectrum-link-text-color-white))); + } + .spectrum-Link--staticBlack:hover { + color: var(--highcontrast-link-text-color-black, var(--mod-link-text-color-black, var(--spectrum-link-text-color-black))); + } +} +/*# sourceMappingURL=components/link/index.css.map */ diff --git a/components/link/index-vars.css b/components/link/index-vars.css new file mode 100644 index 0000000000..dfaa03013b --- /dev/null +++ b/components/link/index-vars.css @@ -0,0 +1,103 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Link { + --spectrum-link-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-link-text-color-primary-default: var(--spectrum-accent-content-color-default); + --spectrum-link-text-color-primary-hover: var(--spectrum-accent-content-color-hover); + --spectrum-link-text-color-primary-active: var(--spectrum-accent-content-color-down); + --spectrum-link-text-color-primary-focus: var(--spectrum-accent-content-color-key-focus); + --spectrum-link-text-color-secondary-default: var(--spectrum-neutral-content-color-default); + --spectrum-link-text-color-secondary-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-link-text-color-secondary-active: var(--spectrum-neutral-content-color-down); + --spectrum-link-text-color-secondary-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-link-text-color-white: var(--spectrum-white); + --spectrum-link-text-color-black: var(--spectrum-black); +} +@media (forced-colors: active) { + .spectrum-Link { + --highcontrast-link-text-color-primary-default: LinkText; + --highcontrast-link-text-color-primary-hover: LinkText; + --highcontrast-link-text-color-primary-active: LinkText; + --highcontrast-link-text-color-primary-focus: LinkText; + --highcontrast-link-text-color-secondary-default: LinkText; + --highcontrast-link-text-color-secondary-hover: LinkText; + --highcontrast-link-text-color-secondary-active: LinkText; + --highcontrast-link-text-color-secondary-focus: LinkText; + --highcontrast-link-text-color-white: LinkText; + --highcontrast-link-text-color-black: LinkText; + } +} +.spectrum-Link { + background-color: initial; + -webkit-text-decoration-skip: objects; + text-decoration-skip: objects; + -webkit-text-decoration: underline; + text-decoration: underline; + transition: color var(--mod-link-animation-duration, var(--spectrum-link-animation-duration)) ease-in-out; + outline: none; + cursor: pointer; + color: var(--highcontrast-link-text-color-primary-default, var(--mod-link-text-color-primary-default, var(--spectrum-link-text-color-primary-default))); +} +.spectrum-Link:active { + color: var(--highcontrast-link-text-color-primary-active, var(--mod-link-text-color-primary-active, var(--spectrum-link-text-color-primary-active))); +} +.spectrum-Link:focus-visible { + color: var(--highcontrast-link-text-color-primary-focus, var(--mod-link-text-color-primary-focus, var(--spectrum-link-text-color-primary-focus))); + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-style: double; + text-decoration-color: var(--highcontrast-link-focus-color, inherit); +} +.spectrum-Link--secondary { + color: var(--highcontrast-link-text-color-secondary-default, var(--mod-link-text-color-secondary-default, var(--spectrum-link-text-color-secondary-default))); +} +.spectrum-Link--secondary:active { + color: var(--highcontrast-link-text-color-secondary-active, var(--mod-link-text-color-secondary-active, var(--spectrum-link-text-color-secondary-active))); +} +.spectrum-Link--secondary:focus { + color: var(--highcontrast-link-text-color-secondary-focus, var(--mod-link-text-color-secondary-focus, var(--spectrum-link-text-color-secondary-focus))); +} +.spectrum-Link--quiet { + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Link--staticWhite, +.spectrum-Link--staticWhite:active, +.spectrum-Link--staticWhite:focus { + color: var(--highcontrast-link-text-color-white, var(--mod-link-text-color-white, var(--spectrum-link-text-color-white))); +} +.spectrum-Link--staticBlack, +.spectrum-Link--staticBlack:active, +.spectrum-Link--staticBlack:focus { + color: var(--highcontrast-link-text-color-black, var(--mod-link-text-color-black, var(--spectrum-link-text-color-black))); +} +@media (hover: hover) { + .spectrum-Link:hover { + color: var(--highcontrast-link-text-color-primary-hover, var(--mod-link-text-color-primary-hover, var(--spectrum-link-text-color-primary-hover))); + } + .spectrum-Link--secondary:hover { + color: var(--highcontrast-link-text-color-secondary-hover, var(--mod-link-text-color-secondary-hover, var(--spectrum-link-text-color-secondary-hover))); + } + .spectrum-Link--quiet:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } + .spectrum-Link--staticWhite:hover { + color: var(--highcontrast-link-text-color-white, var(--mod-link-text-color-white, var(--spectrum-link-text-color-white))); + } + .spectrum-Link--staticBlack:hover { + color: var(--highcontrast-link-text-color-black, var(--mod-link-text-color-black, var(--spectrum-link-text-color-black))); + } +} +/*# sourceMappingURL=components/link/index.css.map */ diff --git a/components/link/index.css b/components/link/index.css new file mode 100644 index 0000000000..dfaa03013b --- /dev/null +++ b/components/link/index.css @@ -0,0 +1,103 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Link { + --spectrum-link-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-link-text-color-primary-default: var(--spectrum-accent-content-color-default); + --spectrum-link-text-color-primary-hover: var(--spectrum-accent-content-color-hover); + --spectrum-link-text-color-primary-active: var(--spectrum-accent-content-color-down); + --spectrum-link-text-color-primary-focus: var(--spectrum-accent-content-color-key-focus); + --spectrum-link-text-color-secondary-default: var(--spectrum-neutral-content-color-default); + --spectrum-link-text-color-secondary-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-link-text-color-secondary-active: var(--spectrum-neutral-content-color-down); + --spectrum-link-text-color-secondary-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-link-text-color-white: var(--spectrum-white); + --spectrum-link-text-color-black: var(--spectrum-black); +} +@media (forced-colors: active) { + .spectrum-Link { + --highcontrast-link-text-color-primary-default: LinkText; + --highcontrast-link-text-color-primary-hover: LinkText; + --highcontrast-link-text-color-primary-active: LinkText; + --highcontrast-link-text-color-primary-focus: LinkText; + --highcontrast-link-text-color-secondary-default: LinkText; + --highcontrast-link-text-color-secondary-hover: LinkText; + --highcontrast-link-text-color-secondary-active: LinkText; + --highcontrast-link-text-color-secondary-focus: LinkText; + --highcontrast-link-text-color-white: LinkText; + --highcontrast-link-text-color-black: LinkText; + } +} +.spectrum-Link { + background-color: initial; + -webkit-text-decoration-skip: objects; + text-decoration-skip: objects; + -webkit-text-decoration: underline; + text-decoration: underline; + transition: color var(--mod-link-animation-duration, var(--spectrum-link-animation-duration)) ease-in-out; + outline: none; + cursor: pointer; + color: var(--highcontrast-link-text-color-primary-default, var(--mod-link-text-color-primary-default, var(--spectrum-link-text-color-primary-default))); +} +.spectrum-Link:active { + color: var(--highcontrast-link-text-color-primary-active, var(--mod-link-text-color-primary-active, var(--spectrum-link-text-color-primary-active))); +} +.spectrum-Link:focus-visible { + color: var(--highcontrast-link-text-color-primary-focus, var(--mod-link-text-color-primary-focus, var(--spectrum-link-text-color-primary-focus))); + -webkit-text-decoration: underline; + text-decoration: underline; + text-decoration-style: double; + text-decoration-color: var(--highcontrast-link-focus-color, inherit); +} +.spectrum-Link--secondary { + color: var(--highcontrast-link-text-color-secondary-default, var(--mod-link-text-color-secondary-default, var(--spectrum-link-text-color-secondary-default))); +} +.spectrum-Link--secondary:active { + color: var(--highcontrast-link-text-color-secondary-active, var(--mod-link-text-color-secondary-active, var(--spectrum-link-text-color-secondary-active))); +} +.spectrum-Link--secondary:focus { + color: var(--highcontrast-link-text-color-secondary-focus, var(--mod-link-text-color-secondary-focus, var(--spectrum-link-text-color-secondary-focus))); +} +.spectrum-Link--quiet { + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Link--staticWhite, +.spectrum-Link--staticWhite:active, +.spectrum-Link--staticWhite:focus { + color: var(--highcontrast-link-text-color-white, var(--mod-link-text-color-white, var(--spectrum-link-text-color-white))); +} +.spectrum-Link--staticBlack, +.spectrum-Link--staticBlack:active, +.spectrum-Link--staticBlack:focus { + color: var(--highcontrast-link-text-color-black, var(--mod-link-text-color-black, var(--spectrum-link-text-color-black))); +} +@media (hover: hover) { + .spectrum-Link:hover { + color: var(--highcontrast-link-text-color-primary-hover, var(--mod-link-text-color-primary-hover, var(--spectrum-link-text-color-primary-hover))); + } + .spectrum-Link--secondary:hover { + color: var(--highcontrast-link-text-color-secondary-hover, var(--mod-link-text-color-secondary-hover, var(--spectrum-link-text-color-secondary-hover))); + } + .spectrum-Link--quiet:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } + .spectrum-Link--staticWhite:hover { + color: var(--highcontrast-link-text-color-white, var(--mod-link-text-color-white, var(--spectrum-link-text-color-white))); + } + .spectrum-Link--staticBlack:hover { + color: var(--highcontrast-link-text-color-black, var(--mod-link-text-color-black, var(--spectrum-link-text-color-black))); + } +} +/*# sourceMappingURL=components/link/index.css.map */ diff --git a/components/link/metadata.json b/components/link/metadata.json new file mode 100644 index 0000000000..89328bd80d --- /dev/null +++ b/components/link/metadata.json @@ -0,0 +1,69 @@ +{ + "selectors": [ + ".spectrum-Link", + ".spectrum-Link--quiet", + ".spectrum-Link--quiet:hover", + ".spectrum-Link--secondary", + ".spectrum-Link--secondary:active", + ".spectrum-Link--secondary:focus", + ".spectrum-Link--secondary:hover", + ".spectrum-Link--staticBlack,\n.spectrum-Link--staticBlack:active,\n.spectrum-Link--staticBlack:focus", + ".spectrum-Link--staticBlack:hover", + ".spectrum-Link--staticWhite,\n.spectrum-Link--staticWhite:active,\n.spectrum-Link--staticWhite:focus", + ".spectrum-Link--staticWhite:hover", + ".spectrum-Link:active", + ".spectrum-Link:focus-visible", + ".spectrum-Link:hover" + ], + "mods": [ + "--mod-link-animation-duration", + "--mod-link-text-color-black", + "--mod-link-text-color-primary-active", + "--mod-link-text-color-primary-default", + "--mod-link-text-color-primary-focus", + "--mod-link-text-color-primary-hover", + "--mod-link-text-color-secondary-active", + "--mod-link-text-color-secondary-default", + "--mod-link-text-color-secondary-focus", + "--mod-link-text-color-secondary-hover", + "--mod-link-text-color-white" + ], + "spectrum": [ + "--spectrum-accent-content-color-default", + "--spectrum-accent-content-color-down", + "--spectrum-accent-content-color-hover", + "--spectrum-accent-content-color-key-focus", + "--spectrum-animation-duration-100", + "--spectrum-black", + "--spectrum-link-animation-duration", + "--spectrum-link-text-color-black", + "--spectrum-link-text-color-primary-active", + "--spectrum-link-text-color-primary-default", + "--spectrum-link-text-color-primary-focus", + "--spectrum-link-text-color-primary-hover", + "--spectrum-link-text-color-secondary-active", + "--spectrum-link-text-color-secondary-default", + "--spectrum-link-text-color-secondary-focus", + "--spectrum-link-text-color-secondary-hover", + "--spectrum-link-text-color-white", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-white" + ], + "system": [], + "a11y": [ + "--highcontrast-link-focus-color", + "--highcontrast-link-text-color-black", + "--highcontrast-link-text-color-primary-active", + "--highcontrast-link-text-color-primary-default", + "--highcontrast-link-text-color-primary-focus", + "--highcontrast-link-text-color-primary-hover", + "--highcontrast-link-text-color-secondary-active", + "--highcontrast-link-text-color-secondary-default", + "--highcontrast-link-text-color-secondary-focus", + "--highcontrast-link-text-color-secondary-hover", + "--highcontrast-link-text-color-white" + ] +} diff --git a/components/link/package.json b/components/link/package.json new file mode 100644 index 0000000000..df453e6215 --- /dev/null +++ b/components/link/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/link", + "version": "5.1.1", + "description": "The Spectrum CSS link component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/link", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/link" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/link/template.js b/components/link/template.js new file mode 100644 index 0000000000..754bbe8825 --- /dev/null +++ b/components/link/template.js @@ -0,0 +1,32 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { capitalize, lowerCase } from "lodash-es"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Link", + url = "#", + text, + variant, + staticColor, + isQuiet = false, + id, + customClasses = [], +}) => html` + ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + href=${ifDefined(url)} + > + ${text} + +`; diff --git a/components/logicbutton/index-base.css b/components/logicbutton/index-base.css new file mode 100644 index 0000000000..754b50ef7d --- /dev/null +++ b/components/logicbutton/index-base.css @@ -0,0 +1,162 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-LogicButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + position: relative; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-LogicButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-LogicButton:focus { + outline: none; +} +.spectrum-LogicButton.is-disabled, +.spectrum-LogicButton:disabled { + cursor: default; +} +.spectrum-LogicButton:after { + content: ""; + position: absolute; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + display: block; + margin: calc(var(--mod-button-focus-indicator-gap, var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))) * -1); + transition: + opacity var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out, + margin var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out; +} +.spectrum-LogicButton:focus-visible:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -2); +} +.spectrum-LogicButton { + --spectrum-logic-button-height: 24px; + --spectrum-logic-button-padding: var(--spectrum-component-edge-to-text-50); + --spectrum-logic-button-font-size: var(--spectrum-font-size-100); + --spectrum-logic-button-font-weight: var(--spectrum-bold-font-weight); + --spectrum-logic-button-border-width: var(--spectrum-border-width-200); + --spectrum-logic-button-border-radius: var(--spectrum-corner-radius-100); + --spectrum-logic-button-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-logic-button-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-logic-button-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-logic-button-and-text-color: var(--spectrum-white); + --spectrum-logic-button-and-background-color-hover: var(--spectrum-blue-1100); + --spectrum-logic-button-and-border-color-hover: var(--spectrum-blue-1100); + --spectrum-logic-button-or-text-color: var(--spectrum-white); +} +.spectrum-LogicButton.is-disabled, +.spectrum-LogicButton:disabled { + --mod-logic-button-and-background-color: var(--mod-logic-button-and-background-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-border-color: var(--mod-logic-button-and-border-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-text-color: var(--mod-logic-button-and-text-color-disabled, var(--spectrum-gray-500)); + --mod-logic-button-and-background-color-hover: var(--mod-logic-button-and-background-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-border-color-hover: var(--mod-logic-button-and-border-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-background-color: var(--mod-logic-button-or-background-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-border-color: var(--mod-logic-button-or-border-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-text-color: var(--mod-logic-button-or-text-color-disabled, var(--spectrum-gray-500)); + --mod-logic-button-or-background-color-hover: var(--mod-logic-button-or-background-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-border-color-hover: var(--mod-logic-button-or-border-color-hover-disabled, var(--spectrum-gray-200)); +} +.spectrum-LogicButton { + block-size: var(--mod-logic-button-height, var(--spectrum-logic-button-height)); + padding: var(--mod-logic-button-padding, var(--spectrum-logic-button-padding)); + border-width: var(--mod-logic-button-border-width, var(--spectrum-logic-button-border-width)); + border-radius: var(--mod-logic-button-border-radius, var(--spectrum-logic-button-border-radius)); + font-size: var(--mod-logic-button-font-size, var(--spectrum-logic-button-font-size)); + font-weight: var(--mod-logic-button-font-weight, var(--spectrum-logic-button-font-weight)); + line-height: 0; +} +.spectrum-LogicButton:after { + border-radius: calc(var(--mod-logic-button-border-radius, var(--spectrum-logic-button-border-radius)) + var(--mod-logic-button-focus-indicator-gap, var(--spectrum-logic-button-focus-indicator-gap))); +} +.spectrum-LogicButton:focus-visible { + outline: none; +} +.spectrum-LogicButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-logic-button-focus-indicator-width, var(--spectrum-logic-button-focus-indicator-width)) var(--highcontrast-logic-button-focus-indicator-color, var(--mod-logic-button-focus-indicator-color, var(--spectrum-logic-button-focus-indicator-color))); +} +.spectrum-LogicButton--and { + background-color: var(--highcontrast-logic-button-and-background-color, var(--mod-logic-button-and-background-color, var(--spectrum-logic-button-and-background-color))); + border-color: var(--highcontrast-logic-button-and-border-color, var(--mod-logic-button-and-border-color, var(--spectrum-logic-button-and-border-color))); + color: var(--highcontrast-logic-button-and-text-color, var(--mod-logic-button-and-text-color, var(--spectrum-logic-button-and-text-color))); +} +.spectrum-LogicButton--or { + background-color: var(--highcontrast-logic-button-or-background-color, var(--mod-logic-button-or-background-color, var(--spectrum-logic-button-or-background-color))); + border-color: var(--highcontrast-logic-button-or-border-color, var(--mod-logic-button-or-border-color, var(--spectrum-logic-button-or-border-color))); + color: var(--highcontrast-logic-button-or-text-color, var(--mod-logic-button-or-text-color, var(--spectrum-logic-button-or-text-color))); +} +@media (hover: hover) { + .spectrum-LogicButton--and:hover:not([disabled]) { + background-color: var(--highcontrast-logic-button-and-background-color-hover, var(--mod-logic-button-and-background-color-hover, var(--spectrum-logic-button-and-background-color-hover))); + border-color: var(--highcontrast-logic-button-and-border-color-hover, var(--mod-logic-button-and-border-color-hover, var(--spectrum-logic-button-and-border-color-hover))); + } + .spectrum-LogicButton--or:hover:not([disabled]) { + background-color: var(--highcontrast-logic-button-or-background-color-hover, var(--mod-logic-button-or-background-color-hover, var(--spectrum-logic-button-or-background-color-hover))); + border-color: var(--highcontrast-logic-button-or-border-color-hover, var(--mod-logic-button-or-border-color-hover, var(--spectrum-logic-button-or-border-color-hover))); + } +} +@media (forced-colors: active) { + .spectrum-LogicButton:after { + --highcontrast-logic-button-focus-indicator-color: Highlight; + forced-color-adjust: none; + } + .spectrum-LogicButton { + forced-color-adjust: none; + --highcontrast-logic-button-and-background-color: ButtonFace; + --highcontrast-logic-button-and-background-color-hover: ButtonFace; + --highcontrast-logic-button-and-border-color: ButtonText; + --highcontrast-logic-button-and-border-color-hover: Highlight; + --highcontrast-logic-button-and-text-color: ButtonText; + --highcontrast-logic-button-or-background-color: ButtonFace; + --highcontrast-logic-button-or-background-color-hover: ButtonFace; + --highcontrast-logic-button-or-border-color: ButtonText; + --highcontrast-logic-button-or-border-color-hover: Highlight; + --highcontrast-logic-button-or-text-color: ButtonText; + } + .spectrum-LogicButton.is-disabled, + .spectrum-LogicButton:disabled { + --highcontrast-logic-button-and-background-color: ButtonFace; + --highcontrast-logic-button-and-border-color: GrayText; + --highcontrast-logic-button-and-text-color: GrayText; + --highcontrast-logic-button-or-background-color: ButtonFace; + --highcontrast-logic-button-or-border-color: GrayText; + --highcontrast-logic-button-or-text-color: GrayText; + } +} +/*# sourceMappingURL=components/logicbutton/index.css.map */ diff --git a/components/logicbutton/index-vars.css b/components/logicbutton/index-vars.css new file mode 100644 index 0000000000..754b50ef7d --- /dev/null +++ b/components/logicbutton/index-vars.css @@ -0,0 +1,162 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-LogicButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + position: relative; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-LogicButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-LogicButton:focus { + outline: none; +} +.spectrum-LogicButton.is-disabled, +.spectrum-LogicButton:disabled { + cursor: default; +} +.spectrum-LogicButton:after { + content: ""; + position: absolute; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + display: block; + margin: calc(var(--mod-button-focus-indicator-gap, var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))) * -1); + transition: + opacity var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out, + margin var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out; +} +.spectrum-LogicButton:focus-visible:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -2); +} +.spectrum-LogicButton { + --spectrum-logic-button-height: 24px; + --spectrum-logic-button-padding: var(--spectrum-component-edge-to-text-50); + --spectrum-logic-button-font-size: var(--spectrum-font-size-100); + --spectrum-logic-button-font-weight: var(--spectrum-bold-font-weight); + --spectrum-logic-button-border-width: var(--spectrum-border-width-200); + --spectrum-logic-button-border-radius: var(--spectrum-corner-radius-100); + --spectrum-logic-button-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-logic-button-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-logic-button-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-logic-button-and-text-color: var(--spectrum-white); + --spectrum-logic-button-and-background-color-hover: var(--spectrum-blue-1100); + --spectrum-logic-button-and-border-color-hover: var(--spectrum-blue-1100); + --spectrum-logic-button-or-text-color: var(--spectrum-white); +} +.spectrum-LogicButton.is-disabled, +.spectrum-LogicButton:disabled { + --mod-logic-button-and-background-color: var(--mod-logic-button-and-background-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-border-color: var(--mod-logic-button-and-border-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-text-color: var(--mod-logic-button-and-text-color-disabled, var(--spectrum-gray-500)); + --mod-logic-button-and-background-color-hover: var(--mod-logic-button-and-background-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-border-color-hover: var(--mod-logic-button-and-border-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-background-color: var(--mod-logic-button-or-background-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-border-color: var(--mod-logic-button-or-border-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-text-color: var(--mod-logic-button-or-text-color-disabled, var(--spectrum-gray-500)); + --mod-logic-button-or-background-color-hover: var(--mod-logic-button-or-background-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-border-color-hover: var(--mod-logic-button-or-border-color-hover-disabled, var(--spectrum-gray-200)); +} +.spectrum-LogicButton { + block-size: var(--mod-logic-button-height, var(--spectrum-logic-button-height)); + padding: var(--mod-logic-button-padding, var(--spectrum-logic-button-padding)); + border-width: var(--mod-logic-button-border-width, var(--spectrum-logic-button-border-width)); + border-radius: var(--mod-logic-button-border-radius, var(--spectrum-logic-button-border-radius)); + font-size: var(--mod-logic-button-font-size, var(--spectrum-logic-button-font-size)); + font-weight: var(--mod-logic-button-font-weight, var(--spectrum-logic-button-font-weight)); + line-height: 0; +} +.spectrum-LogicButton:after { + border-radius: calc(var(--mod-logic-button-border-radius, var(--spectrum-logic-button-border-radius)) + var(--mod-logic-button-focus-indicator-gap, var(--spectrum-logic-button-focus-indicator-gap))); +} +.spectrum-LogicButton:focus-visible { + outline: none; +} +.spectrum-LogicButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-logic-button-focus-indicator-width, var(--spectrum-logic-button-focus-indicator-width)) var(--highcontrast-logic-button-focus-indicator-color, var(--mod-logic-button-focus-indicator-color, var(--spectrum-logic-button-focus-indicator-color))); +} +.spectrum-LogicButton--and { + background-color: var(--highcontrast-logic-button-and-background-color, var(--mod-logic-button-and-background-color, var(--spectrum-logic-button-and-background-color))); + border-color: var(--highcontrast-logic-button-and-border-color, var(--mod-logic-button-and-border-color, var(--spectrum-logic-button-and-border-color))); + color: var(--highcontrast-logic-button-and-text-color, var(--mod-logic-button-and-text-color, var(--spectrum-logic-button-and-text-color))); +} +.spectrum-LogicButton--or { + background-color: var(--highcontrast-logic-button-or-background-color, var(--mod-logic-button-or-background-color, var(--spectrum-logic-button-or-background-color))); + border-color: var(--highcontrast-logic-button-or-border-color, var(--mod-logic-button-or-border-color, var(--spectrum-logic-button-or-border-color))); + color: var(--highcontrast-logic-button-or-text-color, var(--mod-logic-button-or-text-color, var(--spectrum-logic-button-or-text-color))); +} +@media (hover: hover) { + .spectrum-LogicButton--and:hover:not([disabled]) { + background-color: var(--highcontrast-logic-button-and-background-color-hover, var(--mod-logic-button-and-background-color-hover, var(--spectrum-logic-button-and-background-color-hover))); + border-color: var(--highcontrast-logic-button-and-border-color-hover, var(--mod-logic-button-and-border-color-hover, var(--spectrum-logic-button-and-border-color-hover))); + } + .spectrum-LogicButton--or:hover:not([disabled]) { + background-color: var(--highcontrast-logic-button-or-background-color-hover, var(--mod-logic-button-or-background-color-hover, var(--spectrum-logic-button-or-background-color-hover))); + border-color: var(--highcontrast-logic-button-or-border-color-hover, var(--mod-logic-button-or-border-color-hover, var(--spectrum-logic-button-or-border-color-hover))); + } +} +@media (forced-colors: active) { + .spectrum-LogicButton:after { + --highcontrast-logic-button-focus-indicator-color: Highlight; + forced-color-adjust: none; + } + .spectrum-LogicButton { + forced-color-adjust: none; + --highcontrast-logic-button-and-background-color: ButtonFace; + --highcontrast-logic-button-and-background-color-hover: ButtonFace; + --highcontrast-logic-button-and-border-color: ButtonText; + --highcontrast-logic-button-and-border-color-hover: Highlight; + --highcontrast-logic-button-and-text-color: ButtonText; + --highcontrast-logic-button-or-background-color: ButtonFace; + --highcontrast-logic-button-or-background-color-hover: ButtonFace; + --highcontrast-logic-button-or-border-color: ButtonText; + --highcontrast-logic-button-or-border-color-hover: Highlight; + --highcontrast-logic-button-or-text-color: ButtonText; + } + .spectrum-LogicButton.is-disabled, + .spectrum-LogicButton:disabled { + --highcontrast-logic-button-and-background-color: ButtonFace; + --highcontrast-logic-button-and-border-color: GrayText; + --highcontrast-logic-button-and-text-color: GrayText; + --highcontrast-logic-button-or-background-color: ButtonFace; + --highcontrast-logic-button-or-border-color: GrayText; + --highcontrast-logic-button-or-text-color: GrayText; + } +} +/*# sourceMappingURL=components/logicbutton/index.css.map */ diff --git a/components/logicbutton/index.css b/components/logicbutton/index.css new file mode 100644 index 0000000000..754b50ef7d --- /dev/null +++ b/components/logicbutton/index.css @@ -0,0 +1,162 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-LogicButton { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + position: relative; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + border-style: solid; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-LogicButton::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-LogicButton:focus { + outline: none; +} +.spectrum-LogicButton.is-disabled, +.spectrum-LogicButton:disabled { + cursor: default; +} +.spectrum-LogicButton:after { + content: ""; + position: absolute; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + display: block; + margin: calc(var(--mod-button-focus-indicator-gap, var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap))) * -1); + transition: + opacity var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out, + margin var(--mod-button-animation-duration, var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)))) ease-out; +} +.spectrum-LogicButton:focus-visible:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -2); +} +.spectrum-LogicButton { + --spectrum-logic-button-height: 24px; + --spectrum-logic-button-padding: var(--spectrum-component-edge-to-text-50); + --spectrum-logic-button-font-size: var(--spectrum-font-size-100); + --spectrum-logic-button-font-weight: var(--spectrum-bold-font-weight); + --spectrum-logic-button-border-width: var(--spectrum-border-width-200); + --spectrum-logic-button-border-radius: var(--spectrum-corner-radius-100); + --spectrum-logic-button-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-logic-button-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-logic-button-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-logic-button-and-text-color: var(--spectrum-white); + --spectrum-logic-button-and-background-color-hover: var(--spectrum-blue-1100); + --spectrum-logic-button-and-border-color-hover: var(--spectrum-blue-1100); + --spectrum-logic-button-or-text-color: var(--spectrum-white); +} +.spectrum-LogicButton.is-disabled, +.spectrum-LogicButton:disabled { + --mod-logic-button-and-background-color: var(--mod-logic-button-and-background-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-border-color: var(--mod-logic-button-and-border-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-text-color: var(--mod-logic-button-and-text-color-disabled, var(--spectrum-gray-500)); + --mod-logic-button-and-background-color-hover: var(--mod-logic-button-and-background-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-and-border-color-hover: var(--mod-logic-button-and-border-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-background-color: var(--mod-logic-button-or-background-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-border-color: var(--mod-logic-button-or-border-color-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-text-color: var(--mod-logic-button-or-text-color-disabled, var(--spectrum-gray-500)); + --mod-logic-button-or-background-color-hover: var(--mod-logic-button-or-background-color-hover-disabled, var(--spectrum-gray-200)); + --mod-logic-button-or-border-color-hover: var(--mod-logic-button-or-border-color-hover-disabled, var(--spectrum-gray-200)); +} +.spectrum-LogicButton { + block-size: var(--mod-logic-button-height, var(--spectrum-logic-button-height)); + padding: var(--mod-logic-button-padding, var(--spectrum-logic-button-padding)); + border-width: var(--mod-logic-button-border-width, var(--spectrum-logic-button-border-width)); + border-radius: var(--mod-logic-button-border-radius, var(--spectrum-logic-button-border-radius)); + font-size: var(--mod-logic-button-font-size, var(--spectrum-logic-button-font-size)); + font-weight: var(--mod-logic-button-font-weight, var(--spectrum-logic-button-font-weight)); + line-height: 0; +} +.spectrum-LogicButton:after { + border-radius: calc(var(--mod-logic-button-border-radius, var(--spectrum-logic-button-border-radius)) + var(--mod-logic-button-focus-indicator-gap, var(--spectrum-logic-button-focus-indicator-gap))); +} +.spectrum-LogicButton:focus-visible { + outline: none; +} +.spectrum-LogicButton:focus-visible:after { + box-shadow: 0 0 0 var(--mod-logic-button-focus-indicator-width, var(--spectrum-logic-button-focus-indicator-width)) var(--highcontrast-logic-button-focus-indicator-color, var(--mod-logic-button-focus-indicator-color, var(--spectrum-logic-button-focus-indicator-color))); +} +.spectrum-LogicButton--and { + background-color: var(--highcontrast-logic-button-and-background-color, var(--mod-logic-button-and-background-color, var(--spectrum-logic-button-and-background-color))); + border-color: var(--highcontrast-logic-button-and-border-color, var(--mod-logic-button-and-border-color, var(--spectrum-logic-button-and-border-color))); + color: var(--highcontrast-logic-button-and-text-color, var(--mod-logic-button-and-text-color, var(--spectrum-logic-button-and-text-color))); +} +.spectrum-LogicButton--or { + background-color: var(--highcontrast-logic-button-or-background-color, var(--mod-logic-button-or-background-color, var(--spectrum-logic-button-or-background-color))); + border-color: var(--highcontrast-logic-button-or-border-color, var(--mod-logic-button-or-border-color, var(--spectrum-logic-button-or-border-color))); + color: var(--highcontrast-logic-button-or-text-color, var(--mod-logic-button-or-text-color, var(--spectrum-logic-button-or-text-color))); +} +@media (hover: hover) { + .spectrum-LogicButton--and:hover:not([disabled]) { + background-color: var(--highcontrast-logic-button-and-background-color-hover, var(--mod-logic-button-and-background-color-hover, var(--spectrum-logic-button-and-background-color-hover))); + border-color: var(--highcontrast-logic-button-and-border-color-hover, var(--mod-logic-button-and-border-color-hover, var(--spectrum-logic-button-and-border-color-hover))); + } + .spectrum-LogicButton--or:hover:not([disabled]) { + background-color: var(--highcontrast-logic-button-or-background-color-hover, var(--mod-logic-button-or-background-color-hover, var(--spectrum-logic-button-or-background-color-hover))); + border-color: var(--highcontrast-logic-button-or-border-color-hover, var(--mod-logic-button-or-border-color-hover, var(--spectrum-logic-button-or-border-color-hover))); + } +} +@media (forced-colors: active) { + .spectrum-LogicButton:after { + --highcontrast-logic-button-focus-indicator-color: Highlight; + forced-color-adjust: none; + } + .spectrum-LogicButton { + forced-color-adjust: none; + --highcontrast-logic-button-and-background-color: ButtonFace; + --highcontrast-logic-button-and-background-color-hover: ButtonFace; + --highcontrast-logic-button-and-border-color: ButtonText; + --highcontrast-logic-button-and-border-color-hover: Highlight; + --highcontrast-logic-button-and-text-color: ButtonText; + --highcontrast-logic-button-or-background-color: ButtonFace; + --highcontrast-logic-button-or-background-color-hover: ButtonFace; + --highcontrast-logic-button-or-border-color: ButtonText; + --highcontrast-logic-button-or-border-color-hover: Highlight; + --highcontrast-logic-button-or-text-color: ButtonText; + } + .spectrum-LogicButton.is-disabled, + .spectrum-LogicButton:disabled { + --highcontrast-logic-button-and-background-color: ButtonFace; + --highcontrast-logic-button-and-border-color: GrayText; + --highcontrast-logic-button-and-text-color: GrayText; + --highcontrast-logic-button-or-background-color: ButtonFace; + --highcontrast-logic-button-or-border-color: GrayText; + --highcontrast-logic-button-or-text-color: GrayText; + } +} +/*# sourceMappingURL=components/logicbutton/index.css.map */ diff --git a/components/logicbutton/metadata.json b/components/logicbutton/metadata.json new file mode 100644 index 0000000000..453d256c93 --- /dev/null +++ b/components/logicbutton/metadata.json @@ -0,0 +1,105 @@ +{ + "selectors": [ + ".spectrum-LogicButton", + ".spectrum-LogicButton--and", + ".spectrum-LogicButton--and:hover:not([disabled])", + ".spectrum-LogicButton--or", + ".spectrum-LogicButton--or:hover:not([disabled])", + ".spectrum-LogicButton.is-disabled,\n\t.spectrum-LogicButton:disabled", + ".spectrum-LogicButton.is-disabled,\n.spectrum-LogicButton:disabled", + ".spectrum-LogicButton::-moz-focus-inner", + ".spectrum-LogicButton:after", + ".spectrum-LogicButton:focus", + ".spectrum-LogicButton:focus-visible", + ".spectrum-LogicButton:focus-visible:after" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-button-animation-duration", + "--mod-button-focus-indicator-gap", + "--mod-button-font-family", + "--mod-button-line-height", + "--mod-focus-indicator-gap", + "--mod-line-height-100", + "--mod-logic-button-and-background-color", + "--mod-logic-button-and-background-color-disabled", + "--mod-logic-button-and-background-color-hover", + "--mod-logic-button-and-background-color-hover-disabled", + "--mod-logic-button-and-border-color", + "--mod-logic-button-and-border-color-disabled", + "--mod-logic-button-and-border-color-hover", + "--mod-logic-button-and-border-color-hover-disabled", + "--mod-logic-button-and-text-color", + "--mod-logic-button-and-text-color-disabled", + "--mod-logic-button-border-radius", + "--mod-logic-button-border-width", + "--mod-logic-button-focus-indicator-color", + "--mod-logic-button-focus-indicator-gap", + "--mod-logic-button-focus-indicator-width", + "--mod-logic-button-font-size", + "--mod-logic-button-font-weight", + "--mod-logic-button-height", + "--mod-logic-button-or-background-color", + "--mod-logic-button-or-background-color-disabled", + "--mod-logic-button-or-background-color-hover", + "--mod-logic-button-or-background-color-hover-disabled", + "--mod-logic-button-or-border-color", + "--mod-logic-button-or-border-color-disabled", + "--mod-logic-button-or-border-color-hover", + "--mod-logic-button-or-border-color-hover-disabled", + "--mod-logic-button-or-text-color", + "--mod-logic-button-or-text-color-disabled", + "--mod-logic-button-padding", + "--mod-sans-font-family-stack" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-blue-1100", + "--spectrum-bold-font-weight", + "--spectrum-border-width-200", + "--spectrum-component-edge-to-text-50", + "--spectrum-corner-radius-100", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-gray-200", + "--spectrum-gray-500", + "--spectrum-line-height-100", + "--spectrum-logic-button-and-background-color", + "--spectrum-logic-button-and-background-color-hover", + "--spectrum-logic-button-and-border-color", + "--spectrum-logic-button-and-border-color-hover", + "--spectrum-logic-button-and-text-color", + "--spectrum-logic-button-border-radius", + "--spectrum-logic-button-border-width", + "--spectrum-logic-button-focus-indicator-color", + "--spectrum-logic-button-focus-indicator-gap", + "--spectrum-logic-button-focus-indicator-width", + "--spectrum-logic-button-font-size", + "--spectrum-logic-button-font-weight", + "--spectrum-logic-button-height", + "--spectrum-logic-button-or-background-color", + "--spectrum-logic-button-or-background-color-hover", + "--spectrum-logic-button-or-border-color", + "--spectrum-logic-button-or-border-color-hover", + "--spectrum-logic-button-or-text-color", + "--spectrum-logic-button-padding", + "--spectrum-sans-font-family-stack", + "--spectrum-white" + ], + "system": [], + "a11y": [ + "--highcontrast-logic-button-and-background-color", + "--highcontrast-logic-button-and-background-color-hover", + "--highcontrast-logic-button-and-border-color", + "--highcontrast-logic-button-and-border-color-hover", + "--highcontrast-logic-button-and-text-color", + "--highcontrast-logic-button-focus-indicator-color", + "--highcontrast-logic-button-or-background-color", + "--highcontrast-logic-button-or-background-color-hover", + "--highcontrast-logic-button-or-border-color", + "--highcontrast-logic-button-or-border-color-hover", + "--highcontrast-logic-button-or-text-color" + ] +} diff --git a/components/logicbutton/package.json b/components/logicbutton/package.json new file mode 100644 index 0000000000..70c1b5e5ad --- /dev/null +++ b/components/logicbutton/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/logicbutton", + "version": "4.1.1", + "description": "The Spectrum CSS logicbutton component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/logicbutton", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/logicbutton" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/commons": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/logicbutton/template.js b/components/logicbutton/template.js new file mode 100644 index 0000000000..738a69eda3 --- /dev/null +++ b/components/logicbutton/template.js @@ -0,0 +1,26 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-LogicButton", + customClasses = [], + variant = "and", + isDisabled = false, +}) => html` + +`; diff --git a/components/menu/index-base.css b/components/menu/index-base.css new file mode 100644 index 0000000000..9193c348ba --- /dev/null +++ b/components/menu/index-base.css @@ -0,0 +1,662 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Menu { + --spectrum-menu-item-min-height: var(--spectrum-component-height-100); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-100); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-100); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-100); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-100); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-75); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-100); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-100); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-medium); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-medium); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-medium); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-medium); + --spectrum-menu-item-top-to-action: var(--spectrum-spacing-50); + --spectrum-menu-item-top-to-checkbox: var(--spectrum-spacing-50); + --spectrum-menu-item-label-line-height: var(--spectrum-line-height-100); + --spectrum-menu-item-label-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-item-label-to-description-spacing: var(--spectrum-menu-item-label-to-description); + --spectrum-menu-item-focus-indicator-width: var(--spectrum-border-width-200); + --spectrum-menu-item-focus-indicator-color: var(--spectrum-blue-800); + --spectrum-menu-item-label-to-value-area-min-spacing: var(--spectrum-spacing-100); + --spectrum-menu-item-label-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-menu-item-label-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-menu-item-label-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-menu-item-label-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-menu-item-label-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-menu-item-label-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-menu-item-label-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-menu-item-label-icon-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-menu-item-label-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-item-label-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-item-description-line-height: var(--spectrum-line-height-100); + --spectrum-menu-item-description-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-item-description-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-item-description-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-item-description-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-item-description-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-item-description-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-section-header-line-height: var(--spectrum-line-height-100); + --spectrum-menu-section-header-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-section-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-menu-section-header-color: var(--spectrum-gray-900); + --spectrum-menu-collapsible-icon-color: var(--spectrum-gray-900); + --spectrum-menu-checkmark-icon-color-default: var(--spectrum-accent-color-900); + --spectrum-menu-checkmark-icon-color-hover: var(--spectrum-accent-color-1000); + --spectrum-menu-checkmark-icon-color-down: var(--spectrum-accent-color-1100); + --spectrum-menu-checkmark-icon-color-focus: var(--spectrum-accent-color-1000); + --spectrum-menu-drillin-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-drillin-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-drillin-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-drillin-icon-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-item-value-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-item-value-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-item-value-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-item-value-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-checkmark-display-hidden: none; + --spectrum-menu-checkmark-display-shown: block; + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-shown); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-medium); + --spectrum-menu-item-collapsible-has-icon-submenu-item-padding-x-start: calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-text-to-control) + var(--spectrum-menu-item-icon-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width)); + --spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start: calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width)); +} +.spectrum-Menu--sizeS { + --spectrum-menu-item-min-height: var(--spectrum-component-height-75); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-75); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-75); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-75); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-75); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-75); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-50); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-75); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-75); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-small); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-small); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-small); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-small); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-small); +} +.spectrum-Menu--sizeL { + --spectrum-menu-item-min-height: var(--spectrum-component-height-200); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-200); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-200); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-200); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-200); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-200); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-100); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-200); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-200); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-large); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-large); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-large); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-large); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-large); +} +.spectrum-Menu--sizeXL { + --spectrum-menu-item-min-height: var(--spectrum-component-height-300); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-300); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-300); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-300); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-300); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-300); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-300); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-200); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-300); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-300); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-extra-large); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-extra-large); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-extra-large); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-extra-large); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-extra-large); +} +@media (forced-colors: active) { + .spectrum-Menu { + --highcontrast-menu-item-background-color-default: ButtonFace; + --highcontrast-menu-item-color-default: ButtonText; + --highcontrast-menu-item-background-color-focus: Highlight; + --highcontrast-menu-item-color-focus: HighlightText; + --highcontrast-menu-checkmark-icon-color-default: Highlight; + --highcontrast-menu-item-color-disabled: GrayText; + --highcontrast-menu-item-focus-indicator-color: Highlight; + --highcontrast-menu-item-selected-background-color: Highlight; + --highcontrast-menu-item-selected-color: HighlightText; + } + @supports (color: SelectedItem) { + .spectrum-Menu { + --highcontrast-menu-item-selected-background-color: SelectedItem; + --highcontrast-menu-item-selected-color: SelectedItemText; + } + } + .spectrum-Menu .spectrum-Menu-item { + forced-color-adjust: none; + } + .spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemCheckbox { + --highcontrast-checkbox-highlight-color-hover: ButtonText; + --highcontrast-checkbox-highlight-color-default: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemSwitch { + --highcontrast-switch-handle-border-color-hover: ButtonText; + --highcontrast-switch-handle-border-color-selected-default: ButtonText; + --highcontrast-switch-handle-border-color-selected-hover: ButtonText; + --highcontrast-switch-background-color-selected-default: ButtonText; + --highcontrast-switch-background-color-selected-hover: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item--drillIn.is-open { + --highcontrast-menu-item-background-color-default: var(--highcontrast-menu-item-selected-background-color); + --highcontrast-menu-item-color-default: var(--highcontrast-menu-item-selected-color); + } + .js-focus-within .spectrum-Menu .spectrum-Menu-item--collapsible.is-open[focus-within], + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus-within, + .spectrum-Menu.js-focus-within .spectrum-Menu-item--collapsible.is-open[focus-within] { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); + } + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open.is-focused, + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:active, + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus { + --highcontrast-menu-item-color-focus: var(--highcontrast-menu-item-color-default); + } + @media (hover: hover) { + .spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemCheckbox { + --highcontrast-checkbox-highlight-color-hover: ButtonText; + --highcontrast-checkbox-highlight-color-default: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemSwitch { + --highcontrast-switch-handle-border-color-hover: ButtonText; + --highcontrast-switch-handle-border-color-selected-default: ButtonText; + --highcontrast-switch-handle-border-color-selected-hover: ButtonText; + --highcontrast-switch-background-color-selected-default: ButtonText; + --highcontrast-switch-background-color-selected-hover: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:hover { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); + --highcontrast-menu-item-color-focus: var(--highcontrast-menu-item-color-default); + } + } +} +.spectrum-Menu { + display: inline-block; + inline-size: var(--mod-menu-inline-size, auto); + box-sizing: border-box; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; +} +.spectrum-Menu:lang(ja), +.spectrum-Menu:lang(ko), +.spectrum-Menu:lang(zh) { + --spectrum-menu-item-label-line-height: var(--mod-menu-item-label-line-height-cjk, var(--spectrum-menu-item-label-line-height-cjk)); + --spectrum-menu-item-description-line-height: var(--mod-menu-item-description-line-height-cjk, var(--spectrum-menu-item-description-line-height-cjk)); + --spectrum-menu-section-header-line-height: var(--mod-menu-section-header-line-height-cjk, var(--spectrum-menu-section-header-line-height-cjk)); +} +.spectrum-Menu .spectrum-Menu-divider { + --spectrum-menu-divider-thickness: var(--spectrum-divider-thickness-medium); + overflow: visible; + inline-size: auto; + margin-block: var(--mod-menu-section-divider-margin-block, max(0px, (var(--spectrum-menu-item-section-divider-height) - var(--spectrum-menu-divider-thickness))/2)); + margin-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu .spectrum-Menu-divider.spectrum-Divider--sizeS { + --spectrum-menu-divider-thickness: var(--spectrum-divider-thickness-small); +} +.spectrum-Menu.is-selectable .spectrum-Menu-item { + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-hidden); + padding-inline-start: var(--mod-menu-item-selectable-edge-to-text-not-selected, var(--spectrum-menu-item-selectable-edge-to-text-not-selected)); +} +.spectrum-Menu.is-selectable .spectrum-Menu-item.is-selected { + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-shown); + padding-inline-start: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-icon-color-default, var(--spectrum-menu-item-label-icon-color-default))); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-icon-color-default, var(--spectrum-menu-item-label-icon-color-default))); +} +.spectrum-Menu-checkmark { + align-self: center; + display: var(--mod-menu-checkmark-display, var(--spectrum-menu-checkmark-display)); + fill: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-default, var(--spectrum-menu-checkmark-icon-color-default))); + color: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-default, var(--spectrum-menu-checkmark-icon-color-default))); + opacity: 1; +} +.spectrum-Menu li:not(.spectrum-Menu-item, .spectrum-Menu-divider) { + display: block; + position: relative; + box-sizing: border-box; + margin: 0; + padding: 0; +} +.spectrum-Menu-item { + cursor: pointer; + position: relative; + align-items: center; + box-sizing: border-box; + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); + line-height: var(--mod-menu-item-label-line-height, var(--spectrum-menu-item-label-line-height)); + min-block-size: var(--mod-menu-item-min-height, var(--spectrum-menu-item-min-height)); + padding-block-start: var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text)); + padding-block-end: var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text)); + padding-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); + margin: 0; + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Menu-item .spectrum-Menu-itemCheckbox { + --mod-checkbox-top-to-text: 0; + --mod-checkbox-text-to-control: 0; + min-block-size: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemCheckbox .spectrum-Checkbox-box { + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); + margin-block-start: var(--mod-menu-item-top-to-checkbox, var(--spectrum-menu-item-top-to-checkbox)); + margin-block-end: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemSwitch { + min-block-size: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemSwitch .spectrum-Switch-switch { + margin-block-start: var(--mod-menu-item-top-to-action, var(--spectrum-menu-item-top-to-action)); + margin-block-end: 0; +} +.spectrum-Menu-item { + display: grid; + grid-template-areas: ". chevronAreaCollapsible . headingIconArea sectionHeadingArea . . . " "selectedArea chevronAreaCollapsible checkmarkArea iconArea labelArea valueArea actionsArea chevronAreaDrillIn" ". . . . descriptionArea . . . " ". . . . submenuArea . . . "; + grid-template-columns: auto auto auto auto 1fr auto auto auto; + grid-template-rows: 1fr auto; +} +.spectrum-Menu-item .spectrum-Menu-item { + display: grid; + grid-template-areas: "submenuItemLabelArea submenuItemValueArea"; + grid-template-columns: auto auto; + grid-template-rows: 1fr auto; +} +.spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemLabel { + grid-area: submenuItemLabelArea; +} +.spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemValue { + grid-area: submenuItemValueArea; +} +.spectrum-Menu-item.is-focused, +.spectrum-Menu-item:focus { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-key-focus, var(--spectrum-menu-item-background-color-key-focus))); + outline: none; +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemLabel, +.spectrum-Menu-item:focus > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-focus, var(--spectrum-menu-item-label-content-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-sectionHeading, +.spectrum-Menu-item:focus > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemDescription, +.spectrum-Menu-item:focus > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-focus, var(--spectrum-menu-item-description-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemValue, +.spectrum-Menu-item:focus > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-focus, var(--spectrum-menu-item-value-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark), +.spectrum-Menu-item:focus > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-focus, var(--spectrum-menu-item-label-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-focus, var(--spectrum-menu-item-label-icon-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-chevron, +.spectrum-Menu-item:focus > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-checkmark, +.spectrum-Menu-item:focus > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-focus, var(--spectrum-menu-checkmark-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-focus, var(--spectrum-menu-checkmark-icon-color-focus))); +} +.spectrum-Menu-back:focus-visible, +.spectrum-Menu-item:focus-visible { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); +} +.spectrum-Menu-item:dir(rtl), +[dir="rtl"] .spectrum-Menu-item { + --spectrum-menu-item-focus-indicator-direction-scalar: -1; +} +.spectrum-Menu-item:active { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-down, var(--spectrum-menu-item-background-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-down, var(--spectrum-menu-item-label-content-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-down, var(--spectrum-menu-item-description-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-down, var(--spectrum-menu-item-value-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-down, var(--spectrum-menu-item-label-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-down, var(--spectrum-menu-item-label-icon-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); +} +.spectrum-Menu-item:active > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-down, var(--spectrum-menu-checkmark-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-down, var(--spectrum-menu-checkmark-icon-color-down))); +} +.spectrum-Menu-itemIcon { + grid-area: iconArea; + align-self: start; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-itemIcon { + grid-area: headingIconArea; +} +.is-selectableMultiple .spectrum-Menu-item { + align-items: start; +} +.is-selectableMultiple .spectrum-Menu-itemCheckbox { + grid-area: checkmarkArea; +} +.spectrum-Menu-checkmark { + grid-area: checkmarkArea; + align-self: start; +} +.spectrum-Menu-itemSelection { + grid-area: selectedArea; +} +.spectrum-Menu-itemLabel { + grid-area: labelArea; + font-size: var(--mod-menu-item-label-font-size, var(--spectrum-menu-item-label-font-size)); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-content-color-default, var(--spectrum-menu-item-label-content-color-default))); +} +.spectrum-Menu-itemValue { + grid-area: valueArea; +} +.spectrum-Menu-itemActions { + grid-area: actionsArea; + align-self: start; + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); +} +.spectrum-Menu-chevron { + grid-area: chevronArea; + align-self: center; + block-size: var(--spectrum-menu-item-checkmark-height); + inline-size: var(--spectrum-menu-item-checkmark-width); +} +.spectrum-Menu-item--collapsible .spectrum-Menu-chevron { + grid-area: chevronAreaCollapsible; +} +.spectrum-Menu-sectionHeading { + grid-area: sectionHeadingArea; + grid-column: 1/-1; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-sectionHeading { + grid-column: 5/-1; +} +.spectrum-Menu-itemDescription { + grid-area: descriptionArea; +} +.spectrum-Menu-item .spectrum-Menu, +.spectrum-Menu-item--collapsible .spectrum-Menu { + grid-area: submenuArea; + grid-column: 1/-1; +} +.spectrum-Menu-item--drillIn .spectrum-Menu-chevron { + grid-area: chevronAreaDrillIn; +} +.spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + block-size: var(--mod-menu-item-icon-height, var(--spectrum-menu-item-icon-height)); + inline-size: var(--mod-menu-item-icon-width, var(--spectrum-menu-item-icon-width)); +} +.spectrum-Menu-checkmark { + block-size: var(--mod-menu-item-checkmark-height, var(--spectrum-menu-item-checkmark-height)); + inline-size: var(--mod-menu-item-checkmark-width, var(--spectrum-menu-item-checkmark-width)); + margin-block-start: calc(var(--mod-menu-item-top-to-checkmark, var(--spectrum-menu-item-top-to-checkmark)) - var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); +} +.spectrum-Menu-itemIcon--workflowIcon { + margin-inline-end: var(--mod-menu-item-label-text-to-visual, var(--spectrum-menu-item-label-text-to-visual)); +} +.spectrum-Menu-chevron { + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); +} +.spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-description-color-default, var(--spectrum-menu-item-description-color-default))); + font-size: var(--mod-menu-item-description-font-size, var(--spectrum-menu-item-description-font-size)); + margin-block-start: var(--mod-menu-item-label-to-description-spacing, var(--spectrum-menu-item-label-to-description-spacing)); + line-height: var(--mod-menu-item-description-line-height, var(--spectrum-menu-item-description-line-height)); +} +.spectrum-Menu-itemDescription, +.spectrum-Menu-itemLabel { + hyphens: auto; + overflow-wrap: break-word; +} +.spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-value-color-default, var(--spectrum-menu-item-value-color-default))); + font-size: var(--mod-menu-item-label-font-size, var(--spectrum-menu-item-label-font-size)); + justify-self: end; + align-self: start; + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); +} +.spectrum-Menu-itemLabel--truncate { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); + display: block; + font-size: var(--mod-menu-section-header-font-size, var(--spectrum-menu-section-header-font-size)); + font-weight: var(--mod-menu-section-header-font-weight, var(--spectrum-menu-section-header-font-weight)); + line-height: var(--mod-menu-section-header-line-height, var(--spectrum-menu-section-header-line-height)); + min-inline-size: var(--mod-menu-section-header-min-width, var(--spectrum-menu-section-header-min-width)); + padding-block-start: var(--mod-menu-section-header-top-edge-to-text, var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + padding-block-end: var(--mod-menu-section-header-bottom-edge-to-text, var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text))); + padding-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu-item--collapsible.is-open { + padding-block-end: 0; +} +.spectrum-Menu-item--collapsible.is-open .spectrum-Menu-chevron { + transform: rotate(90deg); +} +.spectrum-Menu-item--collapsible.is-open.is-focused, +.spectrum-Menu-item--collapsible.is-open:active, +.spectrum-Menu-item--collapsible.is-open:focus { + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); +} +.spectrum-Menu-item--collapsible .spectrum-Menu { + display: none; +} +.spectrum-Menu-item--collapsible .spectrum-Menu.is-open { + display: block; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-sectionHeading { + padding-inline: 0; +} +.spectrum-Menu-item--collapsible > .spectrum-Menu-itemIcon { + padding-block-start: var(--mod-menu-section-header-top-edge-to-text, var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + padding-block-end: var(--mod-menu-section-header-bottom-edge-to-text, var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text))); +} +.spectrum-Menu-chevron:dir(rtl), +[dir="rtl"] .spectrum-Menu-chevron { + transform: rotate(-180deg); +} +.spectrum-Menu-item--collapsible .spectrum-Menu { + margin-inline: calc(var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)) * -1); +} +.spectrum-Menu-item--collapsible .spectrum-Menu .spectrum-Menu-item { + padding-inline-start: var(--mod-menu-item-collapsible-no-icon-submenu-item-padding-x-start, var(--spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start)); +} +.spectrum-Menu-item--drillIn .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-drillin-icon-color-default, var(--spectrum-menu-drillin-icon-color-default))); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-drillin-icon-color-default, var(--spectrum-menu-drillin-icon-color-default))); + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); + margin-inline-end: 0; +} +.spectrum-Menu-item--drillIn.is-open { + --spectrum-menu-item-background-color-default: var(--highcontrast-menu-item-selected-background-color, var(--mod-menu-item-background-color-hover, var(--spectrum-menu-item-background-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + color: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-focused .spectrum-Menu-chevron, +.spectrum-Menu-item--drillIn:focus .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-focus, var(--spectrum-menu-drillin-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-focus, var(--spectrum-menu-drillin-icon-color-focus))); +} +.spectrum-Menu-item--drillIn:active .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-down, var(--spectrum-menu-drillin-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-down, var(--spectrum-menu-drillin-icon-color-down))); +} +.spectrum-Menu-item.is-disabled, +.spectrum-Menu-item[aria-disabled="true"] { + background-color: initial; +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemLabel, +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemValue, +.spectrum-Menu-item.is-disabled .spectrum-Menu-sectionHeading, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemLabel, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemValue, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-content-color-disabled, var(--spectrum-menu-item-label-content-color-disabled))); +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemDescription, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-description-color-disabled, var(--spectrum-menu-item-description-color-disabled))); +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemIcon, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); +} +@media (hover: hover) { + .spectrum-Menu-item:hover { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-hover, var(--spectrum-menu-item-background-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-hover, var(--spectrum-menu-item-label-content-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-hover, var(--spectrum-menu-item-description-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-hover, var(--spectrum-menu-item-value-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + } + .spectrum-Menu-item--collapsible.is-open:hover { + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); + } + .spectrum-Menu-item--drillIn:hover .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + } + .spectrum-Menu-item.is-disabled:hover, + .spectrum-Menu-item[aria-disabled="true"]:hover { + cursor: default; + background-color: initial; + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemLabel, + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemValue, + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-sectionHeading, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemLabel, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemValue, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-content-color-disabled, var(--spectrum-menu-item-label-content-color-disabled))); + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemDescription, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-description-color-disabled, var(--spectrum-menu-item-description-color-disabled))); + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemIcon, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + } +} +.spectrum-Menu-back { + display: flex; + flex-flow: row wrap; + align-items: center; + padding-inline: var(--mod-menu-back-padding-inline-start, 0) var(--mod-menu-back-padding-inline-end, var(--spectrum-menu-item-label-inline-edge-to-content)); + padding-block: var(--mod-menu-back-padding-block-start, 0) var(--mod-menu-back-padding-block-end, 0); +} +.spectrum-Menu-back .spectrum-Menu-sectionHeading { + padding: 0; +} +.spectrum-Menu-backButton { + padding: 0; + margin: 0; + background: transparent; + border: 0; + display: inline-flex; + cursor: pointer; +} +.spectrum-Menu-backButton:focus-visible { + outline: var(--spectrum-focus-indicator-thickness) solid var(--spectrum-focus-indicator-color); + outline-offset: calc((var(--spectrum-focus-indicator-thickness) + 1px) * -1); +} +.spectrum-Menu-backHeading { + display: block; + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-heading-color, var(--spectrum-menu-section-header-color))); + font-size: var(--mod-menu-section-header-font-size, var(--spectrum-menu-section-header-font-size)); + font-weight: var(--mod-menu-section-header-font-weight, var(--spectrum-menu-section-header-font-weight)); + line-height: var(--mod-menu-section-header-line-height, var(--spectrum-menu-section-header-line-height)); +} +.spectrum-Menu-backIcon { + margin-block: var(--mod-menu-back-icon-margin-block, var(--spectrum-menu-back-icon-margin)); + margin-inline: var(--mod-menu-back-icon-margin-inline, var(--spectrum-menu-back-icon-margin)); + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-icon-color-default)); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-icon-color-default)); +} +/*# sourceMappingURL=components/menu/index.css.map */ diff --git a/components/menu/index-vars.css b/components/menu/index-vars.css new file mode 100644 index 0000000000..9193c348ba --- /dev/null +++ b/components/menu/index-vars.css @@ -0,0 +1,662 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Menu { + --spectrum-menu-item-min-height: var(--spectrum-component-height-100); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-100); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-100); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-100); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-100); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-75); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-100); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-100); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-medium); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-medium); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-medium); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-medium); + --spectrum-menu-item-top-to-action: var(--spectrum-spacing-50); + --spectrum-menu-item-top-to-checkbox: var(--spectrum-spacing-50); + --spectrum-menu-item-label-line-height: var(--spectrum-line-height-100); + --spectrum-menu-item-label-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-item-label-to-description-spacing: var(--spectrum-menu-item-label-to-description); + --spectrum-menu-item-focus-indicator-width: var(--spectrum-border-width-200); + --spectrum-menu-item-focus-indicator-color: var(--spectrum-blue-800); + --spectrum-menu-item-label-to-value-area-min-spacing: var(--spectrum-spacing-100); + --spectrum-menu-item-label-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-menu-item-label-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-menu-item-label-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-menu-item-label-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-menu-item-label-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-menu-item-label-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-menu-item-label-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-menu-item-label-icon-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-menu-item-label-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-item-label-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-item-description-line-height: var(--spectrum-line-height-100); + --spectrum-menu-item-description-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-item-description-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-item-description-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-item-description-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-item-description-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-item-description-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-section-header-line-height: var(--spectrum-line-height-100); + --spectrum-menu-section-header-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-section-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-menu-section-header-color: var(--spectrum-gray-900); + --spectrum-menu-collapsible-icon-color: var(--spectrum-gray-900); + --spectrum-menu-checkmark-icon-color-default: var(--spectrum-accent-color-900); + --spectrum-menu-checkmark-icon-color-hover: var(--spectrum-accent-color-1000); + --spectrum-menu-checkmark-icon-color-down: var(--spectrum-accent-color-1100); + --spectrum-menu-checkmark-icon-color-focus: var(--spectrum-accent-color-1000); + --spectrum-menu-drillin-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-drillin-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-drillin-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-drillin-icon-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-item-value-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-item-value-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-item-value-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-item-value-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-checkmark-display-hidden: none; + --spectrum-menu-checkmark-display-shown: block; + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-shown); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-medium); + --spectrum-menu-item-collapsible-has-icon-submenu-item-padding-x-start: calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-text-to-control) + var(--spectrum-menu-item-icon-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width)); + --spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start: calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width)); +} +.spectrum-Menu--sizeS { + --spectrum-menu-item-min-height: var(--spectrum-component-height-75); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-75); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-75); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-75); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-75); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-75); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-50); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-75); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-75); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-small); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-small); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-small); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-small); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-small); +} +.spectrum-Menu--sizeL { + --spectrum-menu-item-min-height: var(--spectrum-component-height-200); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-200); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-200); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-200); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-200); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-200); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-100); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-200); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-200); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-large); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-large); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-large); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-large); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-large); +} +.spectrum-Menu--sizeXL { + --spectrum-menu-item-min-height: var(--spectrum-component-height-300); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-300); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-300); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-300); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-300); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-300); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-300); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-200); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-300); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-300); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-extra-large); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-extra-large); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-extra-large); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-extra-large); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-extra-large); +} +@media (forced-colors: active) { + .spectrum-Menu { + --highcontrast-menu-item-background-color-default: ButtonFace; + --highcontrast-menu-item-color-default: ButtonText; + --highcontrast-menu-item-background-color-focus: Highlight; + --highcontrast-menu-item-color-focus: HighlightText; + --highcontrast-menu-checkmark-icon-color-default: Highlight; + --highcontrast-menu-item-color-disabled: GrayText; + --highcontrast-menu-item-focus-indicator-color: Highlight; + --highcontrast-menu-item-selected-background-color: Highlight; + --highcontrast-menu-item-selected-color: HighlightText; + } + @supports (color: SelectedItem) { + .spectrum-Menu { + --highcontrast-menu-item-selected-background-color: SelectedItem; + --highcontrast-menu-item-selected-color: SelectedItemText; + } + } + .spectrum-Menu .spectrum-Menu-item { + forced-color-adjust: none; + } + .spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemCheckbox { + --highcontrast-checkbox-highlight-color-hover: ButtonText; + --highcontrast-checkbox-highlight-color-default: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemSwitch { + --highcontrast-switch-handle-border-color-hover: ButtonText; + --highcontrast-switch-handle-border-color-selected-default: ButtonText; + --highcontrast-switch-handle-border-color-selected-hover: ButtonText; + --highcontrast-switch-background-color-selected-default: ButtonText; + --highcontrast-switch-background-color-selected-hover: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item--drillIn.is-open { + --highcontrast-menu-item-background-color-default: var(--highcontrast-menu-item-selected-background-color); + --highcontrast-menu-item-color-default: var(--highcontrast-menu-item-selected-color); + } + .js-focus-within .spectrum-Menu .spectrum-Menu-item--collapsible.is-open[focus-within], + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus-within, + .spectrum-Menu.js-focus-within .spectrum-Menu-item--collapsible.is-open[focus-within] { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); + } + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open.is-focused, + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:active, + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus { + --highcontrast-menu-item-color-focus: var(--highcontrast-menu-item-color-default); + } + @media (hover: hover) { + .spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemCheckbox { + --highcontrast-checkbox-highlight-color-hover: ButtonText; + --highcontrast-checkbox-highlight-color-default: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemSwitch { + --highcontrast-switch-handle-border-color-hover: ButtonText; + --highcontrast-switch-handle-border-color-selected-default: ButtonText; + --highcontrast-switch-handle-border-color-selected-hover: ButtonText; + --highcontrast-switch-background-color-selected-default: ButtonText; + --highcontrast-switch-background-color-selected-hover: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:hover { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); + --highcontrast-menu-item-color-focus: var(--highcontrast-menu-item-color-default); + } + } +} +.spectrum-Menu { + display: inline-block; + inline-size: var(--mod-menu-inline-size, auto); + box-sizing: border-box; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; +} +.spectrum-Menu:lang(ja), +.spectrum-Menu:lang(ko), +.spectrum-Menu:lang(zh) { + --spectrum-menu-item-label-line-height: var(--mod-menu-item-label-line-height-cjk, var(--spectrum-menu-item-label-line-height-cjk)); + --spectrum-menu-item-description-line-height: var(--mod-menu-item-description-line-height-cjk, var(--spectrum-menu-item-description-line-height-cjk)); + --spectrum-menu-section-header-line-height: var(--mod-menu-section-header-line-height-cjk, var(--spectrum-menu-section-header-line-height-cjk)); +} +.spectrum-Menu .spectrum-Menu-divider { + --spectrum-menu-divider-thickness: var(--spectrum-divider-thickness-medium); + overflow: visible; + inline-size: auto; + margin-block: var(--mod-menu-section-divider-margin-block, max(0px, (var(--spectrum-menu-item-section-divider-height) - var(--spectrum-menu-divider-thickness))/2)); + margin-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu .spectrum-Menu-divider.spectrum-Divider--sizeS { + --spectrum-menu-divider-thickness: var(--spectrum-divider-thickness-small); +} +.spectrum-Menu.is-selectable .spectrum-Menu-item { + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-hidden); + padding-inline-start: var(--mod-menu-item-selectable-edge-to-text-not-selected, var(--spectrum-menu-item-selectable-edge-to-text-not-selected)); +} +.spectrum-Menu.is-selectable .spectrum-Menu-item.is-selected { + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-shown); + padding-inline-start: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-icon-color-default, var(--spectrum-menu-item-label-icon-color-default))); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-icon-color-default, var(--spectrum-menu-item-label-icon-color-default))); +} +.spectrum-Menu-checkmark { + align-self: center; + display: var(--mod-menu-checkmark-display, var(--spectrum-menu-checkmark-display)); + fill: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-default, var(--spectrum-menu-checkmark-icon-color-default))); + color: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-default, var(--spectrum-menu-checkmark-icon-color-default))); + opacity: 1; +} +.spectrum-Menu li:not(.spectrum-Menu-item, .spectrum-Menu-divider) { + display: block; + position: relative; + box-sizing: border-box; + margin: 0; + padding: 0; +} +.spectrum-Menu-item { + cursor: pointer; + position: relative; + align-items: center; + box-sizing: border-box; + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); + line-height: var(--mod-menu-item-label-line-height, var(--spectrum-menu-item-label-line-height)); + min-block-size: var(--mod-menu-item-min-height, var(--spectrum-menu-item-min-height)); + padding-block-start: var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text)); + padding-block-end: var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text)); + padding-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); + margin: 0; + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Menu-item .spectrum-Menu-itemCheckbox { + --mod-checkbox-top-to-text: 0; + --mod-checkbox-text-to-control: 0; + min-block-size: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemCheckbox .spectrum-Checkbox-box { + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); + margin-block-start: var(--mod-menu-item-top-to-checkbox, var(--spectrum-menu-item-top-to-checkbox)); + margin-block-end: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemSwitch { + min-block-size: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemSwitch .spectrum-Switch-switch { + margin-block-start: var(--mod-menu-item-top-to-action, var(--spectrum-menu-item-top-to-action)); + margin-block-end: 0; +} +.spectrum-Menu-item { + display: grid; + grid-template-areas: ". chevronAreaCollapsible . headingIconArea sectionHeadingArea . . . " "selectedArea chevronAreaCollapsible checkmarkArea iconArea labelArea valueArea actionsArea chevronAreaDrillIn" ". . . . descriptionArea . . . " ". . . . submenuArea . . . "; + grid-template-columns: auto auto auto auto 1fr auto auto auto; + grid-template-rows: 1fr auto; +} +.spectrum-Menu-item .spectrum-Menu-item { + display: grid; + grid-template-areas: "submenuItemLabelArea submenuItemValueArea"; + grid-template-columns: auto auto; + grid-template-rows: 1fr auto; +} +.spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemLabel { + grid-area: submenuItemLabelArea; +} +.spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemValue { + grid-area: submenuItemValueArea; +} +.spectrum-Menu-item.is-focused, +.spectrum-Menu-item:focus { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-key-focus, var(--spectrum-menu-item-background-color-key-focus))); + outline: none; +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemLabel, +.spectrum-Menu-item:focus > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-focus, var(--spectrum-menu-item-label-content-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-sectionHeading, +.spectrum-Menu-item:focus > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemDescription, +.spectrum-Menu-item:focus > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-focus, var(--spectrum-menu-item-description-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemValue, +.spectrum-Menu-item:focus > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-focus, var(--spectrum-menu-item-value-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark), +.spectrum-Menu-item:focus > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-focus, var(--spectrum-menu-item-label-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-focus, var(--spectrum-menu-item-label-icon-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-chevron, +.spectrum-Menu-item:focus > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-checkmark, +.spectrum-Menu-item:focus > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-focus, var(--spectrum-menu-checkmark-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-focus, var(--spectrum-menu-checkmark-icon-color-focus))); +} +.spectrum-Menu-back:focus-visible, +.spectrum-Menu-item:focus-visible { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); +} +.spectrum-Menu-item:dir(rtl), +[dir="rtl"] .spectrum-Menu-item { + --spectrum-menu-item-focus-indicator-direction-scalar: -1; +} +.spectrum-Menu-item:active { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-down, var(--spectrum-menu-item-background-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-down, var(--spectrum-menu-item-label-content-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-down, var(--spectrum-menu-item-description-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-down, var(--spectrum-menu-item-value-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-down, var(--spectrum-menu-item-label-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-down, var(--spectrum-menu-item-label-icon-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); +} +.spectrum-Menu-item:active > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-down, var(--spectrum-menu-checkmark-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-down, var(--spectrum-menu-checkmark-icon-color-down))); +} +.spectrum-Menu-itemIcon { + grid-area: iconArea; + align-self: start; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-itemIcon { + grid-area: headingIconArea; +} +.is-selectableMultiple .spectrum-Menu-item { + align-items: start; +} +.is-selectableMultiple .spectrum-Menu-itemCheckbox { + grid-area: checkmarkArea; +} +.spectrum-Menu-checkmark { + grid-area: checkmarkArea; + align-self: start; +} +.spectrum-Menu-itemSelection { + grid-area: selectedArea; +} +.spectrum-Menu-itemLabel { + grid-area: labelArea; + font-size: var(--mod-menu-item-label-font-size, var(--spectrum-menu-item-label-font-size)); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-content-color-default, var(--spectrum-menu-item-label-content-color-default))); +} +.spectrum-Menu-itemValue { + grid-area: valueArea; +} +.spectrum-Menu-itemActions { + grid-area: actionsArea; + align-self: start; + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); +} +.spectrum-Menu-chevron { + grid-area: chevronArea; + align-self: center; + block-size: var(--spectrum-menu-item-checkmark-height); + inline-size: var(--spectrum-menu-item-checkmark-width); +} +.spectrum-Menu-item--collapsible .spectrum-Menu-chevron { + grid-area: chevronAreaCollapsible; +} +.spectrum-Menu-sectionHeading { + grid-area: sectionHeadingArea; + grid-column: 1/-1; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-sectionHeading { + grid-column: 5/-1; +} +.spectrum-Menu-itemDescription { + grid-area: descriptionArea; +} +.spectrum-Menu-item .spectrum-Menu, +.spectrum-Menu-item--collapsible .spectrum-Menu { + grid-area: submenuArea; + grid-column: 1/-1; +} +.spectrum-Menu-item--drillIn .spectrum-Menu-chevron { + grid-area: chevronAreaDrillIn; +} +.spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + block-size: var(--mod-menu-item-icon-height, var(--spectrum-menu-item-icon-height)); + inline-size: var(--mod-menu-item-icon-width, var(--spectrum-menu-item-icon-width)); +} +.spectrum-Menu-checkmark { + block-size: var(--mod-menu-item-checkmark-height, var(--spectrum-menu-item-checkmark-height)); + inline-size: var(--mod-menu-item-checkmark-width, var(--spectrum-menu-item-checkmark-width)); + margin-block-start: calc(var(--mod-menu-item-top-to-checkmark, var(--spectrum-menu-item-top-to-checkmark)) - var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); +} +.spectrum-Menu-itemIcon--workflowIcon { + margin-inline-end: var(--mod-menu-item-label-text-to-visual, var(--spectrum-menu-item-label-text-to-visual)); +} +.spectrum-Menu-chevron { + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); +} +.spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-description-color-default, var(--spectrum-menu-item-description-color-default))); + font-size: var(--mod-menu-item-description-font-size, var(--spectrum-menu-item-description-font-size)); + margin-block-start: var(--mod-menu-item-label-to-description-spacing, var(--spectrum-menu-item-label-to-description-spacing)); + line-height: var(--mod-menu-item-description-line-height, var(--spectrum-menu-item-description-line-height)); +} +.spectrum-Menu-itemDescription, +.spectrum-Menu-itemLabel { + hyphens: auto; + overflow-wrap: break-word; +} +.spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-value-color-default, var(--spectrum-menu-item-value-color-default))); + font-size: var(--mod-menu-item-label-font-size, var(--spectrum-menu-item-label-font-size)); + justify-self: end; + align-self: start; + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); +} +.spectrum-Menu-itemLabel--truncate { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); + display: block; + font-size: var(--mod-menu-section-header-font-size, var(--spectrum-menu-section-header-font-size)); + font-weight: var(--mod-menu-section-header-font-weight, var(--spectrum-menu-section-header-font-weight)); + line-height: var(--mod-menu-section-header-line-height, var(--spectrum-menu-section-header-line-height)); + min-inline-size: var(--mod-menu-section-header-min-width, var(--spectrum-menu-section-header-min-width)); + padding-block-start: var(--mod-menu-section-header-top-edge-to-text, var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + padding-block-end: var(--mod-menu-section-header-bottom-edge-to-text, var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text))); + padding-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu-item--collapsible.is-open { + padding-block-end: 0; +} +.spectrum-Menu-item--collapsible.is-open .spectrum-Menu-chevron { + transform: rotate(90deg); +} +.spectrum-Menu-item--collapsible.is-open.is-focused, +.spectrum-Menu-item--collapsible.is-open:active, +.spectrum-Menu-item--collapsible.is-open:focus { + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); +} +.spectrum-Menu-item--collapsible .spectrum-Menu { + display: none; +} +.spectrum-Menu-item--collapsible .spectrum-Menu.is-open { + display: block; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-sectionHeading { + padding-inline: 0; +} +.spectrum-Menu-item--collapsible > .spectrum-Menu-itemIcon { + padding-block-start: var(--mod-menu-section-header-top-edge-to-text, var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + padding-block-end: var(--mod-menu-section-header-bottom-edge-to-text, var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text))); +} +.spectrum-Menu-chevron:dir(rtl), +[dir="rtl"] .spectrum-Menu-chevron { + transform: rotate(-180deg); +} +.spectrum-Menu-item--collapsible .spectrum-Menu { + margin-inline: calc(var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)) * -1); +} +.spectrum-Menu-item--collapsible .spectrum-Menu .spectrum-Menu-item { + padding-inline-start: var(--mod-menu-item-collapsible-no-icon-submenu-item-padding-x-start, var(--spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start)); +} +.spectrum-Menu-item--drillIn .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-drillin-icon-color-default, var(--spectrum-menu-drillin-icon-color-default))); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-drillin-icon-color-default, var(--spectrum-menu-drillin-icon-color-default))); + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); + margin-inline-end: 0; +} +.spectrum-Menu-item--drillIn.is-open { + --spectrum-menu-item-background-color-default: var(--highcontrast-menu-item-selected-background-color, var(--mod-menu-item-background-color-hover, var(--spectrum-menu-item-background-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + color: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-focused .spectrum-Menu-chevron, +.spectrum-Menu-item--drillIn:focus .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-focus, var(--spectrum-menu-drillin-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-focus, var(--spectrum-menu-drillin-icon-color-focus))); +} +.spectrum-Menu-item--drillIn:active .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-down, var(--spectrum-menu-drillin-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-down, var(--spectrum-menu-drillin-icon-color-down))); +} +.spectrum-Menu-item.is-disabled, +.spectrum-Menu-item[aria-disabled="true"] { + background-color: initial; +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemLabel, +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemValue, +.spectrum-Menu-item.is-disabled .spectrum-Menu-sectionHeading, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemLabel, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemValue, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-content-color-disabled, var(--spectrum-menu-item-label-content-color-disabled))); +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemDescription, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-description-color-disabled, var(--spectrum-menu-item-description-color-disabled))); +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemIcon, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); +} +@media (hover: hover) { + .spectrum-Menu-item:hover { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-hover, var(--spectrum-menu-item-background-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-hover, var(--spectrum-menu-item-label-content-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-hover, var(--spectrum-menu-item-description-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-hover, var(--spectrum-menu-item-value-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + } + .spectrum-Menu-item--collapsible.is-open:hover { + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); + } + .spectrum-Menu-item--drillIn:hover .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + } + .spectrum-Menu-item.is-disabled:hover, + .spectrum-Menu-item[aria-disabled="true"]:hover { + cursor: default; + background-color: initial; + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemLabel, + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemValue, + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-sectionHeading, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemLabel, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemValue, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-content-color-disabled, var(--spectrum-menu-item-label-content-color-disabled))); + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemDescription, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-description-color-disabled, var(--spectrum-menu-item-description-color-disabled))); + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemIcon, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + } +} +.spectrum-Menu-back { + display: flex; + flex-flow: row wrap; + align-items: center; + padding-inline: var(--mod-menu-back-padding-inline-start, 0) var(--mod-menu-back-padding-inline-end, var(--spectrum-menu-item-label-inline-edge-to-content)); + padding-block: var(--mod-menu-back-padding-block-start, 0) var(--mod-menu-back-padding-block-end, 0); +} +.spectrum-Menu-back .spectrum-Menu-sectionHeading { + padding: 0; +} +.spectrum-Menu-backButton { + padding: 0; + margin: 0; + background: transparent; + border: 0; + display: inline-flex; + cursor: pointer; +} +.spectrum-Menu-backButton:focus-visible { + outline: var(--spectrum-focus-indicator-thickness) solid var(--spectrum-focus-indicator-color); + outline-offset: calc((var(--spectrum-focus-indicator-thickness) + 1px) * -1); +} +.spectrum-Menu-backHeading { + display: block; + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-heading-color, var(--spectrum-menu-section-header-color))); + font-size: var(--mod-menu-section-header-font-size, var(--spectrum-menu-section-header-font-size)); + font-weight: var(--mod-menu-section-header-font-weight, var(--spectrum-menu-section-header-font-weight)); + line-height: var(--mod-menu-section-header-line-height, var(--spectrum-menu-section-header-line-height)); +} +.spectrum-Menu-backIcon { + margin-block: var(--mod-menu-back-icon-margin-block, var(--spectrum-menu-back-icon-margin)); + margin-inline: var(--mod-menu-back-icon-margin-inline, var(--spectrum-menu-back-icon-margin)); + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-icon-color-default)); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-icon-color-default)); +} +/*# sourceMappingURL=components/menu/index.css.map */ diff --git a/components/menu/index.css b/components/menu/index.css new file mode 100644 index 0000000000..9193c348ba --- /dev/null +++ b/components/menu/index.css @@ -0,0 +1,662 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Menu { + --spectrum-menu-item-min-height: var(--spectrum-component-height-100); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-100); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-100); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-100); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-100); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-100); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-75); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-100); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-100); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-medium); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-medium); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-medium); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-medium); + --spectrum-menu-item-top-to-action: var(--spectrum-spacing-50); + --spectrum-menu-item-top-to-checkbox: var(--spectrum-spacing-50); + --spectrum-menu-item-label-line-height: var(--spectrum-line-height-100); + --spectrum-menu-item-label-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-item-label-to-description-spacing: var(--spectrum-menu-item-label-to-description); + --spectrum-menu-item-focus-indicator-width: var(--spectrum-border-width-200); + --spectrum-menu-item-focus-indicator-color: var(--spectrum-blue-800); + --spectrum-menu-item-label-to-value-area-min-spacing: var(--spectrum-spacing-100); + --spectrum-menu-item-label-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-menu-item-label-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-menu-item-label-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-menu-item-label-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-menu-item-label-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-menu-item-label-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-menu-item-label-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-menu-item-label-icon-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-menu-item-label-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-item-label-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-item-description-line-height: var(--spectrum-line-height-100); + --spectrum-menu-item-description-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-item-description-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-item-description-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-item-description-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-item-description-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-item-description-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-menu-section-header-line-height: var(--spectrum-line-height-100); + --spectrum-menu-section-header-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-menu-section-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-menu-section-header-color: var(--spectrum-gray-900); + --spectrum-menu-collapsible-icon-color: var(--spectrum-gray-900); + --spectrum-menu-checkmark-icon-color-default: var(--spectrum-accent-color-900); + --spectrum-menu-checkmark-icon-color-hover: var(--spectrum-accent-color-1000); + --spectrum-menu-checkmark-icon-color-down: var(--spectrum-accent-color-1100); + --spectrum-menu-checkmark-icon-color-focus: var(--spectrum-accent-color-1000); + --spectrum-menu-drillin-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-drillin-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-drillin-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-drillin-icon-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-item-value-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-menu-item-value-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-menu-item-value-color-down: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-menu-item-value-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-menu-checkmark-display-hidden: none; + --spectrum-menu-checkmark-display-shown: block; + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-shown); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-medium); + --spectrum-menu-item-collapsible-has-icon-submenu-item-padding-x-start: calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-text-to-control) + var(--spectrum-menu-item-icon-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width)); + --spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start: calc(var(--spectrum-menu-item-label-inline-edge-to-content) + var(--spectrum-menu-item-checkmark-width) + var(--spectrum-menu-item-label-text-to-visual) + var(--spectrum-menu-item-focus-indicator-width)); +} +.spectrum-Menu--sizeS { + --spectrum-menu-item-min-height: var(--spectrum-component-height-75); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-75); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-75); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-75); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-75); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-75); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-75); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-50); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-75); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-75); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-small); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-small); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-small); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-small); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-small); +} +.spectrum-Menu--sizeL { + --spectrum-menu-item-min-height: var(--spectrum-component-height-200); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-200); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-200); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-200); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-200); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-200); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-200); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-100); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-200); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-200); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-large); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-large); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-large); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-large); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-large); +} +.spectrum-Menu--sizeXL { + --spectrum-menu-item-min-height: var(--spectrum-component-height-300); + --spectrum-menu-item-icon-height: var(--spectrum-workflow-icon-size-300); + --spectrum-menu-item-icon-width: var(--spectrum-workflow-icon-size-300); + --spectrum-menu-item-label-font-size: var(--spectrum-font-size-300); + --spectrum-menu-item-label-text-to-visual: var(--spectrum-text-to-visual-300); + --spectrum-menu-item-label-inline-edge-to-content: var(--spectrum-component-edge-to-text-300); + --spectrum-menu-item-top-edge-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-menu-item-bottom-edge-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-menu-item-text-to-control: var(--spectrum-text-to-control-300); + --spectrum-menu-item-description-font-size: var(--spectrum-font-size-200); + --spectrum-menu-section-header-font-size: var(--spectrum-font-size-300); + --spectrum-menu-section-header-min-width: var(--spectrum-component-height-300); + --spectrum-menu-item-selectable-edge-to-text-not-selected: var(--spectrum-menu-item-selectable-edge-to-text-not-selected-extra-large); + --spectrum-menu-item-checkmark-height: var(--spectrum-menu-item-checkmark-height-extra-large); + --spectrum-menu-item-checkmark-width: var(--spectrum-menu-item-checkmark-width-extra-large); + --spectrum-menu-item-top-to-checkmark: var(--spectrum-menu-item-top-to-selected-icon-extra-large); + --spectrum-menu-back-icon-margin: var(--spectrum-navigational-indicator-top-to-back-icon-extra-large); +} +@media (forced-colors: active) { + .spectrum-Menu { + --highcontrast-menu-item-background-color-default: ButtonFace; + --highcontrast-menu-item-color-default: ButtonText; + --highcontrast-menu-item-background-color-focus: Highlight; + --highcontrast-menu-item-color-focus: HighlightText; + --highcontrast-menu-checkmark-icon-color-default: Highlight; + --highcontrast-menu-item-color-disabled: GrayText; + --highcontrast-menu-item-focus-indicator-color: Highlight; + --highcontrast-menu-item-selected-background-color: Highlight; + --highcontrast-menu-item-selected-color: HighlightText; + } + @supports (color: SelectedItem) { + .spectrum-Menu { + --highcontrast-menu-item-selected-background-color: SelectedItem; + --highcontrast-menu-item-selected-color: SelectedItemText; + } + } + .spectrum-Menu .spectrum-Menu-item { + forced-color-adjust: none; + } + .spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemCheckbox { + --highcontrast-checkbox-highlight-color-hover: ButtonText; + --highcontrast-checkbox-highlight-color-default: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemSwitch { + --highcontrast-switch-handle-border-color-hover: ButtonText; + --highcontrast-switch-handle-border-color-selected-default: ButtonText; + --highcontrast-switch-handle-border-color-selected-hover: ButtonText; + --highcontrast-switch-background-color-selected-default: ButtonText; + --highcontrast-switch-background-color-selected-hover: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item--drillIn.is-open { + --highcontrast-menu-item-background-color-default: var(--highcontrast-menu-item-selected-background-color); + --highcontrast-menu-item-color-default: var(--highcontrast-menu-item-selected-color); + } + .js-focus-within .spectrum-Menu .spectrum-Menu-item--collapsible.is-open[focus-within], + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus-within, + .spectrum-Menu.js-focus-within .spectrum-Menu-item--collapsible.is-open[focus-within] { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); + } + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open.is-focused, + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:active, + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus { + --highcontrast-menu-item-color-focus: var(--highcontrast-menu-item-color-default); + } + @media (hover: hover) { + .spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemCheckbox { + --highcontrast-checkbox-highlight-color-hover: ButtonText; + --highcontrast-checkbox-highlight-color-default: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemSwitch { + --highcontrast-switch-handle-border-color-hover: ButtonText; + --highcontrast-switch-handle-border-color-selected-default: ButtonText; + --highcontrast-switch-handle-border-color-selected-hover: ButtonText; + --highcontrast-switch-background-color-selected-default: ButtonText; + --highcontrast-switch-background-color-selected-hover: ButtonText; + } + .spectrum-Menu .spectrum-Menu-item--collapsible.is-open:hover { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); + --highcontrast-menu-item-color-focus: var(--highcontrast-menu-item-color-default); + } + } +} +.spectrum-Menu { + display: inline-block; + inline-size: var(--mod-menu-inline-size, auto); + box-sizing: border-box; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; +} +.spectrum-Menu:lang(ja), +.spectrum-Menu:lang(ko), +.spectrum-Menu:lang(zh) { + --spectrum-menu-item-label-line-height: var(--mod-menu-item-label-line-height-cjk, var(--spectrum-menu-item-label-line-height-cjk)); + --spectrum-menu-item-description-line-height: var(--mod-menu-item-description-line-height-cjk, var(--spectrum-menu-item-description-line-height-cjk)); + --spectrum-menu-section-header-line-height: var(--mod-menu-section-header-line-height-cjk, var(--spectrum-menu-section-header-line-height-cjk)); +} +.spectrum-Menu .spectrum-Menu-divider { + --spectrum-menu-divider-thickness: var(--spectrum-divider-thickness-medium); + overflow: visible; + inline-size: auto; + margin-block: var(--mod-menu-section-divider-margin-block, max(0px, (var(--spectrum-menu-item-section-divider-height) - var(--spectrum-menu-divider-thickness))/2)); + margin-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu .spectrum-Menu-divider.spectrum-Divider--sizeS { + --spectrum-menu-divider-thickness: var(--spectrum-divider-thickness-small); +} +.spectrum-Menu.is-selectable .spectrum-Menu-item { + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-hidden); + padding-inline-start: var(--mod-menu-item-selectable-edge-to-text-not-selected, var(--spectrum-menu-item-selectable-edge-to-text-not-selected)); +} +.spectrum-Menu.is-selectable .spectrum-Menu-item.is-selected { + --spectrum-menu-checkmark-display: var(--spectrum-menu-checkmark-display-shown); + padding-inline-start: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-icon-color-default, var(--spectrum-menu-item-label-icon-color-default))); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-icon-color-default, var(--spectrum-menu-item-label-icon-color-default))); +} +.spectrum-Menu-checkmark { + align-self: center; + display: var(--mod-menu-checkmark-display, var(--spectrum-menu-checkmark-display)); + fill: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-default, var(--spectrum-menu-checkmark-icon-color-default))); + color: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-default, var(--spectrum-menu-checkmark-icon-color-default))); + opacity: 1; +} +.spectrum-Menu li:not(.spectrum-Menu-item, .spectrum-Menu-divider) { + display: block; + position: relative; + box-sizing: border-box; + margin: 0; + padding: 0; +} +.spectrum-Menu-item { + cursor: pointer; + position: relative; + align-items: center; + box-sizing: border-box; + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); + line-height: var(--mod-menu-item-label-line-height, var(--spectrum-menu-item-label-line-height)); + min-block-size: var(--mod-menu-item-min-height, var(--spectrum-menu-item-min-height)); + padding-block-start: var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text)); + padding-block-end: var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text)); + padding-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); + margin: 0; + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Menu-item .spectrum-Menu-itemCheckbox { + --mod-checkbox-top-to-text: 0; + --mod-checkbox-text-to-control: 0; + min-block-size: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemCheckbox .spectrum-Checkbox-box { + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); + margin-block-start: var(--mod-menu-item-top-to-checkbox, var(--spectrum-menu-item-top-to-checkbox)); + margin-block-end: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemSwitch { + min-block-size: 0; +} +.spectrum-Menu-item .spectrum-Menu-itemSwitch .spectrum-Switch-switch { + margin-block-start: var(--mod-menu-item-top-to-action, var(--spectrum-menu-item-top-to-action)); + margin-block-end: 0; +} +.spectrum-Menu-item { + display: grid; + grid-template-areas: ". chevronAreaCollapsible . headingIconArea sectionHeadingArea . . . " "selectedArea chevronAreaCollapsible checkmarkArea iconArea labelArea valueArea actionsArea chevronAreaDrillIn" ". . . . descriptionArea . . . " ". . . . submenuArea . . . "; + grid-template-columns: auto auto auto auto 1fr auto auto auto; + grid-template-rows: 1fr auto; +} +.spectrum-Menu-item .spectrum-Menu-item { + display: grid; + grid-template-areas: "submenuItemLabelArea submenuItemValueArea"; + grid-template-columns: auto auto; + grid-template-rows: 1fr auto; +} +.spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemLabel { + grid-area: submenuItemLabelArea; +} +.spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemValue { + grid-area: submenuItemValueArea; +} +.spectrum-Menu-item.is-focused, +.spectrum-Menu-item:focus { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-key-focus, var(--spectrum-menu-item-background-color-key-focus))); + outline: none; +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemLabel, +.spectrum-Menu-item:focus > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-focus, var(--spectrum-menu-item-label-content-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-sectionHeading, +.spectrum-Menu-item:focus > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemDescription, +.spectrum-Menu-item:focus > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-focus, var(--spectrum-menu-item-description-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemValue, +.spectrum-Menu-item:focus > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-focus, var(--spectrum-menu-item-value-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark), +.spectrum-Menu-item:focus > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-focus, var(--spectrum-menu-item-label-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-focus, var(--spectrum-menu-item-label-icon-color-focus))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-chevron, +.spectrum-Menu-item:focus > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); +} +.spectrum-Menu-item.is-focused > .spectrum-Menu-checkmark, +.spectrum-Menu-item:focus > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-focus, var(--spectrum-menu-checkmark-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-focus, var(--spectrum-menu-checkmark-icon-color-focus))); +} +.spectrum-Menu-back:focus-visible, +.spectrum-Menu-item:focus-visible { + box-shadow: inset calc(var(--mod-menu-item-focus-indicator-width, var(--spectrum-menu-item-focus-indicator-width)) * var(--spectrum-menu-item-focus-indicator-direction-scalar, 1)) 0 0 0 var(--highcontrast-menu-item-focus-indicator-color, var(--mod-menu-item-focus-indicator-color, var(--spectrum-menu-item-focus-indicator-color))); +} +.spectrum-Menu-item:dir(rtl), +[dir="rtl"] .spectrum-Menu-item { + --spectrum-menu-item-focus-indicator-direction-scalar: -1; +} +.spectrum-Menu-item:active { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-down, var(--spectrum-menu-item-background-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-down, var(--spectrum-menu-item-label-content-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-down, var(--spectrum-menu-item-description-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-down, var(--spectrum-menu-item-value-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-down, var(--spectrum-menu-item-label-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-down, var(--spectrum-menu-item-label-icon-color-down))); +} +.spectrum-Menu-item:active > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); +} +.spectrum-Menu-item:active > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-down, var(--spectrum-menu-checkmark-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-down, var(--spectrum-menu-checkmark-icon-color-down))); +} +.spectrum-Menu-itemIcon { + grid-area: iconArea; + align-self: start; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-itemIcon { + grid-area: headingIconArea; +} +.is-selectableMultiple .spectrum-Menu-item { + align-items: start; +} +.is-selectableMultiple .spectrum-Menu-itemCheckbox { + grid-area: checkmarkArea; +} +.spectrum-Menu-checkmark { + grid-area: checkmarkArea; + align-self: start; +} +.spectrum-Menu-itemSelection { + grid-area: selectedArea; +} +.spectrum-Menu-itemLabel { + grid-area: labelArea; + font-size: var(--mod-menu-item-label-font-size, var(--spectrum-menu-item-label-font-size)); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-label-content-color-default, var(--spectrum-menu-item-label-content-color-default))); +} +.spectrum-Menu-itemValue { + grid-area: valueArea; +} +.spectrum-Menu-itemActions { + grid-area: actionsArea; + align-self: start; + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); +} +.spectrum-Menu-chevron { + grid-area: chevronArea; + align-self: center; + block-size: var(--spectrum-menu-item-checkmark-height); + inline-size: var(--spectrum-menu-item-checkmark-width); +} +.spectrum-Menu-item--collapsible .spectrum-Menu-chevron { + grid-area: chevronAreaCollapsible; +} +.spectrum-Menu-sectionHeading { + grid-area: sectionHeadingArea; + grid-column: 1/-1; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-sectionHeading { + grid-column: 5/-1; +} +.spectrum-Menu-itemDescription { + grid-area: descriptionArea; +} +.spectrum-Menu-item .spectrum-Menu, +.spectrum-Menu-item--collapsible .spectrum-Menu { + grid-area: submenuArea; + grid-column: 1/-1; +} +.spectrum-Menu-item--drillIn .spectrum-Menu-chevron { + grid-area: chevronAreaDrillIn; +} +.spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + block-size: var(--mod-menu-item-icon-height, var(--spectrum-menu-item-icon-height)); + inline-size: var(--mod-menu-item-icon-width, var(--spectrum-menu-item-icon-width)); +} +.spectrum-Menu-checkmark { + block-size: var(--mod-menu-item-checkmark-height, var(--spectrum-menu-item-checkmark-height)); + inline-size: var(--mod-menu-item-checkmark-width, var(--spectrum-menu-item-checkmark-width)); + margin-block-start: calc(var(--mod-menu-item-top-to-checkmark, var(--spectrum-menu-item-top-to-checkmark)) - var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); +} +.spectrum-Menu-itemIcon--workflowIcon { + margin-inline-end: var(--mod-menu-item-label-text-to-visual, var(--spectrum-menu-item-label-text-to-visual)); +} +.spectrum-Menu-chevron { + margin-inline-end: var(--mod-menu-item-text-to-control, var(--spectrum-menu-item-text-to-control)); +} +.spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-description-color-default, var(--spectrum-menu-item-description-color-default))); + font-size: var(--mod-menu-item-description-font-size, var(--spectrum-menu-item-description-font-size)); + margin-block-start: var(--mod-menu-item-label-to-description-spacing, var(--spectrum-menu-item-label-to-description-spacing)); + line-height: var(--mod-menu-item-description-line-height, var(--spectrum-menu-item-description-line-height)); +} +.spectrum-Menu-itemDescription, +.spectrum-Menu-itemLabel { + hyphens: auto; + overflow-wrap: break-word; +} +.spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-item-value-color-default, var(--spectrum-menu-item-value-color-default))); + font-size: var(--mod-menu-item-label-font-size, var(--spectrum-menu-item-label-font-size)); + justify-self: end; + align-self: start; + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); +} +.spectrum-Menu-itemLabel--truncate { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); + display: block; + font-size: var(--mod-menu-section-header-font-size, var(--spectrum-menu-section-header-font-size)); + font-weight: var(--mod-menu-section-header-font-weight, var(--spectrum-menu-section-header-font-weight)); + line-height: var(--mod-menu-section-header-line-height, var(--spectrum-menu-section-header-line-height)); + min-inline-size: var(--mod-menu-section-header-min-width, var(--spectrum-menu-section-header-min-width)); + padding-block-start: var(--mod-menu-section-header-top-edge-to-text, var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + padding-block-end: var(--mod-menu-section-header-bottom-edge-to-text, var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text))); + padding-inline: var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)); +} +.spectrum-Menu-item--collapsible.is-open { + padding-block-end: 0; +} +.spectrum-Menu-item--collapsible.is-open .spectrum-Menu-chevron { + transform: rotate(90deg); +} +.spectrum-Menu-item--collapsible.is-open.is-focused, +.spectrum-Menu-item--collapsible.is-open:active, +.spectrum-Menu-item--collapsible.is-open:focus { + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); +} +.spectrum-Menu-item--collapsible .spectrum-Menu { + display: none; +} +.spectrum-Menu-item--collapsible .spectrum-Menu.is-open { + display: block; +} +.spectrum-Menu-item--collapsible .spectrum-Menu-sectionHeading { + padding-inline: 0; +} +.spectrum-Menu-item--collapsible > .spectrum-Menu-itemIcon { + padding-block-start: var(--mod-menu-section-header-top-edge-to-text, var(--mod-menu-item-top-edge-to-text, var(--spectrum-menu-item-top-edge-to-text))); + padding-block-end: var(--mod-menu-section-header-bottom-edge-to-text, var(--mod-menu-item-bottom-edge-to-text, var(--spectrum-menu-item-bottom-edge-to-text))); +} +.spectrum-Menu-chevron:dir(rtl), +[dir="rtl"] .spectrum-Menu-chevron { + transform: rotate(-180deg); +} +.spectrum-Menu-item--collapsible .spectrum-Menu { + margin-inline: calc(var(--mod-menu-item-label-inline-edge-to-content, var(--spectrum-menu-item-label-inline-edge-to-content)) * -1); +} +.spectrum-Menu-item--collapsible .spectrum-Menu .spectrum-Menu-item { + padding-inline-start: var(--mod-menu-item-collapsible-no-icon-submenu-item-padding-x-start, var(--spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start)); +} +.spectrum-Menu-item--drillIn .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-drillin-icon-color-default, var(--spectrum-menu-drillin-icon-color-default))); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-drillin-icon-color-default, var(--spectrum-menu-drillin-icon-color-default))); + margin-inline-start: var(--mod-menu-item-label-to-value-area-min-spacing, var(--spectrum-menu-item-label-to-value-area-min-spacing)); + margin-inline-end: 0; +} +.spectrum-Menu-item--drillIn.is-open { + --spectrum-menu-item-background-color-default: var(--highcontrast-menu-item-selected-background-color, var(--mod-menu-item-background-color-hover, var(--spectrum-menu-item-background-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-open .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + color: var(--highcontrast-menu-checkmark-icon-color-default, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); +} +.spectrum-Menu-item--drillIn.is-focused .spectrum-Menu-chevron, +.spectrum-Menu-item--drillIn:focus .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-focus, var(--spectrum-menu-drillin-icon-color-focus))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-focus, var(--spectrum-menu-drillin-icon-color-focus))); +} +.spectrum-Menu-item--drillIn:active .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-down, var(--spectrum-menu-drillin-icon-color-down))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-down, var(--spectrum-menu-drillin-icon-color-down))); +} +.spectrum-Menu-item.is-disabled, +.spectrum-Menu-item[aria-disabled="true"] { + background-color: initial; +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemLabel, +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemValue, +.spectrum-Menu-item.is-disabled .spectrum-Menu-sectionHeading, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemLabel, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemValue, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-content-color-disabled, var(--spectrum-menu-item-label-content-color-disabled))); +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemDescription, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-description-color-disabled, var(--spectrum-menu-item-description-color-disabled))); +} +.spectrum-Menu-item.is-disabled .spectrum-Menu-itemIcon, +.spectrum-Menu-item[aria-disabled="true"] .spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); +} +@media (hover: hover) { + .spectrum-Menu-item:hover { + background-color: var(--highcontrast-menu-item-background-color-focus, var(--mod-menu-item-background-color-hover, var(--spectrum-menu-item-background-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemLabel { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-content-color-hover, var(--spectrum-menu-item-label-content-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-section-header-color, var(--spectrum-menu-section-header-color))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-description-color-hover, var(--spectrum-menu-item-description-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemValue { + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-value-color-hover, var(--spectrum-menu-item-value-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark) { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-item-label-icon-color-hover, var(--spectrum-menu-item-label-icon-color-hover))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-collapsible-icon-color, var(--spectrum-menu-collapsible-icon-color))); + } + .spectrum-Menu-item:hover > .spectrum-Menu-checkmark { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-checkmark-icon-color-hover, var(--spectrum-menu-checkmark-icon-color-hover))); + } + .spectrum-Menu-item--collapsible.is-open:hover { + background-color: var(--highcontrast-menu-item-background-color-default, var(--mod-menu-item-background-color-default, var(--spectrum-menu-item-background-color-default))); + } + .spectrum-Menu-item--drillIn:hover .spectrum-Menu-chevron { + fill: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + color: var(--highcontrast-menu-item-color-focus, var(--mod-menu-drillin-icon-color-hover, var(--spectrum-menu-drillin-icon-color-hover))); + } + .spectrum-Menu-item.is-disabled:hover, + .spectrum-Menu-item[aria-disabled="true"]:hover { + cursor: default; + background-color: initial; + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemLabel, + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemValue, + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-sectionHeading, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemLabel, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemValue, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-sectionHeading { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-content-color-disabled, var(--spectrum-menu-item-label-content-color-disabled))); + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemDescription, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemDescription { + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-description-color-disabled, var(--spectrum-menu-item-description-color-disabled))); + } + .spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemIcon, + .spectrum-Menu-item[aria-disabled="true"]:hover .spectrum-Menu-itemIcon { + fill: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + color: var(--highcontrast-menu-item-color-disabled, var(--mod-menu-item-label-icon-color-disabled, var(--spectrum-menu-item-label-icon-color-disabled))); + } +} +.spectrum-Menu-back { + display: flex; + flex-flow: row wrap; + align-items: center; + padding-inline: var(--mod-menu-back-padding-inline-start, 0) var(--mod-menu-back-padding-inline-end, var(--spectrum-menu-item-label-inline-edge-to-content)); + padding-block: var(--mod-menu-back-padding-block-start, 0) var(--mod-menu-back-padding-block-end, 0); +} +.spectrum-Menu-back .spectrum-Menu-sectionHeading { + padding: 0; +} +.spectrum-Menu-backButton { + padding: 0; + margin: 0; + background: transparent; + border: 0; + display: inline-flex; + cursor: pointer; +} +.spectrum-Menu-backButton:focus-visible { + outline: var(--spectrum-focus-indicator-thickness) solid var(--spectrum-focus-indicator-color); + outline-offset: calc((var(--spectrum-focus-indicator-thickness) + 1px) * -1); +} +.spectrum-Menu-backHeading { + display: block; + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-heading-color, var(--spectrum-menu-section-header-color))); + font-size: var(--mod-menu-section-header-font-size, var(--spectrum-menu-section-header-font-size)); + font-weight: var(--mod-menu-section-header-font-weight, var(--spectrum-menu-section-header-font-weight)); + line-height: var(--mod-menu-section-header-line-height, var(--spectrum-menu-section-header-line-height)); +} +.spectrum-Menu-backIcon { + margin-block: var(--mod-menu-back-icon-margin-block, var(--spectrum-menu-back-icon-margin)); + margin-inline: var(--mod-menu-back-icon-margin-inline, var(--spectrum-menu-back-icon-margin)); + fill: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-icon-color-default)); + color: var(--highcontrast-menu-item-color-default, var(--mod-menu-back-icon-color-default)); +} +/*# sourceMappingURL=components/menu/index.css.map */ diff --git a/components/menu/metadata.json b/components/menu/metadata.json new file mode 100644 index 0000000000..56770bc5f2 --- /dev/null +++ b/components/menu/metadata.json @@ -0,0 +1,347 @@ +{ + "selectors": [ + ".is-selectableMultiple .spectrum-Menu-item", + ".is-selectableMultiple .spectrum-Menu-itemCheckbox", + ".js-focus-within .spectrum-Menu .spectrum-Menu-item--collapsible.is-open[focus-within],\n\t.spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus-within,\n\t.spectrum-Menu.js-focus-within .spectrum-Menu-item--collapsible.is-open[focus-within]", + ".spectrum-Menu", + ".spectrum-Menu .spectrum-Menu-divider", + ".spectrum-Menu .spectrum-Menu-divider.spectrum-Divider--sizeS", + ".spectrum-Menu .spectrum-Menu-item", + ".spectrum-Menu .spectrum-Menu-item--collapsible.is-open.is-focused,\n\t.spectrum-Menu .spectrum-Menu-item--collapsible.is-open:active,\n\t.spectrum-Menu .spectrum-Menu-item--collapsible.is-open:focus", + ".spectrum-Menu .spectrum-Menu-item--collapsible.is-open:hover", + ".spectrum-Menu .spectrum-Menu-item--drillIn.is-open", + ".spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemCheckbox", + ".spectrum-Menu .spectrum-Menu-item:focus .spectrum-Menu-itemSwitch", + ".spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemCheckbox", + ".spectrum-Menu .spectrum-Menu-item:hover .spectrum-Menu-itemSwitch", + ".spectrum-Menu li:not(.spectrum-Menu-item, .spectrum-Menu-divider)", + ".spectrum-Menu--sizeL", + ".spectrum-Menu--sizeS", + ".spectrum-Menu--sizeXL", + ".spectrum-Menu-back", + ".spectrum-Menu-back .spectrum-Menu-sectionHeading", + ".spectrum-Menu-back:focus-visible,\n.spectrum-Menu-item:focus-visible", + ".spectrum-Menu-backButton", + ".spectrum-Menu-backButton:focus-visible", + ".spectrum-Menu-backHeading", + ".spectrum-Menu-backIcon", + ".spectrum-Menu-checkmark", + ".spectrum-Menu-chevron", + ".spectrum-Menu-chevron:dir(rtl),\n[dir=\"rtl\"] .spectrum-Menu-chevron", + ".spectrum-Menu-item", + ".spectrum-Menu-item .spectrum-Menu,\n.spectrum-Menu-item--collapsible .spectrum-Menu", + ".spectrum-Menu-item .spectrum-Menu-item", + ".spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemLabel", + ".spectrum-Menu-item .spectrum-Menu-item .spectrum-Menu-itemValue", + ".spectrum-Menu-item .spectrum-Menu-itemCheckbox", + ".spectrum-Menu-item .spectrum-Menu-itemCheckbox .spectrum-Checkbox-box", + ".spectrum-Menu-item .spectrum-Menu-itemSwitch", + ".spectrum-Menu-item .spectrum-Menu-itemSwitch .spectrum-Switch-switch", + ".spectrum-Menu-item--collapsible .spectrum-Menu", + ".spectrum-Menu-item--collapsible .spectrum-Menu .spectrum-Menu-item", + ".spectrum-Menu-item--collapsible .spectrum-Menu-chevron", + ".spectrum-Menu-item--collapsible .spectrum-Menu-itemIcon", + ".spectrum-Menu-item--collapsible .spectrum-Menu-sectionHeading", + ".spectrum-Menu-item--collapsible .spectrum-Menu.is-open", + ".spectrum-Menu-item--collapsible > .spectrum-Menu-itemIcon", + ".spectrum-Menu-item--collapsible.is-open", + ".spectrum-Menu-item--collapsible.is-open .spectrum-Menu-chevron", + ".spectrum-Menu-item--collapsible.is-open.is-focused,\n.spectrum-Menu-item--collapsible.is-open:active,\n.spectrum-Menu-item--collapsible.is-open:focus", + ".spectrum-Menu-item--collapsible.is-open:hover", + ".spectrum-Menu-item--drillIn .spectrum-Menu-chevron", + ".spectrum-Menu-item--drillIn.is-focused .spectrum-Menu-chevron,\n.spectrum-Menu-item--drillIn:focus .spectrum-Menu-chevron", + ".spectrum-Menu-item--drillIn.is-open", + ".spectrum-Menu-item--drillIn.is-open .spectrum-Menu-checkmark", + ".spectrum-Menu-item--drillIn.is-open .spectrum-Menu-chevron", + ".spectrum-Menu-item--drillIn.is-open .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark)", + ".spectrum-Menu-item--drillIn:active .spectrum-Menu-chevron", + ".spectrum-Menu-item--drillIn:hover .spectrum-Menu-chevron", + ".spectrum-Menu-item.is-disabled .spectrum-Menu-itemDescription,\n.spectrum-Menu-item[aria-disabled=\"true\"] .spectrum-Menu-itemDescription", + ".spectrum-Menu-item.is-disabled .spectrum-Menu-itemIcon,\n.spectrum-Menu-item[aria-disabled=\"true\"] .spectrum-Menu-itemIcon", + ".spectrum-Menu-item.is-disabled .spectrum-Menu-itemLabel,\n.spectrum-Menu-item.is-disabled .spectrum-Menu-itemValue,\n.spectrum-Menu-item.is-disabled .spectrum-Menu-sectionHeading,\n.spectrum-Menu-item[aria-disabled=\"true\"] .spectrum-Menu-itemLabel,\n.spectrum-Menu-item[aria-disabled=\"true\"] .spectrum-Menu-itemValue,\n.spectrum-Menu-item[aria-disabled=\"true\"] .spectrum-Menu-sectionHeading", + ".spectrum-Menu-item.is-disabled,\n.spectrum-Menu-item[aria-disabled=\"true\"]", + ".spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemDescription,\n\t.spectrum-Menu-item[aria-disabled=\"true\"]:hover .spectrum-Menu-itemDescription", + ".spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemIcon,\n\t.spectrum-Menu-item[aria-disabled=\"true\"]:hover .spectrum-Menu-itemIcon", + ".spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemLabel,\n\t.spectrum-Menu-item.is-disabled:hover .spectrum-Menu-itemValue,\n\t.spectrum-Menu-item.is-disabled:hover .spectrum-Menu-sectionHeading,\n\t.spectrum-Menu-item[aria-disabled=\"true\"]:hover .spectrum-Menu-itemLabel,\n\t.spectrum-Menu-item[aria-disabled=\"true\"]:hover .spectrum-Menu-itemValue,\n\t.spectrum-Menu-item[aria-disabled=\"true\"]:hover .spectrum-Menu-sectionHeading", + ".spectrum-Menu-item.is-disabled:hover,\n\t.spectrum-Menu-item[aria-disabled=\"true\"]:hover", + ".spectrum-Menu-item.is-focused > .spectrum-Menu-checkmark,\n.spectrum-Menu-item:focus > .spectrum-Menu-checkmark", + ".spectrum-Menu-item.is-focused > .spectrum-Menu-chevron,\n.spectrum-Menu-item:focus > .spectrum-Menu-chevron", + ".spectrum-Menu-item.is-focused > .spectrum-Menu-itemDescription,\n.spectrum-Menu-item:focus > .spectrum-Menu-itemDescription", + ".spectrum-Menu-item.is-focused > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark),\n.spectrum-Menu-item:focus > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark)", + ".spectrum-Menu-item.is-focused > .spectrum-Menu-itemLabel,\n.spectrum-Menu-item:focus > .spectrum-Menu-itemLabel", + ".spectrum-Menu-item.is-focused > .spectrum-Menu-itemValue,\n.spectrum-Menu-item:focus > .spectrum-Menu-itemValue", + ".spectrum-Menu-item.is-focused > .spectrum-Menu-sectionHeading,\n.spectrum-Menu-item:focus > .spectrum-Menu-sectionHeading", + ".spectrum-Menu-item.is-focused,\n.spectrum-Menu-item:focus", + ".spectrum-Menu-item:active", + ".spectrum-Menu-item:active > .spectrum-Menu-checkmark", + ".spectrum-Menu-item:active > .spectrum-Menu-chevron", + ".spectrum-Menu-item:active > .spectrum-Menu-itemDescription", + ".spectrum-Menu-item:active > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark)", + ".spectrum-Menu-item:active > .spectrum-Menu-itemLabel", + ".spectrum-Menu-item:active > .spectrum-Menu-itemValue", + ".spectrum-Menu-item:active > .spectrum-Menu-sectionHeading", + ".spectrum-Menu-item:dir(rtl),\n[dir=\"rtl\"] .spectrum-Menu-item", + ".spectrum-Menu-item:hover", + ".spectrum-Menu-item:hover > .spectrum-Menu-checkmark", + ".spectrum-Menu-item:hover > .spectrum-Menu-chevron", + ".spectrum-Menu-item:hover > .spectrum-Menu-itemDescription", + ".spectrum-Menu-item:hover > .spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark)", + ".spectrum-Menu-item:hover > .spectrum-Menu-itemLabel", + ".spectrum-Menu-item:hover > .spectrum-Menu-itemValue", + ".spectrum-Menu-item:hover > .spectrum-Menu-sectionHeading", + ".spectrum-Menu-itemActions", + ".spectrum-Menu-itemDescription", + ".spectrum-Menu-itemDescription,\n.spectrum-Menu-itemLabel", + ".spectrum-Menu-itemIcon", + ".spectrum-Menu-itemIcon--workflowIcon", + ".spectrum-Menu-itemIcon:not(.spectrum-Menu-chevron, .spectrum-Menu-checkmark)", + ".spectrum-Menu-itemLabel", + ".spectrum-Menu-itemLabel--truncate", + ".spectrum-Menu-itemSelection", + ".spectrum-Menu-itemValue", + ".spectrum-Menu-sectionHeading", + ".spectrum-Menu.is-selectable .spectrum-Menu-item", + ".spectrum-Menu.is-selectable .spectrum-Menu-item.is-selected", + ".spectrum-Menu:lang(ja),\n.spectrum-Menu:lang(ko),\n.spectrum-Menu:lang(zh)" + ], + "mods": [ + "--mod-menu-back-heading-color", + "--mod-menu-back-icon-color-default", + "--mod-menu-back-icon-margin-block", + "--mod-menu-back-icon-margin-inline", + "--mod-menu-back-padding-block-end", + "--mod-menu-back-padding-block-start", + "--mod-menu-back-padding-inline-end", + "--mod-menu-back-padding-inline-start", + "--mod-menu-checkmark-display", + "--mod-menu-checkmark-icon-color-default", + "--mod-menu-checkmark-icon-color-down", + "--mod-menu-checkmark-icon-color-focus", + "--mod-menu-checkmark-icon-color-hover", + "--mod-menu-collapsible-icon-color", + "--mod-menu-drillin-icon-color-default", + "--mod-menu-drillin-icon-color-down", + "--mod-menu-drillin-icon-color-focus", + "--mod-menu-drillin-icon-color-hover", + "--mod-menu-inline-size", + "--mod-menu-item-background-color-default", + "--mod-menu-item-background-color-down", + "--mod-menu-item-background-color-hover", + "--mod-menu-item-background-color-key-focus", + "--mod-menu-item-bottom-edge-to-text", + "--mod-menu-item-checkmark-height", + "--mod-menu-item-checkmark-width", + "--mod-menu-item-collapsible-no-icon-submenu-item-padding-x-start", + "--mod-menu-item-description-color-default", + "--mod-menu-item-description-color-disabled", + "--mod-menu-item-description-color-down", + "--mod-menu-item-description-color-focus", + "--mod-menu-item-description-color-hover", + "--mod-menu-item-description-font-size", + "--mod-menu-item-description-line-height", + "--mod-menu-item-description-line-height-cjk", + "--mod-menu-item-focus-indicator-color", + "--mod-menu-item-focus-indicator-width", + "--mod-menu-item-icon-height", + "--mod-menu-item-icon-width", + "--mod-menu-item-label-content-color-default", + "--mod-menu-item-label-content-color-disabled", + "--mod-menu-item-label-content-color-down", + "--mod-menu-item-label-content-color-focus", + "--mod-menu-item-label-content-color-hover", + "--mod-menu-item-label-font-size", + "--mod-menu-item-label-icon-color-default", + "--mod-menu-item-label-icon-color-disabled", + "--mod-menu-item-label-icon-color-down", + "--mod-menu-item-label-icon-color-focus", + "--mod-menu-item-label-icon-color-hover", + "--mod-menu-item-label-inline-edge-to-content", + "--mod-menu-item-label-line-height", + "--mod-menu-item-label-line-height-cjk", + "--mod-menu-item-label-text-to-visual", + "--mod-menu-item-label-to-description-spacing", + "--mod-menu-item-label-to-value-area-min-spacing", + "--mod-menu-item-min-height", + "--mod-menu-item-selectable-edge-to-text-not-selected", + "--mod-menu-item-text-to-control", + "--mod-menu-item-top-edge-to-text", + "--mod-menu-item-top-to-action", + "--mod-menu-item-top-to-checkbox", + "--mod-menu-item-top-to-checkmark", + "--mod-menu-item-value-color-default", + "--mod-menu-item-value-color-down", + "--mod-menu-item-value-color-focus", + "--mod-menu-item-value-color-hover", + "--mod-menu-section-divider-margin-block", + "--mod-menu-section-header-bottom-edge-to-text", + "--mod-menu-section-header-color", + "--mod-menu-section-header-font-size", + "--mod-menu-section-header-font-weight", + "--mod-menu-section-header-line-height", + "--mod-menu-section-header-line-height-cjk", + "--mod-menu-section-header-min-width", + "--mod-menu-section-header-top-edge-to-text" + ], + "spectrum": [ + "--spectrum-accent-color-1000", + "--spectrum-accent-color-1100", + "--spectrum-accent-color-900", + "--spectrum-blue-800", + "--spectrum-bold-font-weight", + "--spectrum-border-width-200", + "--spectrum-cjk-line-height-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-300", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-disabled-content-color", + "--spectrum-divider-thickness-medium", + "--spectrum-divider-thickness-small", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-50", + "--spectrum-font-size-75", + "--spectrum-gray-900", + "--spectrum-line-height-100", + "--spectrum-menu-back-icon-margin", + "--spectrum-menu-checkmark-display", + "--spectrum-menu-checkmark-display-hidden", + "--spectrum-menu-checkmark-display-shown", + "--spectrum-menu-checkmark-icon-color-default", + "--spectrum-menu-checkmark-icon-color-down", + "--spectrum-menu-checkmark-icon-color-focus", + "--spectrum-menu-checkmark-icon-color-hover", + "--spectrum-menu-collapsible-icon-color", + "--spectrum-menu-divider-thickness", + "--spectrum-menu-drillin-icon-color-default", + "--spectrum-menu-drillin-icon-color-down", + "--spectrum-menu-drillin-icon-color-focus", + "--spectrum-menu-drillin-icon-color-hover", + "--spectrum-menu-item-background-color-default", + "--spectrum-menu-item-background-color-down", + "--spectrum-menu-item-background-color-hover", + "--spectrum-menu-item-background-color-key-focus", + "--spectrum-menu-item-bottom-edge-to-text", + "--spectrum-menu-item-checkmark-height", + "--spectrum-menu-item-checkmark-height-extra-large", + "--spectrum-menu-item-checkmark-height-large", + "--spectrum-menu-item-checkmark-height-medium", + "--spectrum-menu-item-checkmark-height-small", + "--spectrum-menu-item-checkmark-width", + "--spectrum-menu-item-checkmark-width-extra-large", + "--spectrum-menu-item-checkmark-width-large", + "--spectrum-menu-item-checkmark-width-medium", + "--spectrum-menu-item-checkmark-width-small", + "--spectrum-menu-item-collapsible-no-icon-submenu-item-padding-x-start", + "--spectrum-menu-item-description-color-default", + "--spectrum-menu-item-description-color-disabled", + "--spectrum-menu-item-description-color-down", + "--spectrum-menu-item-description-color-focus", + "--spectrum-menu-item-description-color-hover", + "--spectrum-menu-item-description-font-size", + "--spectrum-menu-item-description-line-height", + "--spectrum-menu-item-description-line-height-cjk", + "--spectrum-menu-item-focus-indicator-color", + "--spectrum-menu-item-focus-indicator-direction-scalar", + "--spectrum-menu-item-focus-indicator-width", + "--spectrum-menu-item-icon-height", + "--spectrum-menu-item-icon-width", + "--spectrum-menu-item-label-content-color-default", + "--spectrum-menu-item-label-content-color-disabled", + "--spectrum-menu-item-label-content-color-down", + "--spectrum-menu-item-label-content-color-focus", + "--spectrum-menu-item-label-content-color-hover", + "--spectrum-menu-item-label-font-size", + "--spectrum-menu-item-label-icon-color-default", + "--spectrum-menu-item-label-icon-color-disabled", + "--spectrum-menu-item-label-icon-color-down", + "--spectrum-menu-item-label-icon-color-focus", + "--spectrum-menu-item-label-icon-color-hover", + "--spectrum-menu-item-label-inline-edge-to-content", + "--spectrum-menu-item-label-line-height", + "--spectrum-menu-item-label-line-height-cjk", + "--spectrum-menu-item-label-text-to-visual", + "--spectrum-menu-item-label-to-description", + "--spectrum-menu-item-label-to-description-spacing", + "--spectrum-menu-item-label-to-value-area-min-spacing", + "--spectrum-menu-item-min-height", + "--spectrum-menu-item-section-divider-height", + "--spectrum-menu-item-selectable-edge-to-text-not-selected", + "--spectrum-menu-item-selectable-edge-to-text-not-selected-extra-large", + "--spectrum-menu-item-selectable-edge-to-text-not-selected-large", + "--spectrum-menu-item-selectable-edge-to-text-not-selected-medium", + "--spectrum-menu-item-selectable-edge-to-text-not-selected-small", + "--spectrum-menu-item-text-to-control", + "--spectrum-menu-item-top-edge-to-text", + "--spectrum-menu-item-top-to-action", + "--spectrum-menu-item-top-to-checkbox", + "--spectrum-menu-item-top-to-checkmark", + "--spectrum-menu-item-top-to-selected-icon-extra-large", + "--spectrum-menu-item-top-to-selected-icon-large", + "--spectrum-menu-item-top-to-selected-icon-medium", + "--spectrum-menu-item-top-to-selected-icon-small", + "--spectrum-menu-item-value-color-default", + "--spectrum-menu-item-value-color-down", + "--spectrum-menu-item-value-color-focus", + "--spectrum-menu-item-value-color-hover", + "--spectrum-menu-section-header-color", + "--spectrum-menu-section-header-font-size", + "--spectrum-menu-section-header-font-weight", + "--spectrum-menu-section-header-line-height", + "--spectrum-menu-section-header-line-height-cjk", + "--spectrum-menu-section-header-min-width", + "--spectrum-navigational-indicator-top-to-back-icon-extra-large", + "--spectrum-navigational-indicator-top-to-back-icon-large", + "--spectrum-navigational-indicator-top-to-back-icon-medium", + "--spectrum-navigational-indicator-top-to-back-icon-small", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-neutral-subdued-content-color-down", + "--spectrum-neutral-subdued-content-color-hover", + "--spectrum-neutral-subdued-content-color-key-focus", + "--spectrum-spacing-100", + "--spectrum-spacing-50", + "--spectrum-text-to-control-100", + "--spectrum-text-to-control-200", + "--spectrum-text-to-control-300", + "--spectrum-text-to-control-75", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-75", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-75" + ], + "system": [], + "a11y": [ + "--highcontrast-menu-checkmark-icon-color-default", + "--highcontrast-menu-item-background-color-default", + "--highcontrast-menu-item-background-color-focus", + "--highcontrast-menu-item-color-default", + "--highcontrast-menu-item-color-disabled", + "--highcontrast-menu-item-color-focus", + "--highcontrast-menu-item-focus-indicator-color", + "--highcontrast-menu-item-selected-background-color", + "--highcontrast-menu-item-selected-color" + ] +} diff --git a/components/menu/package.json b/components/menu/package.json new file mode 100644 index 0000000000..4282d4419f --- /dev/null +++ b/components/menu/package.json @@ -0,0 +1,63 @@ +{ + "name": "@spectrum-css/menu", + "version": "7.1.4", + "description": "The Spectrum CSS menu component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/menu", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/menu" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/checkbox": ">=9", + "@spectrum-css/divider": ">=3", + "@spectrum-css/icon": ">=7", + "@spectrum-css/switch": ">=5", + "@spectrum-css/tokens": ">=14", + "@spectrum-css/tray": ">=3" + }, + "peerDependenciesMeta": { + "@spectrum-css/checkbox": { + "optional": true + }, + "@spectrum-css/divider": { + "optional": true + }, + "@spectrum-css/switch": { + "optional": true + }, + "@spectrum-css/tray": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/checkbox": "workspace:^", + "@spectrum-css/divider": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/switch": "workspace:^", + "@spectrum-css/tokens": "workspace:^", + "@spectrum-css/tray": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/menu/template.js b/components/menu/template.js new file mode 100644 index 0000000000..3b95de67dc --- /dev/null +++ b/components/menu/template.js @@ -0,0 +1,587 @@ +import { Template as Checkbox } from "@spectrum-css/checkbox/stories/template.js"; +import { Template as Divider } from "@spectrum-css/divider/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as Switch } from "@spectrum-css/switch/stories/template.js"; +import { Template as Tray } from "@spectrum-css/tray/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +/** + * Get the tray submenu back arrow name with scale number (defined in design spec). + */ +const iconWithScale = (size = "m", iconName = "ArrowLeft") => { + switch (size) { + case "s": + return `${iconName}200`; + case "l": + return `${iconName}400`; + case "xl": + return `${iconName}500`; + default: + return `${iconName}300`; + } +}; + +export const MenuItem = ({ + description, + iconName, + iconSet = "workflow", + hasActions, + id, + idx = 0, + isActive = false, + isCollapsible = false, + isDisabled = false, + isDrillIn = false, + isFocused = false, + isHighlighted = false, + isHovered = false, + isOpen = false, + isSelected = false, + items = [], + label, + role = "menuitem", + rootClass, + shouldTruncate, + size, + selectionMode, + value, +}, context) => html` +
  • + ${when( + isCollapsible || (selectionMode == "single" && isSelected), + () => Icon({ + iconName: iconWithScale(size, isCollapsible ? "ChevronRight" : "Checkmark"), + setName: "ui", + size, + customClasses: [ + `${rootClass}Icon`, + isCollapsible ? "spectrum-Menu-chevron" : "spectrum-Menu-checkmark", + ], + }, context) + )} + ${when(selectionMode === "multiple" && !hasActions, () => Checkbox({ + size, + isEmphasized: true, + isChecked: isSelected, + isDisabled, + id: `menu-checkbox-${idx}`, + customClasses: [ + `${rootClass}Checkbox`, + ], + }, context) + )} + ${when(iconName, () => Icon({ + iconName, + setName: iconSet, + size, + customClasses: [ + `${rootClass}Icon`, + `${rootClass}Icon--workflowIcon` + ] + }, context))} + ${when(isCollapsible, () => html` + + ${label} + + `, () => html` + + ${label} + + `)} + ${when(description, () => html` + + ${description} + + `)} + ${when(value, () => html` + + ${value} + + `)} + ${when(hasActions && selectionMode == "multiple", () => html` +
    + ${Switch({ + size, + isChecked: isSelected, + isDisabled, + label: null, + id: `menu-switch-${idx}`, + customClasses: [ + `${rootClass}Switch`, + ], + }, context)} +
    + `)} + ${when(isDrillIn, () => Icon({ + iconName: iconWithScale(size, "ChevronRight"), + setName: "ui", + size, + customClasses: [ + `${rootClass}Icon`, + "spectrum-Menu-chevron", + ], + }, context))} + ${when(isCollapsible && items.length > 0, () => Template({ + items, + isOpen, + size, + shouldTruncate + }, context))} +
  • +`; + +export const MenuGroup = ({ + heading, + id, + idx = 0, + items = [], + isDisabled = false, + isSelectable = false, + isTraySubmenu = false, + shouldTruncate, + maxInlineSize, + subrole, + size, +}, context) => html` + +`; + +export const Template = ({ + customClasses = [], + customStyles = {}, + hasActions, + hasDividers = false, + id, + isDisabled = false, + isItemActive = false, + isItemFocused = false, + isItemHovered = false, + isItemSelected = false, + isOpen = false, + isTraySubmenu = false, + itemIcon, + items = [], + labelledby, + maxInlineSize, + role = "menu", + rootClass = "spectrum-Menu", + selectionMode = "none", + singleItemDescription, + singleItemValue, + shouldTruncate, + size, + subrole = "menuitem", +} = {}, context = {}) => { + const menuMarkup = html` +
      ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + role=${ifDefined(role)} + aria-labelledby=${ifDefined(labelledby)} + aria-disabled=${isDisabled ? "true" : "false"} + style=${maxInlineSize ? `max-inline-size: ${maxInlineSize};` : styleMap(customStyles)} + > + ${items.map((i, idx) => { + if (i.type === "divider") + return html`${hasDividers ? Divider({ + tag: "li", + size: "s", + customClasses: [`${rootClass}-divider`], + }) : ""}`; + else if (i.heading || i.isTraySubmenu) + return MenuGroup({ + ...i, + subrole, + size, + selectionMode, + isTraySubmenu, + shouldTruncate + }, context); + else + return MenuItem({ + ...i, + description: singleItemDescription || i.description, + hasActions, + iconName: itemIcon || i.iconName, + iconSet: i.iconSet || "workflow", + idx, + isActive: isItemActive, + isDisabled: isDisabled || i.isDisabled, + isFocused: isItemFocused || i.isFocused, + isHovered: isItemHovered, + isSelected: isItemSelected || i.isSelected, + role: subrole, + rootClass: `${rootClass}-item`, + selectionMode, + shouldTruncate, + size, + value: singleItemValue || i.value, + }, context); + })} +
    + `; + + if (isTraySubmenu) return Tray({ content: [menuMarkup] }, context); + return menuMarkup; +}; + +const Sizes = (args, context) => ["s", "m", "l", "xl"].map((size) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [ + { + s: "Small", + m: "Medium", + l: "Large", + xl: "Extra-large", + }[size] + ], + customClasses: ["chromatic-ignore"], + }, context)} +
    + ${Template({...args, size}, context)} +
    +
    +`); + +const States = (args, context) => { + const { titlePrefix, firstAndLast } = args; + let stateData = [ + { + stateTitle: "Default", + args: {}, + }, + { + stateTitle: "Hover", + args: { ...args, isItemHovered: true }, + }, + { + stateTitle: "Active (Down)", + args: { ...args, isItemActive: true }, + }, + { + stateTitle: "Focused", + args: { ...args, isItemFocused: true }, + }, + { + stateTitle: "Disabled", + args: { ...args, isDisabled: true }, + } + ]; + + // if testing hover/active/focus feels too heavy handed, we can remove those states + if (firstAndLast) { + stateData = [stateData[0], stateData[stateData.length - 1]]; + } + + return stateData.map((stateItem) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [`${titlePrefix ? titlePrefix + ", ": ""}${stateItem.stateTitle}`], + customClasses: ["chromatic-ignore"], + }, context)} +
    + ${Template({...args, ...stateItem.args}, context)} +
    +
    + `); +}; + +const SingleItemSelectedStates = (args) => { + return html` + ${States({ + ...args, + items: [{ label: "Not selected", isSelected: false, ...args.items[0] }], + titlePrefix: "Not selected", + firstAndLast: true, + })} + ${States({ + ...args, + items: [{ label: "Selected item", isSelected: true, ...args.items[0] }], + titlePrefix: "Selected", + firstAndLast: true, + })} + `; +}; + +const MultiCheckboxSelectedStates = (args) => { + return html` + ${States({ + ...args, + items: [{ label: "Not selected", isSelected: false, ...args.items[0]}], + titlePrefix: "Not Selected", + firstAndLast: true, + })} + ${States({ + ...args, + items: [{ label: "Selected item", isSelected: true, ...args.items[0]}], + titlePrefix: "Selected", + firstAndLast: true, + })} + `; +}; + +const WithValueStates = (args) => { + const baseValueArgs = {...args, hasValue: true, singleItemValue: "Value"}; + const valueData = [ + { + stateTitle: "With value", + args: { ...baseValueArgs }, + }, + { + stateTitle: "With value, disabled", + args: { ...baseValueArgs, isDisabled: true }, + }, + { + stateTitle: "With value and switch", + args: { ...baseValueArgs, hasActions: true }, + }, + { + stateTitle: "With value, truncated label", + args: { ...baseValueArgs, shouldTruncate: true, maxInlineSize: "195px", items: [{ label: "Truncated label on menu item" }] }, + }, + ]; + + return valueData.map((valueItem) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [ valueItem.stateTitle ], + customClasses: ["chromatic-ignore"], + })} +
    + ${Template({ ...args, ...valueItem.args })} +
    +
    + `); +}; + +export const MenuItemWithVariants = (args, context) => html` +
    + ${Template({ + iconName: "Share", + ...args + }, context)} +
    +
    + ${[ + { + sectionTitle: "No selection", + sectionMarkup: States(args), + }, + { + sectionTitle: "With item description and truncation", + sectionMarkup: States({...args, shouldTruncate: true, maxInlineSize: "150px", items: [{ label: "This is a longer menu item that will truncate", description: "This is a description of the menu item"}]}), + }, + { + sectionTitle: "Single selection", + sectionMarkup: SingleItemSelectedStates({...args, selectionMode: "single" }), + }, + { + sectionTitle: "Single selection with icon", + sectionMarkup: SingleItemSelectedStates({...args, selectionMode: "single", items: [{ label: "With icon", iconName: "Share" }] }), + }, + { + sectionTitle: "Multi-selection with checkboxes", + sectionMarkup: MultiCheckboxSelectedStates({...args, selectionMode: "multiple"}), + }, + { + sectionTitle: "Multi-selection with checkboxes and icon", + sectionMarkup: MultiCheckboxSelectedStates({...args, selectionMode: "multiple", items: [{ label: "With icon", iconName: "Share" }]}), + }, + { + sectionTitle: "Multi-selection with switches", + sectionMarkup: MultiCheckboxSelectedStates({...args, selectionMode: "multiple", hasActions: true}), + }, + { + sectionTitle: "Multi-selection with switches and switch label", + sectionMarkup: MultiCheckboxSelectedStates({...args, selectionMode: "multiple", hasActions: true, items: [{ label: "Menu item", value: "switch label"}]}), + }, + { + sectionTitle: "With values", + sectionMarkup: WithValueStates(args), + }, + { + sectionTitle: "Sizes", + sectionMarkup: Sizes({ ...args, selectionMode: "single", items: [{ label: "With sizing", isSelected: true, iconName: "Share" }] }), + }, + ].map((sectionItem) => html` +
    + ${Typography({ + semantics: "heading", + size: "s", + content: [sectionItem.sectionTitle], + customClasses: ["chromatic-ignore"], + })} +
    + ${sectionItem.sectionMarkup} +
    +
    + `)} +
    +`; + +export const MenuWithVariants = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[ + { + stateTitle: "No selection", + args: { ...args, selectionMode: "none" }, + }, + { + stateTitle: "With dividers", + args: { ...args, selectionMode: "none", hasDividers: true }, + }, + { + stateTitle: "Single selection", + args: { ...args, selectionMode: "single" }, + }, + { + stateTitle: "Multi selection", + args: { ...args, selectionMode: "multiple" }, + }, + ].map((item) => html` +
    + ${Typography({ + semantics: "heading", + size: "s", + content: [ item.stateTitle ], + customClasses: ["chromatic-ignore"], + })} +
    + ${Template({...args, ...item.args})} +
    +
    + `)} +
    +`; diff --git a/components/miller/index-base.css b/components/miller/index-base.css new file mode 100644 index 0000000000..6ce5f75682 --- /dev/null +++ b/components/miller/index-base.css @@ -0,0 +1,39 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-MillerColumns { + --spectrum-millercolumns-inline-size: 272px; + --spectrum-millercolumns-padding: var(--spectrum-spacing-100); + --spectrum-millercolumns-margin-inline-start: var(--spectrum-spacing-100); + --spectrum-millercolumns-margin-inline-end: var(--spectrum-spacing-100); + overflow-x: auto; + white-space: nowrap; + -webkit-user-select: none; + user-select: none; + padding: var(--mod-millercolumns-padding, var(--spectrum-millercolumns-padding)) 0; +} +.spectrum-MillerColumns-item { + display: inline-block; + inline-size: var(--mod-millercolumns-inline-size, var(--spectrum-millercolumns-inline-size)); + vertical-align: top; + outline: none; + margin: 0; + padding: 0; + margin-inline-end: var(--mod-millercolumns-margin-inline-end, var(--spectrum-millercolumns-margin-inline-end)); + overflow: auto; + block-size: 100%; +} +.spectrum-MillerColumns-item:first-child { + margin-inline-start: var(--mod-millercolumns-margin-inline-start, var(--spectrum-millercolumns-margin-inline-start)); +} +/*# sourceMappingURL=components/miller/index.css.map */ diff --git a/components/miller/index-vars.css b/components/miller/index-vars.css new file mode 100644 index 0000000000..6ce5f75682 --- /dev/null +++ b/components/miller/index-vars.css @@ -0,0 +1,39 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-MillerColumns { + --spectrum-millercolumns-inline-size: 272px; + --spectrum-millercolumns-padding: var(--spectrum-spacing-100); + --spectrum-millercolumns-margin-inline-start: var(--spectrum-spacing-100); + --spectrum-millercolumns-margin-inline-end: var(--spectrum-spacing-100); + overflow-x: auto; + white-space: nowrap; + -webkit-user-select: none; + user-select: none; + padding: var(--mod-millercolumns-padding, var(--spectrum-millercolumns-padding)) 0; +} +.spectrum-MillerColumns-item { + display: inline-block; + inline-size: var(--mod-millercolumns-inline-size, var(--spectrum-millercolumns-inline-size)); + vertical-align: top; + outline: none; + margin: 0; + padding: 0; + margin-inline-end: var(--mod-millercolumns-margin-inline-end, var(--spectrum-millercolumns-margin-inline-end)); + overflow: auto; + block-size: 100%; +} +.spectrum-MillerColumns-item:first-child { + margin-inline-start: var(--mod-millercolumns-margin-inline-start, var(--spectrum-millercolumns-margin-inline-start)); +} +/*# sourceMappingURL=components/miller/index.css.map */ diff --git a/components/miller/index.css b/components/miller/index.css new file mode 100644 index 0000000000..6ce5f75682 --- /dev/null +++ b/components/miller/index.css @@ -0,0 +1,39 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-MillerColumns { + --spectrum-millercolumns-inline-size: 272px; + --spectrum-millercolumns-padding: var(--spectrum-spacing-100); + --spectrum-millercolumns-margin-inline-start: var(--spectrum-spacing-100); + --spectrum-millercolumns-margin-inline-end: var(--spectrum-spacing-100); + overflow-x: auto; + white-space: nowrap; + -webkit-user-select: none; + user-select: none; + padding: var(--mod-millercolumns-padding, var(--spectrum-millercolumns-padding)) 0; +} +.spectrum-MillerColumns-item { + display: inline-block; + inline-size: var(--mod-millercolumns-inline-size, var(--spectrum-millercolumns-inline-size)); + vertical-align: top; + outline: none; + margin: 0; + padding: 0; + margin-inline-end: var(--mod-millercolumns-margin-inline-end, var(--spectrum-millercolumns-margin-inline-end)); + overflow: auto; + block-size: 100%; +} +.spectrum-MillerColumns-item:first-child { + margin-inline-start: var(--mod-millercolumns-margin-inline-start, var(--spectrum-millercolumns-margin-inline-start)); +} +/*# sourceMappingURL=components/miller/index.css.map */ diff --git a/components/miller/metadata.json b/components/miller/metadata.json new file mode 100644 index 0000000000..6448d0228e --- /dev/null +++ b/components/miller/metadata.json @@ -0,0 +1,22 @@ +{ + "selectors": [ + ".spectrum-MillerColumns", + ".spectrum-MillerColumns-item", + ".spectrum-MillerColumns-item:first-child" + ], + "mods": [ + "--mod-millercolumns-inline-size", + "--mod-millercolumns-margin-inline-end", + "--mod-millercolumns-margin-inline-start", + "--mod-millercolumns-padding" + ], + "spectrum": [ + "--spectrum-millercolumns-inline-size", + "--spectrum-millercolumns-margin-inline-end", + "--spectrum-millercolumns-margin-inline-start", + "--spectrum-millercolumns-padding", + "--spectrum-spacing-100" + ], + "system": [], + "a11y": [] +} diff --git a/components/miller/package.json b/components/miller/package.json new file mode 100644 index 0000000000..195dec89e6 --- /dev/null +++ b/components/miller/package.json @@ -0,0 +1,45 @@ +{ + "name": "@spectrum-css/miller", + "version": "6.1.1", + "description": "The Spectrum CSS miller component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/miller", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/miller" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/assetlist": ">=6", + "@spectrum-css/checkbox": ">=9", + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/assetlist": "workspace:^", + "@spectrum-css/checkbox": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/miller/template.js b/components/miller/template.js new file mode 100644 index 0000000000..66caafe96f --- /dev/null +++ b/components/miller/template.js @@ -0,0 +1,32 @@ +import { Template as AssetList } from "@spectrum-css/assetlist/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-MillerColumns", + customClasses = [], + columns = [], +} = {}, context = {}) => { + if (!columns || !columns.length) { + console.warn("MillerColumns: Column data is required for rendering."); + } + + return html` +
    ({ ...a, [c]: true }), {}), + })} + > + ${columns.map(({ items }) => { + return html` +
    + ${AssetList({ items }, context)} +
    + `; + })} +
    + `; +}; diff --git a/components/modal/index-base.css b/components/modal/index-base.css new file mode 100644 index 0000000000..9805e86cfc --- /dev/null +++ b/components/modal/index-base.css @@ -0,0 +1,117 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Modal { + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: + transform var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + opacity var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)); +} +.spectrum-Modal.is-open { + pointer-events: auto; + visibility: visible; + opacity: 1; + transition-delay: var(--mod-overlay-animation-duration-opened, var(--spectrum-animation-duration-0, 0ms)); +} +.spectrum-Modal { + --spectrum-modal-confirm-exit-animation-delay: var(--spectrum-animation-duration-0); + --spectrum-modal-fullscreen-margin: 32px; + --spectrum-modal-max-height: 90vh; + --spectrum-modal-max-width: 90%; + --spectrum-modal-background-color: var(--spectrum-gray-100); + --spectrum-modal-confirm-border-radius: var(--spectrum-corner-radius-100); + --spectrum-modal-confirm-exit-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-modal-confirm-entry-animation-duration: var(--spectrum-animation-duration-500); + --spectrum-modal-confirm-entry-animation-delay: var(--spectrum-animation-duration-200); + --spectrum-modal-transition-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Modal-wrapper { + position: fixed; + inset-inline-start: 0; + inset-block-start: 0; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + inline-size: 100vw; + block-size: 100vh; + block-size: -webkit-fill-available; + block-size: -moz-available; + block-size: stretch; + visibility: hidden; + pointer-events: none; + z-index: 1; + transition: visibility 0ms linear var(--mod-modal-transition-animation-duration, var(--spectrum-modal-transition-animation-duration)); +} +.spectrum-Modal-wrapper.is-open { + visibility: visible; +} +.spectrum-Modal { + transform: translateY(var(--mod-modal-confirm-entry-animation-distance, var(--spectrum-modal-confirm-entry-animation-distance))); + z-index: 1; + max-block-size: var(--mod-modal-max-height, var(--spectrum-modal-max-height)); + max-inline-size: var(--mod-modal-max-width, var(--spectrum-modal-max-width)); + background: var(--mod-modal-background-color, var(--spectrum-modal-background-color)); + border-radius: var(--mod-modal-confirm-border-radius, var(--spectrum-modal-confirm-border-radius)); + overflow: hidden; + outline: none; + pointer-events: auto; + transition: + opacity var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration)) var(--spectrum-animation-ease-in) var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)), + visibility 0ms linear calc(var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)) + var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration))), + transform 0ms linear calc(var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)) + var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration))); +} +.spectrum-Modal.is-open { + transition: + transform var(--mod-modal-confirm-entry-animation-duration, var(--spectrum-modal-confirm-entry-animation-duration)) var(--spectrum-animation-ease-out) var(--mod-modal-confirm-entry-animation-delay, var(--spectrum-modal-confirm-entry-animation-delay)), + opacity var(--mod-modal-confirm-entry-animation-duration, var(--spectrum-modal-confirm-entry-animation-duration)) var(--spectrum-animation-ease-out) var(--mod-modal-confirm-entry-animation-delay, var(--spectrum-modal-confirm-entry-animation-delay)); + transform: translateY(0); +} +@media only screen and (device-height <= 350px), only screen and (device-width <= 400px) { + .spectrum-Modal--responsive { + inline-size: 100%; + block-size: 100%; + max-inline-size: 100%; + max-block-size: 100%; + border-radius: 0; + } + .spectrum-Modal-wrapper .spectrum-Modal--responsive { + margin-block-start: 0; + } +} +.spectrum-Modal--fullscreen { + position: fixed; + inset-inline-start: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-block-start: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-inline-end: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-block-end: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + max-inline-size: none; + max-block-size: none; +} +.spectrum-Modal--fullscreenTakeover { + position: fixed; + inset: 0; + max-inline-size: none; + max-block-size: none; + box-sizing: border-box; + border: none; + border-radius: 0; +} +.spectrum-Modal--fullscreenTakeover, +.spectrum-Modal--fullscreenTakeover.is-open { + transform: none; +} +/*# sourceMappingURL=components/modal/index.css.map */ diff --git a/components/modal/index-vars.css b/components/modal/index-vars.css new file mode 100644 index 0000000000..9805e86cfc --- /dev/null +++ b/components/modal/index-vars.css @@ -0,0 +1,117 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Modal { + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: + transform var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + opacity var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)); +} +.spectrum-Modal.is-open { + pointer-events: auto; + visibility: visible; + opacity: 1; + transition-delay: var(--mod-overlay-animation-duration-opened, var(--spectrum-animation-duration-0, 0ms)); +} +.spectrum-Modal { + --spectrum-modal-confirm-exit-animation-delay: var(--spectrum-animation-duration-0); + --spectrum-modal-fullscreen-margin: 32px; + --spectrum-modal-max-height: 90vh; + --spectrum-modal-max-width: 90%; + --spectrum-modal-background-color: var(--spectrum-gray-100); + --spectrum-modal-confirm-border-radius: var(--spectrum-corner-radius-100); + --spectrum-modal-confirm-exit-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-modal-confirm-entry-animation-duration: var(--spectrum-animation-duration-500); + --spectrum-modal-confirm-entry-animation-delay: var(--spectrum-animation-duration-200); + --spectrum-modal-transition-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Modal-wrapper { + position: fixed; + inset-inline-start: 0; + inset-block-start: 0; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + inline-size: 100vw; + block-size: 100vh; + block-size: -webkit-fill-available; + block-size: -moz-available; + block-size: stretch; + visibility: hidden; + pointer-events: none; + z-index: 1; + transition: visibility 0ms linear var(--mod-modal-transition-animation-duration, var(--spectrum-modal-transition-animation-duration)); +} +.spectrum-Modal-wrapper.is-open { + visibility: visible; +} +.spectrum-Modal { + transform: translateY(var(--mod-modal-confirm-entry-animation-distance, var(--spectrum-modal-confirm-entry-animation-distance))); + z-index: 1; + max-block-size: var(--mod-modal-max-height, var(--spectrum-modal-max-height)); + max-inline-size: var(--mod-modal-max-width, var(--spectrum-modal-max-width)); + background: var(--mod-modal-background-color, var(--spectrum-modal-background-color)); + border-radius: var(--mod-modal-confirm-border-radius, var(--spectrum-modal-confirm-border-radius)); + overflow: hidden; + outline: none; + pointer-events: auto; + transition: + opacity var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration)) var(--spectrum-animation-ease-in) var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)), + visibility 0ms linear calc(var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)) + var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration))), + transform 0ms linear calc(var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)) + var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration))); +} +.spectrum-Modal.is-open { + transition: + transform var(--mod-modal-confirm-entry-animation-duration, var(--spectrum-modal-confirm-entry-animation-duration)) var(--spectrum-animation-ease-out) var(--mod-modal-confirm-entry-animation-delay, var(--spectrum-modal-confirm-entry-animation-delay)), + opacity var(--mod-modal-confirm-entry-animation-duration, var(--spectrum-modal-confirm-entry-animation-duration)) var(--spectrum-animation-ease-out) var(--mod-modal-confirm-entry-animation-delay, var(--spectrum-modal-confirm-entry-animation-delay)); + transform: translateY(0); +} +@media only screen and (device-height <= 350px), only screen and (device-width <= 400px) { + .spectrum-Modal--responsive { + inline-size: 100%; + block-size: 100%; + max-inline-size: 100%; + max-block-size: 100%; + border-radius: 0; + } + .spectrum-Modal-wrapper .spectrum-Modal--responsive { + margin-block-start: 0; + } +} +.spectrum-Modal--fullscreen { + position: fixed; + inset-inline-start: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-block-start: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-inline-end: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-block-end: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + max-inline-size: none; + max-block-size: none; +} +.spectrum-Modal--fullscreenTakeover { + position: fixed; + inset: 0; + max-inline-size: none; + max-block-size: none; + box-sizing: border-box; + border: none; + border-radius: 0; +} +.spectrum-Modal--fullscreenTakeover, +.spectrum-Modal--fullscreenTakeover.is-open { + transform: none; +} +/*# sourceMappingURL=components/modal/index.css.map */ diff --git a/components/modal/index.css b/components/modal/index.css new file mode 100644 index 0000000000..9805e86cfc --- /dev/null +++ b/components/modal/index.css @@ -0,0 +1,117 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Modal { + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: + transform var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + opacity var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)); +} +.spectrum-Modal.is-open { + pointer-events: auto; + visibility: visible; + opacity: 1; + transition-delay: var(--mod-overlay-animation-duration-opened, var(--spectrum-animation-duration-0, 0ms)); +} +.spectrum-Modal { + --spectrum-modal-confirm-exit-animation-delay: var(--spectrum-animation-duration-0); + --spectrum-modal-fullscreen-margin: 32px; + --spectrum-modal-max-height: 90vh; + --spectrum-modal-max-width: 90%; + --spectrum-modal-background-color: var(--spectrum-gray-100); + --spectrum-modal-confirm-border-radius: var(--spectrum-corner-radius-100); + --spectrum-modal-confirm-exit-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-modal-confirm-entry-animation-duration: var(--spectrum-animation-duration-500); + --spectrum-modal-confirm-entry-animation-delay: var(--spectrum-animation-duration-200); + --spectrum-modal-transition-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-Modal-wrapper { + position: fixed; + inset-inline-start: 0; + inset-block-start: 0; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + inline-size: 100vw; + block-size: 100vh; + block-size: -webkit-fill-available; + block-size: -moz-available; + block-size: stretch; + visibility: hidden; + pointer-events: none; + z-index: 1; + transition: visibility 0ms linear var(--mod-modal-transition-animation-duration, var(--spectrum-modal-transition-animation-duration)); +} +.spectrum-Modal-wrapper.is-open { + visibility: visible; +} +.spectrum-Modal { + transform: translateY(var(--mod-modal-confirm-entry-animation-distance, var(--spectrum-modal-confirm-entry-animation-distance))); + z-index: 1; + max-block-size: var(--mod-modal-max-height, var(--spectrum-modal-max-height)); + max-inline-size: var(--mod-modal-max-width, var(--spectrum-modal-max-width)); + background: var(--mod-modal-background-color, var(--spectrum-modal-background-color)); + border-radius: var(--mod-modal-confirm-border-radius, var(--spectrum-modal-confirm-border-radius)); + overflow: hidden; + outline: none; + pointer-events: auto; + transition: + opacity var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration)) var(--spectrum-animation-ease-in) var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)), + visibility 0ms linear calc(var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)) + var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration))), + transform 0ms linear calc(var(--mod-modal-confirm-exit-animation-delay, var(--spectrum-modal-confirm-exit-animation-delay)) + var(--mod-modal-confirm-exit-animation-duration, var(--spectrum-modal-confirm-exit-animation-duration))); +} +.spectrum-Modal.is-open { + transition: + transform var(--mod-modal-confirm-entry-animation-duration, var(--spectrum-modal-confirm-entry-animation-duration)) var(--spectrum-animation-ease-out) var(--mod-modal-confirm-entry-animation-delay, var(--spectrum-modal-confirm-entry-animation-delay)), + opacity var(--mod-modal-confirm-entry-animation-duration, var(--spectrum-modal-confirm-entry-animation-duration)) var(--spectrum-animation-ease-out) var(--mod-modal-confirm-entry-animation-delay, var(--spectrum-modal-confirm-entry-animation-delay)); + transform: translateY(0); +} +@media only screen and (device-height <= 350px), only screen and (device-width <= 400px) { + .spectrum-Modal--responsive { + inline-size: 100%; + block-size: 100%; + max-inline-size: 100%; + max-block-size: 100%; + border-radius: 0; + } + .spectrum-Modal-wrapper .spectrum-Modal--responsive { + margin-block-start: 0; + } +} +.spectrum-Modal--fullscreen { + position: fixed; + inset-inline-start: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-block-start: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-inline-end: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + inset-block-end: var(--mod-modal-fullscreen-margin, var(--spectrum-modal-fullscreen-margin)); + max-inline-size: none; + max-block-size: none; +} +.spectrum-Modal--fullscreenTakeover { + position: fixed; + inset: 0; + max-inline-size: none; + max-block-size: none; + box-sizing: border-box; + border: none; + border-radius: 0; +} +.spectrum-Modal--fullscreenTakeover, +.spectrum-Modal--fullscreenTakeover.is-open { + transform: none; +} +/*# sourceMappingURL=components/modal/index.css.map */ diff --git a/components/modal/metadata.json b/components/modal/metadata.json new file mode 100644 index 0000000000..6c0d1cf9e0 --- /dev/null +++ b/components/modal/metadata.json @@ -0,0 +1,51 @@ +{ + "selectors": [ + ".spectrum-Modal", + ".spectrum-Modal--fullscreen", + ".spectrum-Modal--fullscreenTakeover", + ".spectrum-Modal--fullscreenTakeover,\n.spectrum-Modal--fullscreenTakeover.is-open", + ".spectrum-Modal--responsive", + ".spectrum-Modal-wrapper", + ".spectrum-Modal-wrapper .spectrum-Modal--responsive", + ".spectrum-Modal-wrapper.is-open", + ".spectrum-Modal.is-open" + ], + "mods": [ + "--mod-modal-background-color", + "--mod-modal-confirm-border-radius", + "--mod-modal-confirm-entry-animation-delay", + "--mod-modal-confirm-entry-animation-distance", + "--mod-modal-confirm-entry-animation-duration", + "--mod-modal-confirm-exit-animation-delay", + "--mod-modal-confirm-exit-animation-duration", + "--mod-modal-fullscreen-margin", + "--mod-modal-max-height", + "--mod-modal-max-width", + "--mod-modal-transition-animation-duration", + "--mod-overlay-animation-duration", + "--mod-overlay-animation-duration-opened" + ], + "spectrum": [ + "--spectrum-animation-duration-0", + "--spectrum-animation-duration-100", + "--spectrum-animation-duration-200", + "--spectrum-animation-duration-500", + "--spectrum-animation-ease-in", + "--spectrum-animation-ease-out", + "--spectrum-corner-radius-100", + "--spectrum-gray-100", + "--spectrum-modal-background-color", + "--spectrum-modal-confirm-border-radius", + "--spectrum-modal-confirm-entry-animation-delay", + "--spectrum-modal-confirm-entry-animation-distance", + "--spectrum-modal-confirm-entry-animation-duration", + "--spectrum-modal-confirm-exit-animation-delay", + "--spectrum-modal-confirm-exit-animation-duration", + "--spectrum-modal-fullscreen-margin", + "--spectrum-modal-max-height", + "--spectrum-modal-max-width", + "--spectrum-modal-transition-animation-duration" + ], + "system": [], + "a11y": [] +} diff --git a/components/modal/package.json b/components/modal/package.json new file mode 100644 index 0000000000..a590b69322 --- /dev/null +++ b/components/modal/package.json @@ -0,0 +1,40 @@ +{ + "name": "@spectrum-css/modal", + "version": "5.1.1", + "description": "The Spectrum CSS modal component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/modal", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/modal" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/commons": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/modal/template.js b/components/modal/template.js new file mode 100644 index 0000000000..df39a02d29 --- /dev/null +++ b/components/modal/template.js @@ -0,0 +1,37 @@ +import { Variants, renderContent } from "@spectrum-css/preview/decorators/utilities.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Modal", + customClasses = [], + customStyles = {}, + isOpen = true, + variant, + content = [], + skipWrapper = false, +} = {}, context = {}) => { + const Modal = html` +
    ({ ...a, [c]: true }), {}), + })} style=${styleMap(customStyles)}> + ${renderContent(content, { context })} +
    + `; + + return html` + ${when(skipWrapper, + () => Modal, + () => html`
    ${Modal}
    ` + )} + `; +}; + +export const ModalGroup = Variants({ Template }); diff --git a/components/opacitycheckerboard/index-base.css b/components/opacitycheckerboard/index-base.css new file mode 100644 index 0000000000..ae7a2afbc4 --- /dev/null +++ b/components/opacitycheckerboard/index-base.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-OpacityCheckerboard { + --spectrum-opacity-checkerboard-dark: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-opacity-checkerboard-light: var(--spectrum-opacity-checkerboard-square-light); + --spectrum-opacity-checkerboard-size: var(--spectrum-opacity-checkerboard-square-size); + --spectrum-opacity-checkerboard-position: left top; + background: repeating-conic-gradient(var(--mod-opacity-checkerboard-light, var(--spectrum-opacity-checkerboard-light)) 0 25%, var(--mod-opacity-checkerboard-dark, var(--spectrum-opacity-checkerboard-dark)) 0 50%) var(--mod-opacity-checkerboard-position, var(--spectrum-opacity-checkerboard-position)) / calc(var(--mod-opacity-checkerboard-size, var(--spectrum-opacity-checkerboard-size)) * 2) calc(var(--mod-opacity-checkerboard-size, var(--spectrum-opacity-checkerboard-size)) * 2); +} +@media (forced-colors: active) { + .spectrum-OpacityCheckerboard { + forced-color-adjust: none; + } +} +/*# sourceMappingURL=components/opacitycheckerboard/index.css.map */ diff --git a/components/opacitycheckerboard/index-vars.css b/components/opacitycheckerboard/index-vars.css new file mode 100644 index 0000000000..ae7a2afbc4 --- /dev/null +++ b/components/opacitycheckerboard/index-vars.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-OpacityCheckerboard { + --spectrum-opacity-checkerboard-dark: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-opacity-checkerboard-light: var(--spectrum-opacity-checkerboard-square-light); + --spectrum-opacity-checkerboard-size: var(--spectrum-opacity-checkerboard-square-size); + --spectrum-opacity-checkerboard-position: left top; + background: repeating-conic-gradient(var(--mod-opacity-checkerboard-light, var(--spectrum-opacity-checkerboard-light)) 0 25%, var(--mod-opacity-checkerboard-dark, var(--spectrum-opacity-checkerboard-dark)) 0 50%) var(--mod-opacity-checkerboard-position, var(--spectrum-opacity-checkerboard-position)) / calc(var(--mod-opacity-checkerboard-size, var(--spectrum-opacity-checkerboard-size)) * 2) calc(var(--mod-opacity-checkerboard-size, var(--spectrum-opacity-checkerboard-size)) * 2); +} +@media (forced-colors: active) { + .spectrum-OpacityCheckerboard { + forced-color-adjust: none; + } +} +/*# sourceMappingURL=components/opacitycheckerboard/index.css.map */ diff --git a/components/opacitycheckerboard/index.css b/components/opacitycheckerboard/index.css new file mode 100644 index 0000000000..ae7a2afbc4 --- /dev/null +++ b/components/opacitycheckerboard/index.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-OpacityCheckerboard { + --spectrum-opacity-checkerboard-dark: var(--spectrum-opacity-checkerboard-square-dark); + --spectrum-opacity-checkerboard-light: var(--spectrum-opacity-checkerboard-square-light); + --spectrum-opacity-checkerboard-size: var(--spectrum-opacity-checkerboard-square-size); + --spectrum-opacity-checkerboard-position: left top; + background: repeating-conic-gradient(var(--mod-opacity-checkerboard-light, var(--spectrum-opacity-checkerboard-light)) 0 25%, var(--mod-opacity-checkerboard-dark, var(--spectrum-opacity-checkerboard-dark)) 0 50%) var(--mod-opacity-checkerboard-position, var(--spectrum-opacity-checkerboard-position)) / calc(var(--mod-opacity-checkerboard-size, var(--spectrum-opacity-checkerboard-size)) * 2) calc(var(--mod-opacity-checkerboard-size, var(--spectrum-opacity-checkerboard-size)) * 2); +} +@media (forced-colors: active) { + .spectrum-OpacityCheckerboard { + forced-color-adjust: none; + } +} +/*# sourceMappingURL=components/opacitycheckerboard/index.css.map */ diff --git a/components/opacitycheckerboard/metadata.json b/components/opacitycheckerboard/metadata.json new file mode 100644 index 0000000000..64a06a7257 --- /dev/null +++ b/components/opacitycheckerboard/metadata.json @@ -0,0 +1,20 @@ +{ + "selectors": [".spectrum-OpacityCheckerboard"], + "mods": [ + "--mod-opacity-checkerboard-dark", + "--mod-opacity-checkerboard-light", + "--mod-opacity-checkerboard-position", + "--mod-opacity-checkerboard-size" + ], + "spectrum": [ + "--spectrum-opacity-checkerboard-dark", + "--spectrum-opacity-checkerboard-light", + "--spectrum-opacity-checkerboard-position", + "--spectrum-opacity-checkerboard-size", + "--spectrum-opacity-checkerboard-square-dark", + "--spectrum-opacity-checkerboard-square-light", + "--spectrum-opacity-checkerboard-square-size" + ], + "system": [], + "a11y": [] +} diff --git a/components/opacitycheckerboard/package.json b/components/opacitycheckerboard/package.json new file mode 100644 index 0000000000..95067f8b99 --- /dev/null +++ b/components/opacitycheckerboard/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/opacitycheckerboard", + "version": "2.1.1", + "description": "The Spectrum CSS opacitycheckerboard component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/opacitycheckerboard" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/opacitycheckerboard/template.js b/components/opacitycheckerboard/template.js new file mode 100644 index 0000000000..0d6692e9da --- /dev/null +++ b/components/opacitycheckerboard/template.js @@ -0,0 +1,30 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-OpacityCheckerboard", + backgroundPosition, + customClasses = [], + customStyles = {}, + id, + content = [], + role, +}) => html` +
    ({ ...a, [c]: true }), {}), + })} + style=${ifDefined(styleMap({ + "--mod-opacity-checkerboard-position": backgroundPosition, + ...customStyles, + }))} + role=${ifDefined(role)} + id=${ifDefined(id)} + > + ${content} +
    `; diff --git a/components/page/index-base.css b/components/page/index-base.css new file mode 100644 index 0000000000..d2bb256fbe --- /dev/null +++ b/components/page/index-base.css @@ -0,0 +1,18 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:root { + background-color: var(--spectrum-gray-100); + -webkit-tap-highlight-color: var(--spectrum-transparent-black-100); +} +/*# sourceMappingURL=components/page/index.css.map */ diff --git a/components/page/index-vars.css b/components/page/index-vars.css new file mode 100644 index 0000000000..d2bb256fbe --- /dev/null +++ b/components/page/index-vars.css @@ -0,0 +1,18 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:root { + background-color: var(--spectrum-gray-100); + -webkit-tap-highlight-color: var(--spectrum-transparent-black-100); +} +/*# sourceMappingURL=components/page/index.css.map */ diff --git a/components/page/index.css b/components/page/index.css new file mode 100644 index 0000000000..d2bb256fbe --- /dev/null +++ b/components/page/index.css @@ -0,0 +1,18 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:root { + background-color: var(--spectrum-gray-100); + -webkit-tap-highlight-color: var(--spectrum-transparent-black-100); +} +/*# sourceMappingURL=components/page/index.css.map */ diff --git a/components/page/metadata.json b/components/page/metadata.json new file mode 100644 index 0000000000..029f31df82 --- /dev/null +++ b/components/page/metadata.json @@ -0,0 +1,7 @@ +{ + "selectors": [":root"], + "mods": [], + "spectrum": ["--spectrum-gray-100", "--spectrum-transparent-black-100"], + "system": [], + "a11y": [] +} diff --git a/components/page/package.json b/components/page/package.json new file mode 100644 index 0000000000..a2b4262b94 --- /dev/null +++ b/components/page/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/page", + "version": "8.1.1", + "description": "The Spectrum CSS page component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/page", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/page" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/pagination/index-base.css b/components/pagination/index-base.css new file mode 100644 index 0000000000..3509ceb3f3 --- /dev/null +++ b/components/pagination/index-base.css @@ -0,0 +1,53 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Pagination { + --spectrum-pagination-counter-margin-inline-start: var(--spectrum-pagination-item-inline-spacing); + --spectrum-pagination-page-button-inline-spacing: var(--spectrum-pagination-item-inline-spacing); + --spectrum-pagination-counter-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-pagination-counter-font-size: var(--spectrum-font-size-100); + --spectrum-pagination-counter-line-height: var(--spectrum-line-height-100); +} +.spectrum-Pagination:dir(rtl), +[dir="rtl"] .spectrum-Pagination { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Pagination--explicit, +.spectrum-Pagination--listing { + display: flex; + flex-direction: row; + align-items: center; +} +.spectrum-Pagination-textfield { + --mod-textfield-width: var(--mod-pagination-textfield-width, var(--spectrum-pagination-textfield-width)); + --mod-textfield-min-width: var(--mod-pagination-textfield-width, var(--spectrum-pagination-textfield-width)); +} +.spectrum-Pagination-counter { + font-size: var(--mod-pagination-counter-font-size, var(--spectrum-pagination-counter-font-size)); + line-height: var(--mod-pagination-counter-line-height, var(--spectrum-pagination-counter-line-height)); + margin-inline-start: var(--mod-pagination-counter-margin-inline-start, var(--spectrum-pagination-counter-margin-inline-start)); + color: var(--mod-pagination-counter-color, var(--spectrum-pagination-counter-color)); +} +.spectrum-Pagination-prevButton { + margin-inline-end: var(--mod-pagination-page-button-inline-spacing, var(--spectrum-pagination-page-button-inline-spacing)); +} +.spectrum-Pagination-nextButton { + margin-inline-start: var(--mod-pagination-page-button-inline-spacing, var(--spectrum-pagination-page-button-inline-spacing)); +} +.spectrum-Pagination-prevButton .spectrum-Icon { + transform: var(--spectrum-logical-rotation,) rotate(180deg); +} +.spectrum-Pagination-nextButton .spectrum-Icon { + transform: var(--spectrum-logical-rotation); +} +/*# sourceMappingURL=components/pagination/index.css.map */ diff --git a/components/pagination/index-vars.css b/components/pagination/index-vars.css new file mode 100644 index 0000000000..3509ceb3f3 --- /dev/null +++ b/components/pagination/index-vars.css @@ -0,0 +1,53 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Pagination { + --spectrum-pagination-counter-margin-inline-start: var(--spectrum-pagination-item-inline-spacing); + --spectrum-pagination-page-button-inline-spacing: var(--spectrum-pagination-item-inline-spacing); + --spectrum-pagination-counter-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-pagination-counter-font-size: var(--spectrum-font-size-100); + --spectrum-pagination-counter-line-height: var(--spectrum-line-height-100); +} +.spectrum-Pagination:dir(rtl), +[dir="rtl"] .spectrum-Pagination { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Pagination--explicit, +.spectrum-Pagination--listing { + display: flex; + flex-direction: row; + align-items: center; +} +.spectrum-Pagination-textfield { + --mod-textfield-width: var(--mod-pagination-textfield-width, var(--spectrum-pagination-textfield-width)); + --mod-textfield-min-width: var(--mod-pagination-textfield-width, var(--spectrum-pagination-textfield-width)); +} +.spectrum-Pagination-counter { + font-size: var(--mod-pagination-counter-font-size, var(--spectrum-pagination-counter-font-size)); + line-height: var(--mod-pagination-counter-line-height, var(--spectrum-pagination-counter-line-height)); + margin-inline-start: var(--mod-pagination-counter-margin-inline-start, var(--spectrum-pagination-counter-margin-inline-start)); + color: var(--mod-pagination-counter-color, var(--spectrum-pagination-counter-color)); +} +.spectrum-Pagination-prevButton { + margin-inline-end: var(--mod-pagination-page-button-inline-spacing, var(--spectrum-pagination-page-button-inline-spacing)); +} +.spectrum-Pagination-nextButton { + margin-inline-start: var(--mod-pagination-page-button-inline-spacing, var(--spectrum-pagination-page-button-inline-spacing)); +} +.spectrum-Pagination-prevButton .spectrum-Icon { + transform: var(--spectrum-logical-rotation,) rotate(180deg); +} +.spectrum-Pagination-nextButton .spectrum-Icon { + transform: var(--spectrum-logical-rotation); +} +/*# sourceMappingURL=components/pagination/index.css.map */ diff --git a/components/pagination/index.css b/components/pagination/index.css new file mode 100644 index 0000000000..3509ceb3f3 --- /dev/null +++ b/components/pagination/index.css @@ -0,0 +1,53 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Pagination { + --spectrum-pagination-counter-margin-inline-start: var(--spectrum-pagination-item-inline-spacing); + --spectrum-pagination-page-button-inline-spacing: var(--spectrum-pagination-item-inline-spacing); + --spectrum-pagination-counter-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-pagination-counter-font-size: var(--spectrum-font-size-100); + --spectrum-pagination-counter-line-height: var(--spectrum-line-height-100); +} +.spectrum-Pagination:dir(rtl), +[dir="rtl"] .spectrum-Pagination { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Pagination--explicit, +.spectrum-Pagination--listing { + display: flex; + flex-direction: row; + align-items: center; +} +.spectrum-Pagination-textfield { + --mod-textfield-width: var(--mod-pagination-textfield-width, var(--spectrum-pagination-textfield-width)); + --mod-textfield-min-width: var(--mod-pagination-textfield-width, var(--spectrum-pagination-textfield-width)); +} +.spectrum-Pagination-counter { + font-size: var(--mod-pagination-counter-font-size, var(--spectrum-pagination-counter-font-size)); + line-height: var(--mod-pagination-counter-line-height, var(--spectrum-pagination-counter-line-height)); + margin-inline-start: var(--mod-pagination-counter-margin-inline-start, var(--spectrum-pagination-counter-margin-inline-start)); + color: var(--mod-pagination-counter-color, var(--spectrum-pagination-counter-color)); +} +.spectrum-Pagination-prevButton { + margin-inline-end: var(--mod-pagination-page-button-inline-spacing, var(--spectrum-pagination-page-button-inline-spacing)); +} +.spectrum-Pagination-nextButton { + margin-inline-start: var(--mod-pagination-page-button-inline-spacing, var(--spectrum-pagination-page-button-inline-spacing)); +} +.spectrum-Pagination-prevButton .spectrum-Icon { + transform: var(--spectrum-logical-rotation,) rotate(180deg); +} +.spectrum-Pagination-nextButton .spectrum-Icon { + transform: var(--spectrum-logical-rotation); +} +/*# sourceMappingURL=components/pagination/index.css.map */ diff --git a/components/pagination/metadata.json b/components/pagination/metadata.json new file mode 100644 index 0000000000..42beaff058 --- /dev/null +++ b/components/pagination/metadata.json @@ -0,0 +1,36 @@ +{ + "selectors": [ + ".spectrum-Pagination", + ".spectrum-Pagination--explicit,\n.spectrum-Pagination--listing", + ".spectrum-Pagination-counter", + ".spectrum-Pagination-nextButton", + ".spectrum-Pagination-nextButton .spectrum-Icon", + ".spectrum-Pagination-prevButton", + ".spectrum-Pagination-prevButton .spectrum-Icon", + ".spectrum-Pagination-textfield", + ".spectrum-Pagination:dir(rtl),\n[dir=\"rtl\"] .spectrum-Pagination" + ], + "mods": [ + "--mod-pagination-counter-color", + "--mod-pagination-counter-font-size", + "--mod-pagination-counter-line-height", + "--mod-pagination-counter-margin-inline-start", + "--mod-pagination-page-button-inline-spacing", + "--mod-pagination-textfield-width" + ], + "spectrum": [ + "--spectrum-font-size-100", + "--spectrum-line-height-100", + "--spectrum-logical-rotation", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-pagination-counter-color", + "--spectrum-pagination-counter-font-size", + "--spectrum-pagination-counter-line-height", + "--spectrum-pagination-counter-margin-inline-start", + "--spectrum-pagination-item-inline-spacing", + "--spectrum-pagination-page-button-inline-spacing", + "--spectrum-pagination-textfield-width" + ], + "system": [], + "a11y": [] +} diff --git a/components/pagination/package.json b/components/pagination/package.json new file mode 100644 index 0000000000..903ddb6203 --- /dev/null +++ b/components/pagination/package.json @@ -0,0 +1,49 @@ +{ + "name": "@spectrum-css/pagination", + "version": "8.1.1", + "description": "The Spectrum CSS Pagination component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/pagination", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/pagination" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/button": ">=13", + "@spectrum-css/icon": ">=7", + "@spectrum-css/splitbutton": ">=8", + "@spectrum-css/textfield": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/button": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/splitbutton": "^8.1.2", + "@spectrum-css/textfield": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/pagination/template.js b/components/pagination/template.js new file mode 100644 index 0000000000..dbd8a251c7 --- /dev/null +++ b/components/pagination/template.js @@ -0,0 +1,127 @@ +import { Template as ActionButton } from "@spectrum-css/actionbutton/stories/template.js"; +import { Template as Button } from "@spectrum-css/button/stories/template.js"; +import { Default as SplitButton } from "@spectrum-css/preview/deprecated/splitbutton/splitbutton.stories.js"; +import { Template as Textfield } from "@spectrum-css/textfield/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { repeat } from "lit/directives/repeat.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Pagination", + size = "m", + customClasses = [], + variant, + items, +} = {}, context = {}) => { + if (variant === "explicit") { + return html` + + `; + } + else if (variant == "button") { + return SplitButton({ + position: "left", + variant: "accent", + label: "Next", + iconName: "ChevronLeft100", + labelIconName: "ChevronRight100", + customFirstButtonClasses: ["spectrum-Pagination-prevButton"], + customLastButtonClasses: ["spectrum-Pagination-nextButton"] + }, context); + } + return html` + + `; +}; + +export const PaginationGroup = (args, context) => { + return html` +
    + ${Template(args, context)} +
    +
    + ${Template(args, context)} + ${Template({ + ...args, + variant: "explicit", + }, context)} + ${Template({ + ...args, + variant: "button", + }, context)} +
    + `; +}; diff --git a/components/picker/index-base.css b/components/picker/index-base.css new file mode 100644 index 0000000000..7c61e6f9dc --- /dev/null +++ b/components/picker/index-base.css @@ -0,0 +1,426 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Picker { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + position: relative; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-Picker::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-Picker:focus { + outline: none; +} +.spectrum-Picker { + --spectrum-picker-font-size: var(--spectrum-font-size-100); + --spectrum-picker-font-weight: var(--spectrum-regular-font-weight); + --spectrum-picker-placeholder-font-style: var(--spectrum-default-font-style); + --spectrum-picker-line-height: var(--spectrum-line-height-100); + --spectrum-picker-block-size: var(--spectrum-component-height-100); + --spectrum-picker-inline-size: var(--spectrum-field-width); + --spectrum-picker-border-radius: var(--spectrum-corner-radius-100); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-picker-spacing-edge-to-text-quiet: var(--spectrum-field-edge-to-text-quiet); + --spectrum-picker-spacing-label-to-picker: var(--spectrum-field-label-to-component); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-medium); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-100); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-100); + --spectrum-picker-spacing-edge-to-disclosure-icon-quiet: var(--spectrum-picker-end-edge-to-disclousure-icon-quiet); + --spectrum-picker-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-picker-font-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-picker-font-color-default-open: var(--spectrum-neutral-content-color-focus); + --spectrum-picker-font-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-font-color-hover-open: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-picker-font-color-active: var(--spectrum-neutral-content-color-down); + --spectrum-picker-font-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-picker-icon-color-default-open: var(--spectrum-neutral-content-color-focus); + --spectrum-picker-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-icon-color-hover-open: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-picker-icon-color-active: var(--spectrum-neutral-content-color-down); + --spectrum-picker-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-border-color-error-default: var(--spectrum-negative-border-color-default); + --spectrum-picker-border-color-error-default-open: var(--spectrum-negative-border-color-focus); + --spectrum-picker-border-color-error-hover: var(--spectrum-negative-border-color-hover); + --spectrum-picker-border-color-error-hover-open: var(--spectrum-negative-border-color-focus-hover); + --spectrum-picker-border-color-error-active: var(--spectrum-negative-border-color-down); + --spectrum-picker-border-color-error-key-focus: var(--spectrum-negative-border-color-key-focus); + --spectrum-picker-icon-color-error: var(--spectrum-negative-visual-color); + --spectrum-picker-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-picker-font-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-picker-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-picker-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-picker-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-picker-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +.spectrum-Picker + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-medium); +} +.spectrum-Picker--sizeS { + --spectrum-picker-font-size: var(--spectrum-font-size-75); + --spectrum-picker-block-size: var(--spectrum-component-height-75); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-75); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-small); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-small); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-small); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-small); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-75); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-75); +} +.spectrum-Picker--sizeS + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-small); +} +.spectrum-Picker--sizeL { + --spectrum-picker-font-size: var(--spectrum-font-size-200); + --spectrum-picker-block-size: var(--spectrum-component-height-200); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-200); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-large); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-large); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-large); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-large); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-200); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-200); +} +.spectrum-Picker--sizeL + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-large); +} +.spectrum-Picker--sizeXL { + --spectrum-picker-font-size: var(--spectrum-font-size-300); + --spectrum-picker-block-size: var(--spectrum-component-height-300); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-300); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-extra-large); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-extra-large); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-extra-large); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-extra-large); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-300); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-300); +} +.spectrum-Picker--sizeXL + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-extra-large); +} +@media (forced-colors: active) { + .spectrum-Picker { + --highcontrast-picker-focus-indicator-color: Highlight; + --highcontrast-picker-border-color-default: ButtonBorder; + --highcontrast-picker-border-color-hover: Highlight; + --highcontrast-picker-border-color-disabled: GrayText; + --highcontrast-picker-content-color-default: ButtonText; + --highcontrast-picker-content-color-disabled: GrayText; + --highcontrast-picker-background-color: ButtonFace; + } + .spectrum-Picker.is-keyboardFocused, + .spectrum-Picker:focus-visible { + --highcontrast-picker-border-color-hover: ButtonText; + } + .spectrum-Picker .spectrum-Picker-label, + .spectrum-Picker:after { + forced-color-adjust: none; + } +} +.spectrum-Picker { + display: flex; + box-sizing: border-box; + max-inline-size: 100%; + min-inline-size: calc(var(--spectrum-picker-minimum-width-multiplier) * var(--mod-picker-block-size, var(--spectrum-picker-block-size))); + inline-size: var(--mod-picker-inline-size, var(--spectrum-picker-inline-size)); + block-size: var(--mod-picker-block-size, var(--spectrum-picker-block-size)); + padding-block: 0; + margin-block-start: var(--mod-picker-spacing-label-to-picker, var(--spectrum-picker-spacing-label-to-picker)); + padding-inline-start: var(--mod-picker-spacing-edge-to-text, var(--spectrum-picker-spacing-edge-to-text)); + padding-inline-end: var(--mod-picker-spacing-edge-to-disclosure-icon, var(--spectrum-picker-spacing-edge-to-disclosure-icon)); + border-width: var(--mod-picker-border-width, var(--spectrum-picker-border-width)); + border-style: solid; + border-radius: var(--mod-picker-border-radius, var(--spectrum-picker-border-radius)); + transition: + background-color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)), + box-shadow var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)), + border-color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-in-out; + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-default, var(--spectrum-picker-background-color-default))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-default, var(--spectrum-picker-border-color-default))); +} +.spectrum-Picker:after { + pointer-events: none; + content: ""; + position: absolute; + block-size: calc(100% + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) * 2 + var(--mod-picker-border-width, var(--spectrum-picker-border-width)) * 2); + inline-size: calc(100% + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) * 2 + var(--mod-picker-border-width, var(--spectrum-picker-border-width)) * 2); + margin-block-start: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1); + margin-inline-start: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1); + inset-inline: 0; + inset-block: 0; + border-style: solid; + border-width: var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)); + border-color: transparent; + border-radius: calc(var(--mod-picker-border-radius, var(--spectrum-picker-border-radius)) + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker:active { + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-active, var(--spectrum-picker-background-color-active))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-active, var(--spectrum-picker-border-color-active))); +} +.spectrum-Picker:active:after { + border-color: transparent; +} +.spectrum-Picker.is-placeholder:active .spectrum-Picker-label { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-active, var(--spectrum-picker-font-color-active))); +} +.spectrum-Picker.is-keyboardFocused, +.spectrum-Picker:focus-visible { + outline: none; + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-key-focus, var(--spectrum-picker-background-color-key-focus))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-key-focus, var(--spectrum-picker-border-color-key-focus))); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-key-focus, var(--spectrum-picker-font-color-key-focus))); +} +.spectrum-Picker.is-keyboardFocused:after, +.spectrum-Picker:focus-visible:after { + border-color: var(--highcontrast-picker-focus-indicator-color, var(--mod-picker-focus-indicator-color, var(--spectrum-picker-focus-indicator-color))); +} +.spectrum-Picker.is-keyboardFocused.is-placeholder, +.spectrum-Picker.is-placeholder:focus-visible { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-key-focus, var(--spectrum-picker-font-color-key-focus))); +} +.spectrum-Picker.is-keyboardFocused .spectrum-Picker-menuIcon, +.spectrum-Picker:focus-visible .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-key-focus, var(--spectrum-picker-icon-color-key-focus))); +} +.spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled) { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default-open, var(--spectrum-picker-font-color-default-open))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-default-open, var(--spectrum-picker-background-color-default-open))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-default-open, var(--spectrum-picker-border-color-default-open))); +} +.spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled) .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-default-open, var(--spectrum-picker-icon-color-default-open))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled) { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-default, var(--spectrum-picker-border-color-error-default))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled) .spectrum-Picker-validationIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-error, var(--spectrum-picker-icon-color-error))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled):active { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-active, var(--spectrum-picker-border-color-error-active))); +} +.spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled) { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-default-open, var(--spectrum-picker-border-color-error-default-open))); +} +.spectrum-Picker.is-invalid.is-keyboardFocused:not(:disabled, .is-disabled), +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled):focus-visible { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-key-focus, var(--spectrum-picker-border-color-error-key-focus))); +} +.spectrum-Picker.is-loading .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-icon-color-disabled, var(--spectrum-picker-icon-color-disabled))); +} +.spectrum-Picker.is-invalid .spectrum-Picker-label, +.spectrum-Picker.is-loading .spectrum-Picker-label { + margin-inline-end: var(--mod-picker-spacing-text-to-icon-inline-end, var(--mod-picker-spacing-text-to-alert-icon-inline-start, var(--spectrum-picker-spacing-text-to-icon-inline-end))); +} +.spectrum-Picker .spectrum-Picker-icon { + flex-shrink: 0; + margin-inline-end: var(--mod-picker-spacing-text-to-icon, var(--spectrum-picker-spacing-text-to-icon)); +} +.spectrum-Picker-label { + flex: 1 1 auto; + white-space: nowrap; + overflow: hidden; + font-size: var(--mod-picker-font-size, var(--spectrum-picker-font-size)); + line-height: var(--mod-picker-line-height, var(--spectrum-picker-line-height)); + font-weight: var(--mod-picker-font-weight, var(--spectrum-picker-font-weight)); + text-overflow: ellipsis; + text-align: start; + padding-block-start: var(--mod-picker-spacing-top-to-text, var(--spectrum-picker-spacing-top-to-text)); + padding-block-end: calc(var(--mod-picker-spacing-bottom-to-text, var(--spectrum-picker-spacing-bottom-to-text)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker-label.is-placeholder { + font-weight: var(--mod-picker-placeholder-font-weight, var(--spectrum-picker-font-weight)); + font-style: var(--mod-picker-placeholder-font-style, var(--spectrum-picker-placeholder-font-style)); + transition: color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-in-out; + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); +} +.spectrum-Picker-label.is-placeholder:active { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-active, var(--spectrum-picker-font-color-active))); +} +.spectrum-Picker-menuIcon { + display: inline-block; + position: relative; + vertical-align: top; + transition: color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-out; + flex-shrink: 0; + margin-inline-start: var(--mod-picker-spacing-icon-to-disclosure-icon, var(--spectrum-picker-spacing-icon-to-disclosure-icon)); + margin-block: var(--mod-picker-spacing-top-to-disclosure-icon, var(--spectrum-picker-spacing-top-to-disclosure-icon)); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-default, var(--spectrum-picker-icon-color-default))); +} +.spectrum-Picker-menuIcon:active { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-active, var(--spectrum-picker-icon-color-active))); +} +.spectrum-Picker-validationIcon { + margin-block-start: calc(var(--mod-picker-spacing-top-to-alert-icon, var(--spectrum-picker-spacing-top-to-alert-icon)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); + margin-block-end: calc(var(--mod-picker-spacing-top-to-alert-icon, var(--spectrum-picker-spacing-top-to-alert-icon)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker .spectrum-ProgressCircle { + margin-block-start: calc(var(--mod-picker-spacing-top-to-progress-circle, var(--spectrum-picker-spacing-top-to-progress-circle)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); + margin-block-end: calc(var(--mod-picker-spacing-top-to-progress-circle, var(--spectrum-picker-spacing-top-to-progress-circle)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker-label ~ .spectrum-Picker-menuIcon { + margin-inline-start: var(--mod-picker-spacing-text-to-icon, var(--spectrum-picker-spacing-text-to-icon)); +} +.spectrum-Picker + .spectrum-Popover--bottom.is-open { + transform: translateY(var(--mod-picker-spacing-picker-to-popover, var(--spectrum-picker-spacing-picker-to-popover))); +} +.spectrum-Picker--quiet { + inline-size: auto; + min-inline-size: 0; + border: none; + border-radius: 0; + padding-inline: var(--mod-picker-spacing-edge-to-text-quiet, var(--spectrum-picker-spacing-edge-to-text-quiet)); + margin-block-start: calc(var(--mod-picker-spacing-label-to-picker-quiet, var(--spectrum-picker-spacing-label-to-picker-quiet)) + 1px); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--quiet.spectrum-Picker--sideLabel { + margin-block-start: 0; +} +.spectrum-Picker--quiet .spectrum-Picker-menuIcon { + margin-inline-end: var(--mod-picker-spacing-edge-to-disclosure-icon-quiet, var(--spectrum-picker-spacing-edge-to-disclosure-icon-quiet)); +} +.spectrum-Picker--quiet:after { + border: none; + block-size: auto; + inline-size: auto; +} +@media (hover: hover) { + .spectrum-Picker:hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover, var(--spectrum-picker-font-color-hover))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-hover, var(--spectrum-picker-background-color-hover))); + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-hover, var(--spectrum-picker-border-color-hover))); + } + .spectrum-Picker:hover .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-hover, var(--spectrum-picker-icon-color-hover))); + } + .spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover-open, var(--spectrum-picker-font-color-hover-open))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-hover-open, var(--spectrum-picker-background-color-hover-open))); + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-hover-open, var(--spectrum-picker-border-color-hover-open))); + } + .spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-hover-open, var(--spectrum-picker-icon-color-hover-open))); + } + .spectrum-Picker.is-invalid:not(:disabled, .is-disabled):hover { + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-error-hover, var(--spectrum-picker-border-color-error-hover))); + } + .spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled):hover { + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-error-hover-open, var(--spectrum-picker-border-color-error-hover-open))); + } + .spectrum-Picker-label.is-placeholder:hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover, var(--spectrum-picker-font-color-hover))); + } + .spectrum-Picker--quiet:hover { + background-color: var(--highcontrast-picker-background-color, transparent); + } +} +.spectrum-Picker--quiet.is-keyboardFocused, +.spectrum-Picker--quiet:focus-visible { + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--quiet.is-keyboardFocused:after, +.spectrum-Picker--quiet:focus-visible:after { + border: none; + border-radius: 0; + box-shadow: 0 var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) 0 0 var(--highcontrast-picker-focus-indicator-color, var(--mod-picker-focus-indicator-color, var(--spectrum-picker-focus-indicator-color))); + margin: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1) 0; +} +.spectrum-Picker--quiet.is-open, +.spectrum-Picker--quiet.spectrum-Picker.is-disabled, +.spectrum-Picker--quiet.spectrum-Picker:disabled, +.spectrum-Picker--quiet:active { + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--sideLabel { + display: inline-flex; + vertical-align: top; +} +.spectrum-Picker.is-disabled, +.spectrum-Picker:disabled { + cursor: default; + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-disabled, var(--spectrum-picker-background-color-disabled))); + border-color: var(--highcontrast-picker-border-color-disabled, transparent); + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-font-color-disabled, var(--spectrum-picker-font-color-disabled))); +} +.spectrum-Picker.is-disabled .spectrum-Picker-icon, +.spectrum-Picker.is-disabled .spectrum-Picker-menuIcon, +.spectrum-Picker.is-disabled .spectrum-Picker-validationIcon, +.spectrum-Picker:disabled .spectrum-Picker-icon, +.spectrum-Picker:disabled .spectrum-Picker-menuIcon, +.spectrum-Picker:disabled .spectrum-Picker-validationIcon { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-icon-color-disabled, var(--spectrum-picker-icon-color-disabled))); +} +.spectrum-Picker.is-disabled .spectrum-Picker-label.is-placeholder, +.spectrum-Picker:disabled .spectrum-Picker-label.is-placeholder { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-font-color-disabled, var(--spectrum-picker-font-color-disabled))); +} +.spectrum-Picker { + --spectrum-picker-background-color-default: var(--system-spectrum-picker-background-color-default); + --spectrum-picker-background-color-default-open: var(--system-spectrum-picker-background-color-default-open); + --spectrum-picker-background-color-active: var(--system-spectrum-picker-background-color-active); + --spectrum-picker-background-color-hover: var(--system-spectrum-picker-background-color-hover); + --spectrum-picker-background-color-hover-open: var(--system-spectrum-picker-background-color-hover-open); + --spectrum-picker-background-color-key-focus: var(--system-spectrum-picker-background-color-key-focus); + --spectrum-picker-border-color-default: var(--system-spectrum-picker-border-color-default); + --spectrum-picker-border-color-default-open: var(--system-spectrum-picker-border-color-default-open); + --spectrum-picker-border-color-hover: var(--system-spectrum-picker-border-color-hover); + --spectrum-picker-border-color-hover-open: var(--system-spectrum-picker-border-color-hover-open); + --spectrum-picker-border-color-active: var(--system-spectrum-picker-border-color-active); + --spectrum-picker-border-color-key-focus: var(--system-spectrum-picker-border-color-key-focus); + --spectrum-picker-border-width: var(--system-spectrum-picker-border-width); +} +/*# sourceMappingURL=components/picker/index.css.map */ diff --git a/components/picker/index-theme.css b/components/picker/index-theme.css new file mode 100644 index 0000000000..4d3d7bb648 --- /dev/null +++ b/components/picker/index-theme.css @@ -0,0 +1,44 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-75); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-picker-border-color-default: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-default-open: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-hover-open: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-active: var(--spectrum-gray-700); + --system-spectrum-picker-border-color-key-focus: var(--spectrum-gray-600); + --system-spectrum-picker-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-400); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-picker-border-color-default: transparent; + --system-spectrum-picker-border-color-default-open: transparent; + --system-spectrum-picker-border-color-hover: transparent; + --system-spectrum-picker-border-color-hover-open: transparent; + --system-spectrum-picker-border-color-active: transparent; + --system-spectrum-picker-border-color-key-focus: transparent; + --system-spectrum-picker-border-width: 0px; +} +/*# sourceMappingURL=components/picker/themes/express.css.map */ diff --git a/components/picker/index-vars.css b/components/picker/index-vars.css new file mode 100644 index 0000000000..3545e8d36b --- /dev/null +++ b/components/picker/index-vars.css @@ -0,0 +1,456 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-75); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-picker-border-color-default: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-default-open: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-hover-open: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-active: var(--spectrum-gray-700); + --system-spectrum-picker-border-color-key-focus: var(--spectrum-gray-600); + --system-spectrum-picker-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-400); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-picker-border-color-default: transparent; + --system-spectrum-picker-border-color-default-open: transparent; + --system-spectrum-picker-border-color-hover: transparent; + --system-spectrum-picker-border-color-hover-open: transparent; + --system-spectrum-picker-border-color-active: transparent; + --system-spectrum-picker-border-color-key-focus: transparent; + --system-spectrum-picker-border-width: 0px; +} +.spectrum-Picker { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + position: relative; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-Picker::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-Picker:focus { + outline: none; +} +.spectrum-Picker { + --spectrum-picker-font-size: var(--spectrum-font-size-100); + --spectrum-picker-font-weight: var(--spectrum-regular-font-weight); + --spectrum-picker-placeholder-font-style: var(--spectrum-default-font-style); + --spectrum-picker-line-height: var(--spectrum-line-height-100); + --spectrum-picker-block-size: var(--spectrum-component-height-100); + --spectrum-picker-inline-size: var(--spectrum-field-width); + --spectrum-picker-border-radius: var(--spectrum-corner-radius-100); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-picker-spacing-edge-to-text-quiet: var(--spectrum-field-edge-to-text-quiet); + --spectrum-picker-spacing-label-to-picker: var(--spectrum-field-label-to-component); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-medium); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-100); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-100); + --spectrum-picker-spacing-edge-to-disclosure-icon-quiet: var(--spectrum-picker-end-edge-to-disclousure-icon-quiet); + --spectrum-picker-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-picker-font-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-picker-font-color-default-open: var(--spectrum-neutral-content-color-focus); + --spectrum-picker-font-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-font-color-hover-open: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-picker-font-color-active: var(--spectrum-neutral-content-color-down); + --spectrum-picker-font-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-picker-icon-color-default-open: var(--spectrum-neutral-content-color-focus); + --spectrum-picker-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-icon-color-hover-open: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-picker-icon-color-active: var(--spectrum-neutral-content-color-down); + --spectrum-picker-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-border-color-error-default: var(--spectrum-negative-border-color-default); + --spectrum-picker-border-color-error-default-open: var(--spectrum-negative-border-color-focus); + --spectrum-picker-border-color-error-hover: var(--spectrum-negative-border-color-hover); + --spectrum-picker-border-color-error-hover-open: var(--spectrum-negative-border-color-focus-hover); + --spectrum-picker-border-color-error-active: var(--spectrum-negative-border-color-down); + --spectrum-picker-border-color-error-key-focus: var(--spectrum-negative-border-color-key-focus); + --spectrum-picker-icon-color-error: var(--spectrum-negative-visual-color); + --spectrum-picker-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-picker-font-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-picker-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-picker-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-picker-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-picker-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +.spectrum-Picker + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-medium); +} +.spectrum-Picker--sizeS { + --spectrum-picker-font-size: var(--spectrum-font-size-75); + --spectrum-picker-block-size: var(--spectrum-component-height-75); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-75); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-small); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-small); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-small); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-small); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-75); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-75); +} +.spectrum-Picker--sizeS + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-small); +} +.spectrum-Picker--sizeL { + --spectrum-picker-font-size: var(--spectrum-font-size-200); + --spectrum-picker-block-size: var(--spectrum-component-height-200); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-200); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-large); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-large); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-large); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-large); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-200); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-200); +} +.spectrum-Picker--sizeL + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-large); +} +.spectrum-Picker--sizeXL { + --spectrum-picker-font-size: var(--spectrum-font-size-300); + --spectrum-picker-block-size: var(--spectrum-component-height-300); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-300); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-extra-large); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-extra-large); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-extra-large); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-extra-large); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-300); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-300); +} +.spectrum-Picker--sizeXL + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-extra-large); +} +@media (forced-colors: active) { + .spectrum-Picker { + --highcontrast-picker-focus-indicator-color: Highlight; + --highcontrast-picker-border-color-default: ButtonBorder; + --highcontrast-picker-border-color-hover: Highlight; + --highcontrast-picker-border-color-disabled: GrayText; + --highcontrast-picker-content-color-default: ButtonText; + --highcontrast-picker-content-color-disabled: GrayText; + --highcontrast-picker-background-color: ButtonFace; + } + .spectrum-Picker.is-keyboardFocused, + .spectrum-Picker:focus-visible { + --highcontrast-picker-border-color-hover: ButtonText; + } + .spectrum-Picker .spectrum-Picker-label, + .spectrum-Picker:after { + forced-color-adjust: none; + } +} +.spectrum-Picker { + display: flex; + box-sizing: border-box; + max-inline-size: 100%; + min-inline-size: calc(var(--spectrum-picker-minimum-width-multiplier) * var(--mod-picker-block-size, var(--spectrum-picker-block-size))); + inline-size: var(--mod-picker-inline-size, var(--spectrum-picker-inline-size)); + block-size: var(--mod-picker-block-size, var(--spectrum-picker-block-size)); + padding-block: 0; + margin-block-start: var(--mod-picker-spacing-label-to-picker, var(--spectrum-picker-spacing-label-to-picker)); + padding-inline-start: var(--mod-picker-spacing-edge-to-text, var(--spectrum-picker-spacing-edge-to-text)); + padding-inline-end: var(--mod-picker-spacing-edge-to-disclosure-icon, var(--spectrum-picker-spacing-edge-to-disclosure-icon)); + border-width: var(--mod-picker-border-width, var(--spectrum-picker-border-width)); + border-style: solid; + border-radius: var(--mod-picker-border-radius, var(--spectrum-picker-border-radius)); + transition: + background-color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)), + box-shadow var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)), + border-color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-in-out; + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-default, var(--spectrum-picker-background-color-default))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-default, var(--spectrum-picker-border-color-default))); +} +.spectrum-Picker:after { + pointer-events: none; + content: ""; + position: absolute; + block-size: calc(100% + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) * 2 + var(--mod-picker-border-width, var(--spectrum-picker-border-width)) * 2); + inline-size: calc(100% + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) * 2 + var(--mod-picker-border-width, var(--spectrum-picker-border-width)) * 2); + margin-block-start: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1); + margin-inline-start: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1); + inset-inline: 0; + inset-block: 0; + border-style: solid; + border-width: var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)); + border-color: transparent; + border-radius: calc(var(--mod-picker-border-radius, var(--spectrum-picker-border-radius)) + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker:active { + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-active, var(--spectrum-picker-background-color-active))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-active, var(--spectrum-picker-border-color-active))); +} +.spectrum-Picker:active:after { + border-color: transparent; +} +.spectrum-Picker.is-placeholder:active .spectrum-Picker-label { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-active, var(--spectrum-picker-font-color-active))); +} +.spectrum-Picker.is-keyboardFocused, +.spectrum-Picker:focus-visible { + outline: none; + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-key-focus, var(--spectrum-picker-background-color-key-focus))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-key-focus, var(--spectrum-picker-border-color-key-focus))); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-key-focus, var(--spectrum-picker-font-color-key-focus))); +} +.spectrum-Picker.is-keyboardFocused:after, +.spectrum-Picker:focus-visible:after { + border-color: var(--highcontrast-picker-focus-indicator-color, var(--mod-picker-focus-indicator-color, var(--spectrum-picker-focus-indicator-color))); +} +.spectrum-Picker.is-keyboardFocused.is-placeholder, +.spectrum-Picker.is-placeholder:focus-visible { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-key-focus, var(--spectrum-picker-font-color-key-focus))); +} +.spectrum-Picker.is-keyboardFocused .spectrum-Picker-menuIcon, +.spectrum-Picker:focus-visible .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-key-focus, var(--spectrum-picker-icon-color-key-focus))); +} +.spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled) { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default-open, var(--spectrum-picker-font-color-default-open))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-default-open, var(--spectrum-picker-background-color-default-open))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-default-open, var(--spectrum-picker-border-color-default-open))); +} +.spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled) .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-default-open, var(--spectrum-picker-icon-color-default-open))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled) { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-default, var(--spectrum-picker-border-color-error-default))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled) .spectrum-Picker-validationIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-error, var(--spectrum-picker-icon-color-error))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled):active { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-active, var(--spectrum-picker-border-color-error-active))); +} +.spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled) { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-default-open, var(--spectrum-picker-border-color-error-default-open))); +} +.spectrum-Picker.is-invalid.is-keyboardFocused:not(:disabled, .is-disabled), +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled):focus-visible { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-key-focus, var(--spectrum-picker-border-color-error-key-focus))); +} +.spectrum-Picker.is-loading .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-icon-color-disabled, var(--spectrum-picker-icon-color-disabled))); +} +.spectrum-Picker.is-invalid .spectrum-Picker-label, +.spectrum-Picker.is-loading .spectrum-Picker-label { + margin-inline-end: var(--mod-picker-spacing-text-to-icon-inline-end, var(--mod-picker-spacing-text-to-alert-icon-inline-start, var(--spectrum-picker-spacing-text-to-icon-inline-end))); +} +.spectrum-Picker .spectrum-Picker-icon { + flex-shrink: 0; + margin-inline-end: var(--mod-picker-spacing-text-to-icon, var(--spectrum-picker-spacing-text-to-icon)); +} +.spectrum-Picker-label { + flex: 1 1 auto; + white-space: nowrap; + overflow: hidden; + font-size: var(--mod-picker-font-size, var(--spectrum-picker-font-size)); + line-height: var(--mod-picker-line-height, var(--spectrum-picker-line-height)); + font-weight: var(--mod-picker-font-weight, var(--spectrum-picker-font-weight)); + text-overflow: ellipsis; + text-align: start; + padding-block-start: var(--mod-picker-spacing-top-to-text, var(--spectrum-picker-spacing-top-to-text)); + padding-block-end: calc(var(--mod-picker-spacing-bottom-to-text, var(--spectrum-picker-spacing-bottom-to-text)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker-label.is-placeholder { + font-weight: var(--mod-picker-placeholder-font-weight, var(--spectrum-picker-font-weight)); + font-style: var(--mod-picker-placeholder-font-style, var(--spectrum-picker-placeholder-font-style)); + transition: color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-in-out; + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); +} +.spectrum-Picker-label.is-placeholder:active { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-active, var(--spectrum-picker-font-color-active))); +} +.spectrum-Picker-menuIcon { + display: inline-block; + position: relative; + vertical-align: top; + transition: color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-out; + flex-shrink: 0; + margin-inline-start: var(--mod-picker-spacing-icon-to-disclosure-icon, var(--spectrum-picker-spacing-icon-to-disclosure-icon)); + margin-block: var(--mod-picker-spacing-top-to-disclosure-icon, var(--spectrum-picker-spacing-top-to-disclosure-icon)); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-default, var(--spectrum-picker-icon-color-default))); +} +.spectrum-Picker-menuIcon:active { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-active, var(--spectrum-picker-icon-color-active))); +} +.spectrum-Picker-validationIcon { + margin-block-start: calc(var(--mod-picker-spacing-top-to-alert-icon, var(--spectrum-picker-spacing-top-to-alert-icon)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); + margin-block-end: calc(var(--mod-picker-spacing-top-to-alert-icon, var(--spectrum-picker-spacing-top-to-alert-icon)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker .spectrum-ProgressCircle { + margin-block-start: calc(var(--mod-picker-spacing-top-to-progress-circle, var(--spectrum-picker-spacing-top-to-progress-circle)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); + margin-block-end: calc(var(--mod-picker-spacing-top-to-progress-circle, var(--spectrum-picker-spacing-top-to-progress-circle)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker-label ~ .spectrum-Picker-menuIcon { + margin-inline-start: var(--mod-picker-spacing-text-to-icon, var(--spectrum-picker-spacing-text-to-icon)); +} +.spectrum-Picker + .spectrum-Popover--bottom.is-open { + transform: translateY(var(--mod-picker-spacing-picker-to-popover, var(--spectrum-picker-spacing-picker-to-popover))); +} +.spectrum-Picker--quiet { + inline-size: auto; + min-inline-size: 0; + border: none; + border-radius: 0; + padding-inline: var(--mod-picker-spacing-edge-to-text-quiet, var(--spectrum-picker-spacing-edge-to-text-quiet)); + margin-block-start: calc(var(--mod-picker-spacing-label-to-picker-quiet, var(--spectrum-picker-spacing-label-to-picker-quiet)) + 1px); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--quiet.spectrum-Picker--sideLabel { + margin-block-start: 0; +} +.spectrum-Picker--quiet .spectrum-Picker-menuIcon { + margin-inline-end: var(--mod-picker-spacing-edge-to-disclosure-icon-quiet, var(--spectrum-picker-spacing-edge-to-disclosure-icon-quiet)); +} +.spectrum-Picker--quiet:after { + border: none; + block-size: auto; + inline-size: auto; +} +@media (hover: hover) { + .spectrum-Picker:hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover, var(--spectrum-picker-font-color-hover))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-hover, var(--spectrum-picker-background-color-hover))); + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-hover, var(--spectrum-picker-border-color-hover))); + } + .spectrum-Picker:hover .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-hover, var(--spectrum-picker-icon-color-hover))); + } + .spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover-open, var(--spectrum-picker-font-color-hover-open))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-hover-open, var(--spectrum-picker-background-color-hover-open))); + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-hover-open, var(--spectrum-picker-border-color-hover-open))); + } + .spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-hover-open, var(--spectrum-picker-icon-color-hover-open))); + } + .spectrum-Picker.is-invalid:not(:disabled, .is-disabled):hover { + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-error-hover, var(--spectrum-picker-border-color-error-hover))); + } + .spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled):hover { + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-error-hover-open, var(--spectrum-picker-border-color-error-hover-open))); + } + .spectrum-Picker-label.is-placeholder:hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover, var(--spectrum-picker-font-color-hover))); + } + .spectrum-Picker--quiet:hover { + background-color: var(--highcontrast-picker-background-color, transparent); + } +} +.spectrum-Picker--quiet.is-keyboardFocused, +.spectrum-Picker--quiet:focus-visible { + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--quiet.is-keyboardFocused:after, +.spectrum-Picker--quiet:focus-visible:after { + border: none; + border-radius: 0; + box-shadow: 0 var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) 0 0 var(--highcontrast-picker-focus-indicator-color, var(--mod-picker-focus-indicator-color, var(--spectrum-picker-focus-indicator-color))); + margin: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1) 0; +} +.spectrum-Picker--quiet.is-open, +.spectrum-Picker--quiet.spectrum-Picker.is-disabled, +.spectrum-Picker--quiet.spectrum-Picker:disabled, +.spectrum-Picker--quiet:active { + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--sideLabel { + display: inline-flex; + vertical-align: top; +} +.spectrum-Picker.is-disabled, +.spectrum-Picker:disabled { + cursor: default; + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-disabled, var(--spectrum-picker-background-color-disabled))); + border-color: var(--highcontrast-picker-border-color-disabled, transparent); + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-font-color-disabled, var(--spectrum-picker-font-color-disabled))); +} +.spectrum-Picker.is-disabled .spectrum-Picker-icon, +.spectrum-Picker.is-disabled .spectrum-Picker-menuIcon, +.spectrum-Picker.is-disabled .spectrum-Picker-validationIcon, +.spectrum-Picker:disabled .spectrum-Picker-icon, +.spectrum-Picker:disabled .spectrum-Picker-menuIcon, +.spectrum-Picker:disabled .spectrum-Picker-validationIcon { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-icon-color-disabled, var(--spectrum-picker-icon-color-disabled))); +} +.spectrum-Picker.is-disabled .spectrum-Picker-label.is-placeholder, +.spectrum-Picker:disabled .spectrum-Picker-label.is-placeholder { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-font-color-disabled, var(--spectrum-picker-font-color-disabled))); +} +.spectrum-Picker { + --spectrum-picker-background-color-default: var(--system-spectrum-picker-background-color-default); + --spectrum-picker-background-color-default-open: var(--system-spectrum-picker-background-color-default-open); + --spectrum-picker-background-color-active: var(--system-spectrum-picker-background-color-active); + --spectrum-picker-background-color-hover: var(--system-spectrum-picker-background-color-hover); + --spectrum-picker-background-color-hover-open: var(--system-spectrum-picker-background-color-hover-open); + --spectrum-picker-background-color-key-focus: var(--system-spectrum-picker-background-color-key-focus); + --spectrum-picker-border-color-default: var(--system-spectrum-picker-border-color-default); + --spectrum-picker-border-color-default-open: var(--system-spectrum-picker-border-color-default-open); + --spectrum-picker-border-color-hover: var(--system-spectrum-picker-border-color-hover); + --spectrum-picker-border-color-hover-open: var(--system-spectrum-picker-border-color-hover-open); + --spectrum-picker-border-color-active: var(--system-spectrum-picker-border-color-active); + --spectrum-picker-border-color-key-focus: var(--system-spectrum-picker-border-color-key-focus); + --spectrum-picker-border-width: var(--system-spectrum-picker-border-width); +} +/*# sourceMappingURL=components/picker/index.css.map */ diff --git a/components/picker/index.css b/components/picker/index.css new file mode 100644 index 0000000000..3545e8d36b --- /dev/null +++ b/components/picker/index.css @@ -0,0 +1,456 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-75); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-picker-border-color-default: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-default-open: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-hover-open: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-active: var(--spectrum-gray-700); + --system-spectrum-picker-border-color-key-focus: var(--spectrum-gray-600); + --system-spectrum-picker-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-400); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-picker-border-color-default: transparent; + --system-spectrum-picker-border-color-default-open: transparent; + --system-spectrum-picker-border-color-hover: transparent; + --system-spectrum-picker-border-color-hover-open: transparent; + --system-spectrum-picker-border-color-active: transparent; + --system-spectrum-picker-border-color-key-focus: transparent; + --system-spectrum-picker-border-width: 0px; +} +.spectrum-Picker { + cursor: pointer; + -webkit-user-select: none; + user-select: none; + position: relative; + overflow: visible; + display: inline-flex; + align-items: center; + justify-content: center; + margin: 0; + font-family: var(--mod-button-font-family, var(--mod-sans-font-family-stack, var(--spectrum-sans-font-family-stack))); + line-height: var(--mod-button-line-height, var(--mod-line-height-100, var(--spectrum-line-height-100))); + -webkit-text-decoration: none; + text-decoration: none; + text-transform: none; + vertical-align: top; + -webkit-appearance: button; + transition: + background var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + border-color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + color var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out, + box-shadow var(--mod-button-animation-duration, var(--mod-animation-duration-100, var(--spectrum-animation-duration-100))) ease-out; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.spectrum-Picker::-moz-focus-inner { + border-style: none; + padding: 0; +} +.spectrum-Picker:focus { + outline: none; +} +.spectrum-Picker { + --spectrum-picker-font-size: var(--spectrum-font-size-100); + --spectrum-picker-font-weight: var(--spectrum-regular-font-weight); + --spectrum-picker-placeholder-font-style: var(--spectrum-default-font-style); + --spectrum-picker-line-height: var(--spectrum-line-height-100); + --spectrum-picker-block-size: var(--spectrum-component-height-100); + --spectrum-picker-inline-size: var(--spectrum-field-width); + --spectrum-picker-border-radius: var(--spectrum-corner-radius-100); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-100); + --spectrum-picker-spacing-edge-to-text-quiet: var(--spectrum-field-edge-to-text-quiet); + --spectrum-picker-spacing-label-to-picker: var(--spectrum-field-label-to-component); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-medium); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-medium); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-100); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-100); + --spectrum-picker-spacing-edge-to-disclosure-icon-quiet: var(--spectrum-picker-end-edge-to-disclousure-icon-quiet); + --spectrum-picker-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-picker-font-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-picker-font-color-default-open: var(--spectrum-neutral-content-color-focus); + --spectrum-picker-font-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-font-color-hover-open: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-picker-font-color-active: var(--spectrum-neutral-content-color-down); + --spectrum-picker-font-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-icon-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-picker-icon-color-default-open: var(--spectrum-neutral-content-color-focus); + --spectrum-picker-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-icon-color-hover-open: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-picker-icon-color-active: var(--spectrum-neutral-content-color-down); + --spectrum-picker-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-border-color-error-default: var(--spectrum-negative-border-color-default); + --spectrum-picker-border-color-error-default-open: var(--spectrum-negative-border-color-focus); + --spectrum-picker-border-color-error-hover: var(--spectrum-negative-border-color-hover); + --spectrum-picker-border-color-error-hover-open: var(--spectrum-negative-border-color-focus-hover); + --spectrum-picker-border-color-error-active: var(--spectrum-negative-border-color-down); + --spectrum-picker-border-color-error-key-focus: var(--spectrum-negative-border-color-key-focus); + --spectrum-picker-icon-color-error: var(--spectrum-negative-visual-color); + --spectrum-picker-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-picker-font-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-picker-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-picker-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-picker-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-picker-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +.spectrum-Picker + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-medium); +} +.spectrum-Picker--sizeS { + --spectrum-picker-font-size: var(--spectrum-font-size-75); + --spectrum-picker-block-size: var(--spectrum-component-height-75); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-75); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-75); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-small); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-small); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-small); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-small); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-75); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-75); +} +.spectrum-Picker--sizeS + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-small); +} +.spectrum-Picker--sizeL { + --spectrum-picker-font-size: var(--spectrum-font-size-200); + --spectrum-picker-block-size: var(--spectrum-component-height-200); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-200); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-200); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-large); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-large); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-large); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-large); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-200); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-200); +} +.spectrum-Picker--sizeL + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-large); +} +.spectrum-Picker--sizeXL { + --spectrum-picker-font-size: var(--spectrum-font-size-300); + --spectrum-picker-block-size: var(--spectrum-component-height-300); + --spectrum-picker-spacing-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-picker-spacing-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-picker-spacing-edge-to-text: var(--spectrum-component-edge-to-text-300); + --spectrum-picker-spacing-text-to-icon: var(--spectrum-text-to-visual-300); + --spectrum-picker-spacing-text-to-icon-inline-end: var(--spectrum-field-text-to-alert-icon-extra-large); + --spectrum-picker-spacing-icon-to-disclosure-icon: var(--spectrum-picker-visual-to-disclosure-icon-extra-large); + --spectrum-picker-spacing-label-to-picker-quiet: var(--spectrum-field-label-to-component-quiet-extra-large); + --spectrum-picker-spacing-top-to-alert-icon: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-picker-spacing-top-to-progress-circle: var(--spectrum-field-top-to-progress-circle-extra-large); + --spectrum-picker-spacing-top-to-disclosure-icon: var(--spectrum-field-top-to-disclosure-icon-300); + --spectrum-picker-spacing-edge-to-disclosure-icon: var(--spectrum-field-end-edge-to-disclosure-icon-300); +} +.spectrum-Picker--sizeXL + .spectrum-Popover--bottom.is-open { + --spectrum-picker-spacing-picker-to-popover: var(--spectrum-component-to-menu-extra-large); +} +@media (forced-colors: active) { + .spectrum-Picker { + --highcontrast-picker-focus-indicator-color: Highlight; + --highcontrast-picker-border-color-default: ButtonBorder; + --highcontrast-picker-border-color-hover: Highlight; + --highcontrast-picker-border-color-disabled: GrayText; + --highcontrast-picker-content-color-default: ButtonText; + --highcontrast-picker-content-color-disabled: GrayText; + --highcontrast-picker-background-color: ButtonFace; + } + .spectrum-Picker.is-keyboardFocused, + .spectrum-Picker:focus-visible { + --highcontrast-picker-border-color-hover: ButtonText; + } + .spectrum-Picker .spectrum-Picker-label, + .spectrum-Picker:after { + forced-color-adjust: none; + } +} +.spectrum-Picker { + display: flex; + box-sizing: border-box; + max-inline-size: 100%; + min-inline-size: calc(var(--spectrum-picker-minimum-width-multiplier) * var(--mod-picker-block-size, var(--spectrum-picker-block-size))); + inline-size: var(--mod-picker-inline-size, var(--spectrum-picker-inline-size)); + block-size: var(--mod-picker-block-size, var(--spectrum-picker-block-size)); + padding-block: 0; + margin-block-start: var(--mod-picker-spacing-label-to-picker, var(--spectrum-picker-spacing-label-to-picker)); + padding-inline-start: var(--mod-picker-spacing-edge-to-text, var(--spectrum-picker-spacing-edge-to-text)); + padding-inline-end: var(--mod-picker-spacing-edge-to-disclosure-icon, var(--spectrum-picker-spacing-edge-to-disclosure-icon)); + border-width: var(--mod-picker-border-width, var(--spectrum-picker-border-width)); + border-style: solid; + border-radius: var(--mod-picker-border-radius, var(--spectrum-picker-border-radius)); + transition: + background-color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)), + box-shadow var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)), + border-color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-in-out; + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-default, var(--spectrum-picker-background-color-default))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-default, var(--spectrum-picker-border-color-default))); +} +.spectrum-Picker:after { + pointer-events: none; + content: ""; + position: absolute; + block-size: calc(100% + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) * 2 + var(--mod-picker-border-width, var(--spectrum-picker-border-width)) * 2); + inline-size: calc(100% + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) * 2 + var(--mod-picker-border-width, var(--spectrum-picker-border-width)) * 2); + margin-block-start: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1); + margin-inline-start: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1); + inset-inline: 0; + inset-block: 0; + border-style: solid; + border-width: var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)); + border-color: transparent; + border-radius: calc(var(--mod-picker-border-radius, var(--spectrum-picker-border-radius)) + var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker:active { + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-active, var(--spectrum-picker-background-color-active))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-active, var(--spectrum-picker-border-color-active))); +} +.spectrum-Picker:active:after { + border-color: transparent; +} +.spectrum-Picker.is-placeholder:active .spectrum-Picker-label { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-active, var(--spectrum-picker-font-color-active))); +} +.spectrum-Picker.is-keyboardFocused, +.spectrum-Picker:focus-visible { + outline: none; + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-key-focus, var(--spectrum-picker-background-color-key-focus))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-key-focus, var(--spectrum-picker-border-color-key-focus))); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-key-focus, var(--spectrum-picker-font-color-key-focus))); +} +.spectrum-Picker.is-keyboardFocused:after, +.spectrum-Picker:focus-visible:after { + border-color: var(--highcontrast-picker-focus-indicator-color, var(--mod-picker-focus-indicator-color, var(--spectrum-picker-focus-indicator-color))); +} +.spectrum-Picker.is-keyboardFocused.is-placeholder, +.spectrum-Picker.is-placeholder:focus-visible { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-key-focus, var(--spectrum-picker-font-color-key-focus))); +} +.spectrum-Picker.is-keyboardFocused .spectrum-Picker-menuIcon, +.spectrum-Picker:focus-visible .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-key-focus, var(--spectrum-picker-icon-color-key-focus))); +} +.spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled) { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default-open, var(--spectrum-picker-font-color-default-open))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-default-open, var(--spectrum-picker-background-color-default-open))); + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-default-open, var(--spectrum-picker-border-color-default-open))); +} +.spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled) .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-default-open, var(--spectrum-picker-icon-color-default-open))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled) { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-default, var(--spectrum-picker-border-color-error-default))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled) .spectrum-Picker-validationIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-error, var(--spectrum-picker-icon-color-error))); +} +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled):active { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-active, var(--spectrum-picker-border-color-error-active))); +} +.spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled) { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-default-open, var(--spectrum-picker-border-color-error-default-open))); +} +.spectrum-Picker.is-invalid.is-keyboardFocused:not(:disabled, .is-disabled), +.spectrum-Picker.is-invalid:not(:disabled, .is-disabled):focus-visible { + border-color: var(--highcontrast-picker-border-color-default, var(--mod-picker-border-color-error-key-focus, var(--spectrum-picker-border-color-error-key-focus))); +} +.spectrum-Picker.is-loading .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-icon-color-disabled, var(--spectrum-picker-icon-color-disabled))); +} +.spectrum-Picker.is-invalid .spectrum-Picker-label, +.spectrum-Picker.is-loading .spectrum-Picker-label { + margin-inline-end: var(--mod-picker-spacing-text-to-icon-inline-end, var(--mod-picker-spacing-text-to-alert-icon-inline-start, var(--spectrum-picker-spacing-text-to-icon-inline-end))); +} +.spectrum-Picker .spectrum-Picker-icon { + flex-shrink: 0; + margin-inline-end: var(--mod-picker-spacing-text-to-icon, var(--spectrum-picker-spacing-text-to-icon)); +} +.spectrum-Picker-label { + flex: 1 1 auto; + white-space: nowrap; + overflow: hidden; + font-size: var(--mod-picker-font-size, var(--spectrum-picker-font-size)); + line-height: var(--mod-picker-line-height, var(--spectrum-picker-line-height)); + font-weight: var(--mod-picker-font-weight, var(--spectrum-picker-font-weight)); + text-overflow: ellipsis; + text-align: start; + padding-block-start: var(--mod-picker-spacing-top-to-text, var(--spectrum-picker-spacing-top-to-text)); + padding-block-end: calc(var(--mod-picker-spacing-bottom-to-text, var(--spectrum-picker-spacing-bottom-to-text)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker-label.is-placeholder { + font-weight: var(--mod-picker-placeholder-font-weight, var(--spectrum-picker-font-weight)); + font-style: var(--mod-picker-placeholder-font-style, var(--spectrum-picker-placeholder-font-style)); + transition: color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-in-out; + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); +} +.spectrum-Picker-label.is-placeholder:active { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-active, var(--spectrum-picker-font-color-active))); +} +.spectrum-Picker-menuIcon { + display: inline-block; + position: relative; + vertical-align: top; + transition: color var(--mod-picker-animation-duration, var(--spectrum-picker-animation-duration)) ease-out; + flex-shrink: 0; + margin-inline-start: var(--mod-picker-spacing-icon-to-disclosure-icon, var(--spectrum-picker-spacing-icon-to-disclosure-icon)); + margin-block: var(--mod-picker-spacing-top-to-disclosure-icon, var(--spectrum-picker-spacing-top-to-disclosure-icon)); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-default, var(--spectrum-picker-icon-color-default))); +} +.spectrum-Picker-menuIcon:active { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-active, var(--spectrum-picker-icon-color-active))); +} +.spectrum-Picker-validationIcon { + margin-block-start: calc(var(--mod-picker-spacing-top-to-alert-icon, var(--spectrum-picker-spacing-top-to-alert-icon)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); + margin-block-end: calc(var(--mod-picker-spacing-top-to-alert-icon, var(--spectrum-picker-spacing-top-to-alert-icon)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker .spectrum-ProgressCircle { + margin-block-start: calc(var(--mod-picker-spacing-top-to-progress-circle, var(--spectrum-picker-spacing-top-to-progress-circle)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); + margin-block-end: calc(var(--mod-picker-spacing-top-to-progress-circle, var(--spectrum-picker-spacing-top-to-progress-circle)) - var(--mod-picker-border-width, var(--spectrum-picker-border-width))); +} +.spectrum-Picker-label ~ .spectrum-Picker-menuIcon { + margin-inline-start: var(--mod-picker-spacing-text-to-icon, var(--spectrum-picker-spacing-text-to-icon)); +} +.spectrum-Picker + .spectrum-Popover--bottom.is-open { + transform: translateY(var(--mod-picker-spacing-picker-to-popover, var(--spectrum-picker-spacing-picker-to-popover))); +} +.spectrum-Picker--quiet { + inline-size: auto; + min-inline-size: 0; + border: none; + border-radius: 0; + padding-inline: var(--mod-picker-spacing-edge-to-text-quiet, var(--spectrum-picker-spacing-edge-to-text-quiet)); + margin-block-start: calc(var(--mod-picker-spacing-label-to-picker-quiet, var(--spectrum-picker-spacing-label-to-picker-quiet)) + 1px); + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-default, var(--spectrum-picker-font-color-default))); + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--quiet.spectrum-Picker--sideLabel { + margin-block-start: 0; +} +.spectrum-Picker--quiet .spectrum-Picker-menuIcon { + margin-inline-end: var(--mod-picker-spacing-edge-to-disclosure-icon-quiet, var(--spectrum-picker-spacing-edge-to-disclosure-icon-quiet)); +} +.spectrum-Picker--quiet:after { + border: none; + block-size: auto; + inline-size: auto; +} +@media (hover: hover) { + .spectrum-Picker:hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover, var(--spectrum-picker-font-color-hover))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-hover, var(--spectrum-picker-background-color-hover))); + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-hover, var(--spectrum-picker-border-color-hover))); + } + .spectrum-Picker:hover .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-hover, var(--spectrum-picker-icon-color-hover))); + } + .spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover-open, var(--spectrum-picker-font-color-hover-open))); + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-hover-open, var(--spectrum-picker-background-color-hover-open))); + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-hover-open, var(--spectrum-picker-border-color-hover-open))); + } + .spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover .spectrum-Picker-menuIcon { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-icon-color-hover-open, var(--spectrum-picker-icon-color-hover-open))); + } + .spectrum-Picker.is-invalid:not(:disabled, .is-disabled):hover { + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-error-hover, var(--spectrum-picker-border-color-error-hover))); + } + .spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled):hover { + border-color: var(--highcontrast-picker-border-color-hover, var(--mod-picker-border-color-error-hover-open, var(--spectrum-picker-border-color-error-hover-open))); + } + .spectrum-Picker-label.is-placeholder:hover { + color: var(--highcontrast-picker-content-color-default, var(--mod-picker-font-color-hover, var(--spectrum-picker-font-color-hover))); + } + .spectrum-Picker--quiet:hover { + background-color: var(--highcontrast-picker-background-color, transparent); + } +} +.spectrum-Picker--quiet.is-keyboardFocused, +.spectrum-Picker--quiet:focus-visible { + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--quiet.is-keyboardFocused:after, +.spectrum-Picker--quiet:focus-visible:after { + border: none; + border-radius: 0; + box-shadow: 0 var(--mod-picker-focus-indicator-thickness, var(--spectrum-picker-focus-indicator-thickness)) 0 0 var(--highcontrast-picker-focus-indicator-color, var(--mod-picker-focus-indicator-color, var(--spectrum-picker-focus-indicator-color))); + margin: calc((var(--mod-picker-focus-indicator-gap, var(--spectrum-picker-focus-indicator-gap)) + var(--mod-picker-border-width, var(--spectrum-picker-border-width))) * -1) 0; +} +.spectrum-Picker--quiet.is-open, +.spectrum-Picker--quiet.spectrum-Picker.is-disabled, +.spectrum-Picker--quiet.spectrum-Picker:disabled, +.spectrum-Picker--quiet:active { + background-color: var(--highcontrast-picker-background-color, transparent); +} +.spectrum-Picker--sideLabel { + display: inline-flex; + vertical-align: top; +} +.spectrum-Picker.is-disabled, +.spectrum-Picker:disabled { + cursor: default; + background-color: var(--highcontrast-picker-background-color, var(--mod-picker-background-color-disabled, var(--spectrum-picker-background-color-disabled))); + border-color: var(--highcontrast-picker-border-color-disabled, transparent); + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-font-color-disabled, var(--spectrum-picker-font-color-disabled))); +} +.spectrum-Picker.is-disabled .spectrum-Picker-icon, +.spectrum-Picker.is-disabled .spectrum-Picker-menuIcon, +.spectrum-Picker.is-disabled .spectrum-Picker-validationIcon, +.spectrum-Picker:disabled .spectrum-Picker-icon, +.spectrum-Picker:disabled .spectrum-Picker-menuIcon, +.spectrum-Picker:disabled .spectrum-Picker-validationIcon { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-icon-color-disabled, var(--spectrum-picker-icon-color-disabled))); +} +.spectrum-Picker.is-disabled .spectrum-Picker-label.is-placeholder, +.spectrum-Picker:disabled .spectrum-Picker-label.is-placeholder { + color: var(--highcontrast-picker-content-color-disabled, var(--mod-picker-font-color-disabled, var(--spectrum-picker-font-color-disabled))); +} +.spectrum-Picker { + --spectrum-picker-background-color-default: var(--system-spectrum-picker-background-color-default); + --spectrum-picker-background-color-default-open: var(--system-spectrum-picker-background-color-default-open); + --spectrum-picker-background-color-active: var(--system-spectrum-picker-background-color-active); + --spectrum-picker-background-color-hover: var(--system-spectrum-picker-background-color-hover); + --spectrum-picker-background-color-hover-open: var(--system-spectrum-picker-background-color-hover-open); + --spectrum-picker-background-color-key-focus: var(--system-spectrum-picker-background-color-key-focus); + --spectrum-picker-border-color-default: var(--system-spectrum-picker-border-color-default); + --spectrum-picker-border-color-default-open: var(--system-spectrum-picker-border-color-default-open); + --spectrum-picker-border-color-hover: var(--system-spectrum-picker-border-color-hover); + --spectrum-picker-border-color-hover-open: var(--system-spectrum-picker-border-color-hover-open); + --spectrum-picker-border-color-active: var(--system-spectrum-picker-border-color-active); + --spectrum-picker-border-color-key-focus: var(--system-spectrum-picker-border-color-key-focus); + --spectrum-picker-border-width: var(--system-spectrum-picker-border-width); +} +/*# sourceMappingURL=components/picker/index.css.map */ diff --git a/components/picker/metadata.json b/components/picker/metadata.json new file mode 100644 index 0000000000..0e865c691b --- /dev/null +++ b/components/picker/metadata.json @@ -0,0 +1,314 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Picker", + ".spectrum-Picker + .spectrum-Popover--bottom.is-open", + ".spectrum-Picker .spectrum-Picker-icon", + ".spectrum-Picker .spectrum-Picker-label,\n\t.spectrum-Picker:after", + ".spectrum-Picker .spectrum-ProgressCircle", + ".spectrum-Picker--quiet", + ".spectrum-Picker--quiet .spectrum-Picker-menuIcon", + ".spectrum-Picker--quiet.is-keyboardFocused,\n.spectrum-Picker--quiet:focus-visible", + ".spectrum-Picker--quiet.is-keyboardFocused:after,\n.spectrum-Picker--quiet:focus-visible:after", + ".spectrum-Picker--quiet.is-open,\n.spectrum-Picker--quiet.spectrum-Picker.is-disabled,\n.spectrum-Picker--quiet.spectrum-Picker:disabled,\n.spectrum-Picker--quiet:active", + ".spectrum-Picker--quiet.spectrum-Picker--sideLabel", + ".spectrum-Picker--quiet:after", + ".spectrum-Picker--quiet:hover", + ".spectrum-Picker--sideLabel", + ".spectrum-Picker--sizeL", + ".spectrum-Picker--sizeL + .spectrum-Popover--bottom.is-open", + ".spectrum-Picker--sizeS", + ".spectrum-Picker--sizeS + .spectrum-Popover--bottom.is-open", + ".spectrum-Picker--sizeXL", + ".spectrum-Picker--sizeXL + .spectrum-Popover--bottom.is-open", + ".spectrum-Picker-label", + ".spectrum-Picker-label ~ .spectrum-Picker-menuIcon", + ".spectrum-Picker-label.is-placeholder", + ".spectrum-Picker-label.is-placeholder:active", + ".spectrum-Picker-label.is-placeholder:hover", + ".spectrum-Picker-menuIcon", + ".spectrum-Picker-menuIcon:active", + ".spectrum-Picker-validationIcon", + ".spectrum-Picker.is-disabled .spectrum-Picker-icon,\n.spectrum-Picker.is-disabled .spectrum-Picker-menuIcon,\n.spectrum-Picker.is-disabled .spectrum-Picker-validationIcon,\n.spectrum-Picker:disabled .spectrum-Picker-icon,\n.spectrum-Picker:disabled .spectrum-Picker-menuIcon,\n.spectrum-Picker:disabled .spectrum-Picker-validationIcon", + ".spectrum-Picker.is-disabled .spectrum-Picker-label.is-placeholder,\n.spectrum-Picker:disabled .spectrum-Picker-label.is-placeholder", + ".spectrum-Picker.is-disabled,\n.spectrum-Picker:disabled", + ".spectrum-Picker.is-invalid .spectrum-Picker-label,\n.spectrum-Picker.is-loading .spectrum-Picker-label", + ".spectrum-Picker.is-invalid.is-keyboardFocused:not(:disabled, .is-disabled),\n.spectrum-Picker.is-invalid:not(:disabled, .is-disabled):focus-visible", + ".spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled)", + ".spectrum-Picker.is-invalid.is-open:not(:disabled, .is-disabled):hover", + ".spectrum-Picker.is-invalid:not(:disabled, .is-disabled)", + ".spectrum-Picker.is-invalid:not(:disabled, .is-disabled) .spectrum-Picker-validationIcon", + ".spectrum-Picker.is-invalid:not(:disabled, .is-disabled):active", + ".spectrum-Picker.is-invalid:not(:disabled, .is-disabled):hover", + ".spectrum-Picker.is-keyboardFocused .spectrum-Picker-menuIcon,\n.spectrum-Picker:focus-visible .spectrum-Picker-menuIcon", + ".spectrum-Picker.is-keyboardFocused,\n\t.spectrum-Picker:focus-visible", + ".spectrum-Picker.is-keyboardFocused,\n.spectrum-Picker:focus-visible", + ".spectrum-Picker.is-keyboardFocused.is-placeholder,\n.spectrum-Picker.is-placeholder:focus-visible", + ".spectrum-Picker.is-keyboardFocused:after,\n.spectrum-Picker:focus-visible:after", + ".spectrum-Picker.is-loading .spectrum-Picker-menuIcon", + ".spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled)", + ".spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled) .spectrum-Picker-menuIcon", + ".spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover", + ".spectrum-Picker.is-open:not(.spectrum-Picker--quiet, :disabled, .is-disabled):hover .spectrum-Picker-menuIcon", + ".spectrum-Picker.is-placeholder:active .spectrum-Picker-label", + ".spectrum-Picker::-moz-focus-inner", + ".spectrum-Picker:active", + ".spectrum-Picker:active:after", + ".spectrum-Picker:after", + ".spectrum-Picker:focus", + ".spectrum-Picker:hover", + ".spectrum-Picker:hover .spectrum-Picker-menuIcon" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-button-animation-duration", + "--mod-button-font-family", + "--mod-button-line-height", + "--mod-line-height-100", + "--mod-picker-animation-duration", + "--mod-picker-background-color-active", + "--mod-picker-background-color-default", + "--mod-picker-background-color-default-open", + "--mod-picker-background-color-disabled", + "--mod-picker-background-color-hover", + "--mod-picker-background-color-hover-open", + "--mod-picker-background-color-key-focus", + "--mod-picker-block-size", + "--mod-picker-border-active", + "--mod-picker-border-color-default", + "--mod-picker-border-color-error-active", + "--mod-picker-border-color-error-default", + "--mod-picker-border-color-error-default-open", + "--mod-picker-border-color-error-hover", + "--mod-picker-border-color-error-hover-open", + "--mod-picker-border-color-error-key-focus", + "--mod-picker-border-color-hover", + "--mod-picker-border-color-hover-open", + "--mod-picker-border-color-key-focus", + "--mod-picker-border-default-open", + "--mod-picker-border-radius", + "--mod-picker-border-width", + "--mod-picker-focus-indicator-color", + "--mod-picker-focus-indicator-gap", + "--mod-picker-focus-indicator-thickness", + "--mod-picker-font-color-active", + "--mod-picker-font-color-default", + "--mod-picker-font-color-default-open", + "--mod-picker-font-color-disabled", + "--mod-picker-font-color-hover", + "--mod-picker-font-color-hover-open", + "--mod-picker-font-color-key-focus", + "--mod-picker-font-size", + "--mod-picker-font-weight", + "--mod-picker-icon-color-active", + "--mod-picker-icon-color-default", + "--mod-picker-icon-color-default-open", + "--mod-picker-icon-color-disabled", + "--mod-picker-icon-color-error", + "--mod-picker-icon-color-hover", + "--mod-picker-icon-color-hover-open", + "--mod-picker-icon-color-key-focus", + "--mod-picker-inline-size", + "--mod-picker-line-height", + "--mod-picker-placeholder-font-style", + "--mod-picker-placeholder-font-weight", + "--mod-picker-spacing-bottom-to-text", + "--mod-picker-spacing-edge-to-disclosure-icon", + "--mod-picker-spacing-edge-to-disclosure-icon-quiet", + "--mod-picker-spacing-edge-to-text", + "--mod-picker-spacing-edge-to-text-quiet", + "--mod-picker-spacing-icon-to-disclosure-icon", + "--mod-picker-spacing-label-to-picker", + "--mod-picker-spacing-label-to-picker-quiet", + "--mod-picker-spacing-picker-to-popover", + "--mod-picker-spacing-text-to-alert-icon-inline-start", + "--mod-picker-spacing-text-to-icon", + "--mod-picker-spacing-text-to-icon-inline-end", + "--mod-picker-spacing-top-to-alert-icon", + "--mod-picker-spacing-top-to-disclosure-icon", + "--mod-picker-spacing-top-to-progress-circle", + "--mod-picker-spacing-top-to-text", + "--mod-sans-font-family-stack" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-border-width-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-300", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-to-menu-extra-large", + "--spectrum-component-to-menu-large", + "--spectrum-component-to-menu-medium", + "--spectrum-component-to-menu-small", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-disabled-background-color", + "--spectrum-disabled-content-color", + "--spectrum-field-edge-to-text-quiet", + "--spectrum-field-end-edge-to-disclosure-icon-100", + "--spectrum-field-end-edge-to-disclosure-icon-200", + "--spectrum-field-end-edge-to-disclosure-icon-300", + "--spectrum-field-end-edge-to-disclosure-icon-75", + "--spectrum-field-label-to-component", + "--spectrum-field-label-to-component-quiet-extra-large", + "--spectrum-field-label-to-component-quiet-large", + "--spectrum-field-label-to-component-quiet-medium", + "--spectrum-field-label-to-component-quiet-small", + "--spectrum-field-text-to-alert-icon-extra-large", + "--spectrum-field-text-to-alert-icon-large", + "--spectrum-field-text-to-alert-icon-medium", + "--spectrum-field-text-to-alert-icon-small", + "--spectrum-field-top-to-alert-icon-extra-large", + "--spectrum-field-top-to-alert-icon-large", + "--spectrum-field-top-to-alert-icon-medium", + "--spectrum-field-top-to-alert-icon-small", + "--spectrum-field-top-to-disclosure-icon-100", + "--spectrum-field-top-to-disclosure-icon-200", + "--spectrum-field-top-to-disclosure-icon-300", + "--spectrum-field-top-to-disclosure-icon-75", + "--spectrum-field-top-to-progress-circle-extra-large", + "--spectrum-field-top-to-progress-circle-large", + "--spectrum-field-top-to-progress-circle-medium", + "--spectrum-field-top-to-progress-circle-small", + "--spectrum-field-width", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-75", + "--spectrum-line-height-100", + "--spectrum-negative-border-color-default", + "--spectrum-negative-border-color-down", + "--spectrum-negative-border-color-focus", + "--spectrum-negative-border-color-focus-hover", + "--spectrum-negative-border-color-hover", + "--spectrum-negative-border-color-key-focus", + "--spectrum-negative-visual-color", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-focus", + "--spectrum-neutral-content-color-focus-hover", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-picker-animation-duration", + "--spectrum-picker-background-color-active", + "--spectrum-picker-background-color-default", + "--spectrum-picker-background-color-default-open", + "--spectrum-picker-background-color-disabled", + "--spectrum-picker-background-color-hover", + "--spectrum-picker-background-color-hover-open", + "--spectrum-picker-background-color-key-focus", + "--spectrum-picker-block-size", + "--spectrum-picker-border-color-active", + "--spectrum-picker-border-color-default", + "--spectrum-picker-border-color-default-open", + "--spectrum-picker-border-color-error-active", + "--spectrum-picker-border-color-error-default", + "--spectrum-picker-border-color-error-default-open", + "--spectrum-picker-border-color-error-hover", + "--spectrum-picker-border-color-error-hover-open", + "--spectrum-picker-border-color-error-key-focus", + "--spectrum-picker-border-color-hover", + "--spectrum-picker-border-color-hover-open", + "--spectrum-picker-border-color-key-focus", + "--spectrum-picker-border-radius", + "--spectrum-picker-border-width", + "--spectrum-picker-end-edge-to-disclousure-icon-quiet", + "--spectrum-picker-focus-indicator-color", + "--spectrum-picker-focus-indicator-gap", + "--spectrum-picker-focus-indicator-thickness", + "--spectrum-picker-font-color-active", + "--spectrum-picker-font-color-default", + "--spectrum-picker-font-color-default-open", + "--spectrum-picker-font-color-disabled", + "--spectrum-picker-font-color-hover", + "--spectrum-picker-font-color-hover-open", + "--spectrum-picker-font-color-key-focus", + "--spectrum-picker-font-size", + "--spectrum-picker-font-weight", + "--spectrum-picker-icon-color-active", + "--spectrum-picker-icon-color-default", + "--spectrum-picker-icon-color-default-open", + "--spectrum-picker-icon-color-disabled", + "--spectrum-picker-icon-color-error", + "--spectrum-picker-icon-color-hover", + "--spectrum-picker-icon-color-hover-open", + "--spectrum-picker-icon-color-key-focus", + "--spectrum-picker-inline-size", + "--spectrum-picker-line-height", + "--spectrum-picker-minimum-width-multiplier", + "--spectrum-picker-placeholder-font-style", + "--spectrum-picker-spacing-bottom-to-text", + "--spectrum-picker-spacing-edge-to-disclosure-icon", + "--spectrum-picker-spacing-edge-to-disclosure-icon-quiet", + "--spectrum-picker-spacing-edge-to-text", + "--spectrum-picker-spacing-edge-to-text-quiet", + "--spectrum-picker-spacing-icon-to-disclosure-icon", + "--spectrum-picker-spacing-label-to-picker", + "--spectrum-picker-spacing-label-to-picker-quiet", + "--spectrum-picker-spacing-picker-to-popover", + "--spectrum-picker-spacing-text-to-icon", + "--spectrum-picker-spacing-text-to-icon-inline-end", + "--spectrum-picker-spacing-top-to-alert-icon", + "--spectrum-picker-spacing-top-to-disclosure-icon", + "--spectrum-picker-spacing-top-to-progress-circle", + "--spectrum-picker-spacing-top-to-text", + "--spectrum-picker-visual-to-disclosure-icon-extra-large", + "--spectrum-picker-visual-to-disclosure-icon-large", + "--spectrum-picker-visual-to-disclosure-icon-medium", + "--spectrum-picker-visual-to-disclosure-icon-small", + "--spectrum-regular-font-weight", + "--spectrum-sans-font-family-stack", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-75" + ], + "system": [ + "--system-spectrum-picker-background-color-active", + "--system-spectrum-picker-background-color-default", + "--system-spectrum-picker-background-color-default-open", + "--system-spectrum-picker-background-color-hover", + "--system-spectrum-picker-background-color-hover-open", + "--system-spectrum-picker-background-color-key-focus", + "--system-spectrum-picker-border-color-active", + "--system-spectrum-picker-border-color-default", + "--system-spectrum-picker-border-color-default-open", + "--system-spectrum-picker-border-color-hover", + "--system-spectrum-picker-border-color-hover-open", + "--system-spectrum-picker-border-color-key-focus", + "--system-spectrum-picker-border-width" + ], + "a11y": [ + "--highcontrast-picker-background-color", + "--highcontrast-picker-border-color-default", + "--highcontrast-picker-border-color-disabled", + "--highcontrast-picker-border-color-hover", + "--highcontrast-picker-content-color-default", + "--highcontrast-picker-content-color-disabled", + "--highcontrast-picker-focus-indicator-color" + ] +} diff --git a/components/picker/package.json b/components/picker/package.json new file mode 100644 index 0000000000..da846a0d40 --- /dev/null +++ b/components/picker/package.json @@ -0,0 +1,58 @@ +{ + "name": "@spectrum-css/picker", + "version": "8.1.4", + "description": "The Spectrum CSS picker component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/picker", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/picker" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/helptext": ">=5", + "@spectrum-css/icon": ">=7", + "@spectrum-css/menu": ">=7", + "@spectrum-css/popover": ">=7", + "@spectrum-css/progresscircle": ">=3", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/helptext": { + "optional": true + }, + "@spectrum-css/progresscircle": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/commons": "workspace:^", + "@spectrum-css/helptext": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/menu": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/progresscircle": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/picker/template.js b/components/picker/template.js new file mode 100644 index 0000000000..d0912992d2 --- /dev/null +++ b/components/picker/template.js @@ -0,0 +1,188 @@ +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { Template as HelpText } from "@spectrum-css/helptext/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as Popover } from "@spectrum-css/popover/stories/template.js"; +import { Template as ProgressCircle } from "@spectrum-css/progresscircle/stories/template.js"; +import { Template as Switch } from "@spectrum-css/switch/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Picker = ({ + rootClass = "spectrum-Picker", + size = "m", + labelPosition, + placeholder, + isQuiet = false, + isKeyboardFocused = false, + isOpen = false, + isInvalid = false, + isLoading = false, + isDisabled = false, + customClasses = [], + customStyles = {}, +} = {}, context = {}) => { + return html` + + `; +}; + +export const Template = ({ + rootClass = "spectrum-Picker", + size = "m", + label, + labelPosition = "top", + placeholder, + helpText, + isQuiet = false, + isKeyboardFocused = false, + isOpen = false, + isInvalid = false, + isLoading = false, + isDisabled = false, + isReadOnly = false, + withSwitch = false, + fieldLabelStyle = {}, + customClasses = [], + customStyles = {}, + customPopoverStyles = {}, + content = [], + id, +} = {}, context = {}) => { + let iconName = "ChevronDown200"; + switch (size) { + case "s": + iconName = "ChevronDown75"; + break; + case "m": + iconName = "ChevronDown100"; + break; + case "xl": + iconName = "ChevronDown300"; + break; + default: + iconName = "ChevronDown200"; + } + + return html` + ${when(label, () => + FieldLabel({ + size, + label, + isDisabled, + customStyles: fieldLabelStyle, + alignment: labelPosition, + }, context) + )} + ${labelPosition == "left" ? + html`
    + ${Picker({ + rootClass, + size, + placeholder, + isQuiet, + isKeyboardFocused, + isOpen, + isInvalid, + isLoading, + isDisabled, + isReadOnly, + customClasses, + customStyles, + content, + iconName, + labelPosition, + id, + }, context)} +
    + ` + : + Picker({ + rootClass, + size, + placeholder, + isQuiet, + isKeyboardFocused, + isOpen, + isInvalid, + isLoading, + isDisabled, + isReadOnly, + customClasses, + customStyles, + content, + iconName, + labelPosition, + id, + }, context) + } + ${when(helpText, () => + HelpText({ + text: helpText, + variant: isInvalid ? "negative" : "neutral", + hideIcon: true, + }, context) + )} + ${when(content.length !== 0, () => + Popover({ + isOpen: isOpen && !isDisabled, + withTip: false, + position: "bottom", + isQuiet, + customStyles: customPopoverStyles, + content, + }, context) + )} + ${when(withSwitch, () => Switch({ + size, + label: "Toggle switch", + customStyles: { + "padding-inline-start": "15px" + } + }, context))} + `; +}; diff --git a/components/picker/themes/express.css b/components/picker/themes/express.css new file mode 100644 index 0000000000..df82ca3978 --- /dev/null +++ b/components/picker/themes/express.css @@ -0,0 +1,29 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-400); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-picker-border-color-default: transparent; + --system-spectrum-picker-border-color-default-open: transparent; + --system-spectrum-picker-border-color-hover: transparent; + --system-spectrum-picker-border-color-hover-open: transparent; + --system-spectrum-picker-border-color-active: transparent; + --system-spectrum-picker-border-color-key-focus: transparent; + --system-spectrum-picker-border-width: 0px; +} +/*# sourceMappingURL=components/picker/themes/express.css.map */ diff --git a/components/picker/themes/spectrum.css b/components/picker/themes/spectrum.css new file mode 100644 index 0000000000..b487e4a637 --- /dev/null +++ b/components/picker/themes/spectrum.css @@ -0,0 +1,29 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-picker-background-color-default: var(--spectrum-gray-75); + --system-spectrum-picker-background-color-default-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-active: var(--spectrum-gray-300); + --system-spectrum-picker-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-hover-open: var(--spectrum-gray-200); + --system-spectrum-picker-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-picker-border-color-default: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-default-open: var(--spectrum-gray-500); + --system-spectrum-picker-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-hover-open: var(--spectrum-gray-600); + --system-spectrum-picker-border-color-active: var(--spectrum-gray-700); + --system-spectrum-picker-border-color-key-focus: var(--spectrum-gray-600); + --system-spectrum-picker-border-width: var(--spectrum-border-width-100); +} +/*# sourceMappingURL=components/picker/themes/spectrum.css.map */ diff --git a/components/pickerbutton/index-base.css b/components/pickerbutton/index-base.css new file mode 100644 index 0000000000..6de24cf39f --- /dev/null +++ b/components/pickerbutton/index-base.css @@ -0,0 +1,207 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-PickerButton { + --spectrum-picker-button-height: var(--spectrum-component-height-100); + --spectrum-picker-button-width: var(--spectrum-component-height-100); + --spectrum-picker-button-gap: var(--spectrum-text-to-visual-50); + --spectrum-picker-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-50); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-100); + --spectrum-picker-button-border-radius-rounded: var(--spectrum-corner-radius-200); + --spectrum-picker-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-picker-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-picker-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-button-font-color: var(--spectrum-neutral-content-color-default); + --spectrum-picker-button-font-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-button-font-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-picker-button-font-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-button-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-picker-button-font-style: var(--spectrum-default-font-style); + --spectrum-picker-button-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-picker-button-font-size: var(--spectrum-font-size-100); + --spectrum-picker-button-background-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-PickerButton:disabled { + --mod-picker-button-background-color: var(--mod-picker-button-background-color-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-background-color-hover: var(--mod-picker-button-background-color-hover-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-background-color-down: var(--mod-picker-button-background-color-down-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-border-color: var(--mod-picker-button-border-color-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-font-color: var(--mod-picker-button-font-color-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-font-color-hover: var(--mod-picker-button-font-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-font-color-down: var(--mod-picker-button-font-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color: var(--mod-picker-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color-hover: var(--mod-picker-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color-down: var(--mod-picker-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); +} +.spectrum-PickerButton.spectrum-PickerButton--quiet { + --mod-picker-button-background-color: var(--mod-picker-button-background-color-quiet, transparent); + --mod-picker-button-background-color-hover: var(--mod-picker-button-background-color-hover-quiet, transparent); + --mod-picker-button-background-color-down: var(--mod-picker-button-background-color-down-quiet, transparent); + --mod-picker-button-background-color-key-focus: var(--mod-picker-button-background-color-key-focus-quiet, transparent); + --mod-picker-button-border-color: var(--mod-picker-button-border-color-quiet, transparent); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeS { + --spectrum-picker-button-height: var(--spectrum-component-height-75); + --spectrum-picker-button-width: var(--spectrum-component-height-75); + --spectrum-picker-button-label-padding: var(--spectrum-spacing-75); + --spectrum-picker-button-font-size: var(--spectrum-font-size-75); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-75); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeL { + --spectrum-picker-button-height: var(--spectrum-component-height-200); + --spectrum-picker-button-width: var(--spectrum-component-height-200); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-200); + --spectrum-picker-button-font-size: var(--spectrum-font-size-200); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-200); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeXL { + --spectrum-picker-button-height: var(--spectrum-component-height-300); + --spectrum-picker-button-width: var(--spectrum-component-height-300); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-300); + --spectrum-picker-button-font-size: var(--spectrum-font-size-300); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-300); +} +.spectrum-PickerButton { + border-style: none; + background-color: initial; + block-size: var(--mod-picker-button-width, var(--spectrum-picker-button-width)); + display: flex; + justify-content: center; + align-items: center; + box-sizing: border-box; + padding: var(--mod-picker-button-padding, var(--spectrum-picker-button-padding)); +} +@media (hover: hover) { + .spectrum-PickerButton:hover .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-hover, var(--spectrum-picker-button-background-color-hover)); + } + .spectrum-PickerButton:hover .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-hover, var(--spectrum-picker-button-font-color-hover)); + } + .spectrum-PickerButton:hover .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-hover, var(--spectrum-picker-button-icon-color-hover)); + } +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-fill, +.spectrum-PickerButton:active .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-down, var(--spectrum-picker-button-background-color-down)); +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-label, +.spectrum-PickerButton:active .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-down, var(--spectrum-picker-button-font-color-down)); +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-icon, +.spectrum-PickerButton:active .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-down, var(--spectrum-picker-button-icon-color-down)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-fill, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-fill, +.spectrum-PickerButton:focus .spectrum-PickerButton-fill, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-key-focus, var(--spectrum-picker-button-background-color-key-focus)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-label, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-label, +.spectrum-PickerButton:focus .spectrum-PickerButton-label, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-key-focus, var(--spectrum-picker-button-font-color-key-focus)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-icon, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-icon, +.spectrum-PickerButton:focus .spectrum-PickerButton-icon, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-key-focus, var(--spectrum-picker-button-icon-color-key-focus)); +} +.spectrum-PickerButton--right .spectrum-PickerButton-fill { + border-end-start-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); + border-start-start-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); +} +.spectrum-PickerButton--right.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-start-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); + border-start-start-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); +} +.spectrum-PickerButton--left .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); + border-start-end-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); +} +.spectrum-PickerButton--left.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); + border-start-end-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); +} +.spectrum-PickerButton-label { + flex: 1 1 auto; + color: var(--mod-picker-button-font-color, var(--spectrum-picker-button-font-color)); + white-space: nowrap; + overflow: hidden; + padding-block-end: var(--mod-picker-button-label-padding, var(--spectrum-picker-button-label-padding)); + padding-block-start: var(--mod-picker-button-label-padding, var(--spectrum-picker-button-label-padding)); + font-family: var(--mod-picker-button-font-family, var(--spectrum-picker-button-font-family)); + font-style: var(--mod-picker-button-font-style, var(--spectrum-picker-button-font-style)); + font-weight: var(--mod-picker-button-font-weight, var(--spectrum-picker-button-font-weight)); + font-size: var(--mod-picker-button-font-size, var(--spectrum-picker-button-font-size)); +} +.spectrum-PickerButton-fill { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + block-size: 100%; + inline-size: 100%; + gap: var(--mod-picker-button-gap, var(--spectrum-picker-button-gap)); + background-color: var(--mod-picker-button-background-color, var(--spectrum-picker-button-background-color)); + border-color: var(--mod-picker-button-border-color, var(--spectrum-picker-button-border-color)); + border-width: var(--mod-picker-button-border-width, var(--spectrum-picker-button-border-width)); + border-style: solid; + padding: calc(var(--mod-picker-button-fill-padding, var(--spectrum-picker-button-fill-padding)) - var(--mod-picker-button-padding, var(--spectrum-picker-button-padding)) - var(--mod-picker-button-border-width, var(--spectrum-picker-button-border-width))); + border-end-end-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-end-start-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-start-end-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-start-start-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + transition: border-color var(--mod-picker-button-background-animation-duration, var(--spectrum-picker-button-background-animation-duration)) ease-in-out; +} +.spectrum-PickerButton-icon { + flex-shrink: 0; + color: var(--mod-picker-button-icon-color, var(--spectrum-picker-button-icon-color)); +} +.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-end-start-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-start-end-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-start-start-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); +} +.spectrum-PickerButton--uiicononly { + inline-size: var(--mod-picker-button-height, var(--spectrum-picker-button-height)); +} +.spectrum-PickerButton--uiicononly .spectrum-PickerButton-label { + display: none; +} +.spectrum-PickerButton--uiicononly .spectrum-PickerButton-fill { + padding: 0; +} +.spectrum-PickerButton--textuiicon .spectrum-PickerButton-fill { + inline-size: auto; +} +.spectrum-PickerButton { + --spectrum-picker-button-background-color: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color); + --spectrum-picker-button-background-color-hover: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover); + --spectrum-picker-button-background-color-down: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-down); + --spectrum-picker-button-background-color-key-focus: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus); + --spectrum-picker-button-border-color: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-color); + --spectrum-picker-button-border-radius: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius); + --spectrum-picker-button-border-radius-rounded-sided: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided); + --spectrum-picker-button-border-radius-sided: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided); + --spectrum-picker-button-border-width: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-width); +} +/*# sourceMappingURL=components/pickerbutton/index.css.map */ diff --git a/components/pickerbutton/index-theme.css b/components/pickerbutton/index-theme.css new file mode 100644 index 0000000000..5625625d9e --- /dev/null +++ b/components/pickerbutton/index-theme.css @@ -0,0 +1,36 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-75); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: inherit; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: none; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: var(--spectrum-corner-radius-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: 0px; +} +/*# sourceMappingURL=components/pickerbutton/themes/express.css.map */ diff --git a/components/pickerbutton/index-vars.css b/components/pickerbutton/index-vars.css new file mode 100644 index 0000000000..983c119e1b --- /dev/null +++ b/components/pickerbutton/index-vars.css @@ -0,0 +1,229 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-75); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: inherit; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: none; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: var(--spectrum-corner-radius-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: 0px; +} +.spectrum-PickerButton { + --spectrum-picker-button-height: var(--spectrum-component-height-100); + --spectrum-picker-button-width: var(--spectrum-component-height-100); + --spectrum-picker-button-gap: var(--spectrum-text-to-visual-50); + --spectrum-picker-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-50); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-100); + --spectrum-picker-button-border-radius-rounded: var(--spectrum-corner-radius-200); + --spectrum-picker-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-picker-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-picker-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-button-font-color: var(--spectrum-neutral-content-color-default); + --spectrum-picker-button-font-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-button-font-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-picker-button-font-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-button-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-picker-button-font-style: var(--spectrum-default-font-style); + --spectrum-picker-button-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-picker-button-font-size: var(--spectrum-font-size-100); + --spectrum-picker-button-background-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-PickerButton:disabled { + --mod-picker-button-background-color: var(--mod-picker-button-background-color-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-background-color-hover: var(--mod-picker-button-background-color-hover-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-background-color-down: var(--mod-picker-button-background-color-down-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-border-color: var(--mod-picker-button-border-color-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-font-color: var(--mod-picker-button-font-color-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-font-color-hover: var(--mod-picker-button-font-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-font-color-down: var(--mod-picker-button-font-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color: var(--mod-picker-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color-hover: var(--mod-picker-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color-down: var(--mod-picker-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); +} +.spectrum-PickerButton.spectrum-PickerButton--quiet { + --mod-picker-button-background-color: var(--mod-picker-button-background-color-quiet, transparent); + --mod-picker-button-background-color-hover: var(--mod-picker-button-background-color-hover-quiet, transparent); + --mod-picker-button-background-color-down: var(--mod-picker-button-background-color-down-quiet, transparent); + --mod-picker-button-background-color-key-focus: var(--mod-picker-button-background-color-key-focus-quiet, transparent); + --mod-picker-button-border-color: var(--mod-picker-button-border-color-quiet, transparent); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeS { + --spectrum-picker-button-height: var(--spectrum-component-height-75); + --spectrum-picker-button-width: var(--spectrum-component-height-75); + --spectrum-picker-button-label-padding: var(--spectrum-spacing-75); + --spectrum-picker-button-font-size: var(--spectrum-font-size-75); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-75); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeL { + --spectrum-picker-button-height: var(--spectrum-component-height-200); + --spectrum-picker-button-width: var(--spectrum-component-height-200); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-200); + --spectrum-picker-button-font-size: var(--spectrum-font-size-200); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-200); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeXL { + --spectrum-picker-button-height: var(--spectrum-component-height-300); + --spectrum-picker-button-width: var(--spectrum-component-height-300); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-300); + --spectrum-picker-button-font-size: var(--spectrum-font-size-300); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-300); +} +.spectrum-PickerButton { + border-style: none; + background-color: initial; + block-size: var(--mod-picker-button-width, var(--spectrum-picker-button-width)); + display: flex; + justify-content: center; + align-items: center; + box-sizing: border-box; + padding: var(--mod-picker-button-padding, var(--spectrum-picker-button-padding)); +} +@media (hover: hover) { + .spectrum-PickerButton:hover .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-hover, var(--spectrum-picker-button-background-color-hover)); + } + .spectrum-PickerButton:hover .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-hover, var(--spectrum-picker-button-font-color-hover)); + } + .spectrum-PickerButton:hover .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-hover, var(--spectrum-picker-button-icon-color-hover)); + } +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-fill, +.spectrum-PickerButton:active .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-down, var(--spectrum-picker-button-background-color-down)); +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-label, +.spectrum-PickerButton:active .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-down, var(--spectrum-picker-button-font-color-down)); +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-icon, +.spectrum-PickerButton:active .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-down, var(--spectrum-picker-button-icon-color-down)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-fill, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-fill, +.spectrum-PickerButton:focus .spectrum-PickerButton-fill, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-key-focus, var(--spectrum-picker-button-background-color-key-focus)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-label, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-label, +.spectrum-PickerButton:focus .spectrum-PickerButton-label, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-key-focus, var(--spectrum-picker-button-font-color-key-focus)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-icon, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-icon, +.spectrum-PickerButton:focus .spectrum-PickerButton-icon, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-key-focus, var(--spectrum-picker-button-icon-color-key-focus)); +} +.spectrum-PickerButton--right .spectrum-PickerButton-fill { + border-end-start-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); + border-start-start-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); +} +.spectrum-PickerButton--right.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-start-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); + border-start-start-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); +} +.spectrum-PickerButton--left .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); + border-start-end-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); +} +.spectrum-PickerButton--left.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); + border-start-end-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); +} +.spectrum-PickerButton-label { + flex: 1 1 auto; + color: var(--mod-picker-button-font-color, var(--spectrum-picker-button-font-color)); + white-space: nowrap; + overflow: hidden; + padding-block-end: var(--mod-picker-button-label-padding, var(--spectrum-picker-button-label-padding)); + padding-block-start: var(--mod-picker-button-label-padding, var(--spectrum-picker-button-label-padding)); + font-family: var(--mod-picker-button-font-family, var(--spectrum-picker-button-font-family)); + font-style: var(--mod-picker-button-font-style, var(--spectrum-picker-button-font-style)); + font-weight: var(--mod-picker-button-font-weight, var(--spectrum-picker-button-font-weight)); + font-size: var(--mod-picker-button-font-size, var(--spectrum-picker-button-font-size)); +} +.spectrum-PickerButton-fill { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + block-size: 100%; + inline-size: 100%; + gap: var(--mod-picker-button-gap, var(--spectrum-picker-button-gap)); + background-color: var(--mod-picker-button-background-color, var(--spectrum-picker-button-background-color)); + border-color: var(--mod-picker-button-border-color, var(--spectrum-picker-button-border-color)); + border-width: var(--mod-picker-button-border-width, var(--spectrum-picker-button-border-width)); + border-style: solid; + padding: calc(var(--mod-picker-button-fill-padding, var(--spectrum-picker-button-fill-padding)) - var(--mod-picker-button-padding, var(--spectrum-picker-button-padding)) - var(--mod-picker-button-border-width, var(--spectrum-picker-button-border-width))); + border-end-end-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-end-start-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-start-end-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-start-start-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + transition: border-color var(--mod-picker-button-background-animation-duration, var(--spectrum-picker-button-background-animation-duration)) ease-in-out; +} +.spectrum-PickerButton-icon { + flex-shrink: 0; + color: var(--mod-picker-button-icon-color, var(--spectrum-picker-button-icon-color)); +} +.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-end-start-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-start-end-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-start-start-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); +} +.spectrum-PickerButton--uiicononly { + inline-size: var(--mod-picker-button-height, var(--spectrum-picker-button-height)); +} +.spectrum-PickerButton--uiicononly .spectrum-PickerButton-label { + display: none; +} +.spectrum-PickerButton--uiicononly .spectrum-PickerButton-fill { + padding: 0; +} +.spectrum-PickerButton--textuiicon .spectrum-PickerButton-fill { + inline-size: auto; +} +.spectrum-PickerButton { + --spectrum-picker-button-background-color: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color); + --spectrum-picker-button-background-color-hover: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover); + --spectrum-picker-button-background-color-down: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-down); + --spectrum-picker-button-background-color-key-focus: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus); + --spectrum-picker-button-border-color: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-color); + --spectrum-picker-button-border-radius: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius); + --spectrum-picker-button-border-radius-rounded-sided: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided); + --spectrum-picker-button-border-radius-sided: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided); + --spectrum-picker-button-border-width: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-width); +} +/*# sourceMappingURL=components/pickerbutton/index.css.map */ diff --git a/components/pickerbutton/index.css b/components/pickerbutton/index.css new file mode 100644 index 0000000000..983c119e1b --- /dev/null +++ b/components/pickerbutton/index.css @@ -0,0 +1,229 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-75); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: inherit; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: none; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: var(--spectrum-corner-radius-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: 0px; +} +.spectrum-PickerButton { + --spectrum-picker-button-height: var(--spectrum-component-height-100); + --spectrum-picker-button-width: var(--spectrum-component-height-100); + --spectrum-picker-button-gap: var(--spectrum-text-to-visual-50); + --spectrum-picker-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-50); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-100); + --spectrum-picker-button-border-radius-rounded: var(--spectrum-corner-radius-200); + --spectrum-picker-button-icon-color: var(--spectrum-neutral-content-color-default); + --spectrum-picker-button-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-button-icon-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-picker-button-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-button-font-color: var(--spectrum-neutral-content-color-default); + --spectrum-picker-button-font-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-picker-button-font-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-picker-button-font-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-picker-button-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-picker-button-font-style: var(--spectrum-default-font-style); + --spectrum-picker-button-font-weight: var(--spectrum-body-sans-serif-font-weight); + --spectrum-picker-button-font-size: var(--spectrum-font-size-100); + --spectrum-picker-button-background-animation-duration: var(--spectrum-animation-duration-100); +} +.spectrum-PickerButton:disabled { + --mod-picker-button-background-color: var(--mod-picker-button-background-color-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-background-color-hover: var(--mod-picker-button-background-color-hover-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-background-color-down: var(--mod-picker-button-background-color-down-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-border-color: var(--mod-picker-button-border-color-disabled, var(--spectrum-disabled-background-color)); + --mod-picker-button-font-color: var(--mod-picker-button-font-color-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-font-color-hover: var(--mod-picker-button-font-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-font-color-down: var(--mod-picker-button-font-color-down-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color: var(--mod-picker-button-icon-color-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color-hover: var(--mod-picker-button-icon-color-hover-disabled, var(--spectrum-disabled-content-color)); + --mod-picker-button-icon-color-down: var(--mod-picker-button-icon-color-down-disabled, var(--spectrum-disabled-content-color)); +} +.spectrum-PickerButton.spectrum-PickerButton--quiet { + --mod-picker-button-background-color: var(--mod-picker-button-background-color-quiet, transparent); + --mod-picker-button-background-color-hover: var(--mod-picker-button-background-color-hover-quiet, transparent); + --mod-picker-button-background-color-down: var(--mod-picker-button-background-color-down-quiet, transparent); + --mod-picker-button-background-color-key-focus: var(--mod-picker-button-background-color-key-focus-quiet, transparent); + --mod-picker-button-border-color: var(--mod-picker-button-border-color-quiet, transparent); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeS { + --spectrum-picker-button-height: var(--spectrum-component-height-75); + --spectrum-picker-button-width: var(--spectrum-component-height-75); + --spectrum-picker-button-label-padding: var(--spectrum-spacing-75); + --spectrum-picker-button-font-size: var(--spectrum-font-size-75); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-75); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeL { + --spectrum-picker-button-height: var(--spectrum-component-height-200); + --spectrum-picker-button-width: var(--spectrum-component-height-200); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-200); + --spectrum-picker-button-font-size: var(--spectrum-font-size-200); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-200); +} +.spectrum-PickerButton.spectrum-PickerButton--sizeXL { + --spectrum-picker-button-height: var(--spectrum-component-height-300); + --spectrum-picker-button-width: var(--spectrum-component-height-300); + --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-300); + --spectrum-picker-button-font-size: var(--spectrum-font-size-300); + --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-300); +} +.spectrum-PickerButton { + border-style: none; + background-color: initial; + block-size: var(--mod-picker-button-width, var(--spectrum-picker-button-width)); + display: flex; + justify-content: center; + align-items: center; + box-sizing: border-box; + padding: var(--mod-picker-button-padding, var(--spectrum-picker-button-padding)); +} +@media (hover: hover) { + .spectrum-PickerButton:hover .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-hover, var(--spectrum-picker-button-background-color-hover)); + } + .spectrum-PickerButton:hover .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-hover, var(--spectrum-picker-button-font-color-hover)); + } + .spectrum-PickerButton:hover .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-hover, var(--spectrum-picker-button-icon-color-hover)); + } +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-fill, +.spectrum-PickerButton:active .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-down, var(--spectrum-picker-button-background-color-down)); +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-label, +.spectrum-PickerButton:active .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-down, var(--spectrum-picker-button-font-color-down)); +} +.spectrum-PickerButton.is-open .spectrum-PickerButton-icon, +.spectrum-PickerButton:active .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-down, var(--spectrum-picker-button-icon-color-down)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-fill, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-fill, +.spectrum-PickerButton:focus .spectrum-PickerButton-fill, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-fill { + background-color: var(--mod-picker-button-background-color-key-focus, var(--spectrum-picker-button-background-color-key-focus)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-label, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-label, +.spectrum-PickerButton:focus .spectrum-PickerButton-label, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-label { + color: var(--mod-picker-button-font-color-key-focus, var(--spectrum-picker-button-font-color-key-focus)); +} +.spectrum-PickerButton.is-focused .spectrum-PickerButton-icon, +.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-icon, +.spectrum-PickerButton:focus .spectrum-PickerButton-icon, +.spectrum-PickerButton:focus-visible .spectrum-PickerButton-icon { + color: var(--mod-picker-button-icon-color-key-focus, var(--spectrum-picker-button-icon-color-key-focus)); +} +.spectrum-PickerButton--right .spectrum-PickerButton-fill { + border-end-start-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); + border-start-start-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); +} +.spectrum-PickerButton--right.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-start-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); + border-start-start-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); +} +.spectrum-PickerButton--left .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); + border-start-end-radius: var(--mod-picker-button-border-radius-sided, var(--spectrum-picker-button-border-radius-sided)); +} +.spectrum-PickerButton--left.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); + border-start-end-radius: var(--mod-picker-button-border-radius-rounded-sided, var(--spectrum-picker-button-border-radius-rounded-sided)); +} +.spectrum-PickerButton-label { + flex: 1 1 auto; + color: var(--mod-picker-button-font-color, var(--spectrum-picker-button-font-color)); + white-space: nowrap; + overflow: hidden; + padding-block-end: var(--mod-picker-button-label-padding, var(--spectrum-picker-button-label-padding)); + padding-block-start: var(--mod-picker-button-label-padding, var(--spectrum-picker-button-label-padding)); + font-family: var(--mod-picker-button-font-family, var(--spectrum-picker-button-font-family)); + font-style: var(--mod-picker-button-font-style, var(--spectrum-picker-button-font-style)); + font-weight: var(--mod-picker-button-font-weight, var(--spectrum-picker-button-font-weight)); + font-size: var(--mod-picker-button-font-size, var(--spectrum-picker-button-font-size)); +} +.spectrum-PickerButton-fill { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + block-size: 100%; + inline-size: 100%; + gap: var(--mod-picker-button-gap, var(--spectrum-picker-button-gap)); + background-color: var(--mod-picker-button-background-color, var(--spectrum-picker-button-background-color)); + border-color: var(--mod-picker-button-border-color, var(--spectrum-picker-button-border-color)); + border-width: var(--mod-picker-button-border-width, var(--spectrum-picker-button-border-width)); + border-style: solid; + padding: calc(var(--mod-picker-button-fill-padding, var(--spectrum-picker-button-fill-padding)) - var(--mod-picker-button-padding, var(--spectrum-picker-button-padding)) - var(--mod-picker-button-border-width, var(--spectrum-picker-button-border-width))); + border-end-end-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-end-start-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-start-end-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + border-start-start-radius: var(--mod-picker-button-border-radius, var(--spectrum-picker-button-border-radius)); + transition: border-color var(--mod-picker-button-background-animation-duration, var(--spectrum-picker-button-background-animation-duration)) ease-in-out; +} +.spectrum-PickerButton-icon { + flex-shrink: 0; + color: var(--mod-picker-button-icon-color, var(--spectrum-picker-button-icon-color)); +} +.spectrum-PickerButton--rounded .spectrum-PickerButton-fill { + border-end-end-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-end-start-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-start-end-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); + border-start-start-radius: var(--mod-picker-button-border-radius-rounded, var(--spectrum-picker-button-border-radius-rounded)); +} +.spectrum-PickerButton--uiicononly { + inline-size: var(--mod-picker-button-height, var(--spectrum-picker-button-height)); +} +.spectrum-PickerButton--uiicononly .spectrum-PickerButton-label { + display: none; +} +.spectrum-PickerButton--uiicononly .spectrum-PickerButton-fill { + padding: 0; +} +.spectrum-PickerButton--textuiicon .spectrum-PickerButton-fill { + inline-size: auto; +} +.spectrum-PickerButton { + --spectrum-picker-button-background-color: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color); + --spectrum-picker-button-background-color-hover: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover); + --spectrum-picker-button-background-color-down: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-down); + --spectrum-picker-button-background-color-key-focus: var(--system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus); + --spectrum-picker-button-border-color: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-color); + --spectrum-picker-button-border-radius: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius); + --spectrum-picker-button-border-radius-rounded-sided: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided); + --spectrum-picker-button-border-radius-sided: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided); + --spectrum-picker-button-border-width: var(--system-spectrum-pickerbutton-spectrum-picker-button-border-width); +} +/*# sourceMappingURL=components/pickerbutton/index.css.map */ diff --git a/components/pickerbutton/metadata.json b/components/pickerbutton/metadata.json new file mode 100644 index 0000000000..72ae530125 --- /dev/null +++ b/components/pickerbutton/metadata.json @@ -0,0 +1,157 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-PickerButton", + ".spectrum-PickerButton--left .spectrum-PickerButton-fill", + ".spectrum-PickerButton--left.spectrum-PickerButton--rounded .spectrum-PickerButton-fill", + ".spectrum-PickerButton--right .spectrum-PickerButton-fill", + ".spectrum-PickerButton--right.spectrum-PickerButton--rounded .spectrum-PickerButton-fill", + ".spectrum-PickerButton--rounded .spectrum-PickerButton-fill", + ".spectrum-PickerButton--textuiicon .spectrum-PickerButton-fill", + ".spectrum-PickerButton--uiicononly", + ".spectrum-PickerButton--uiicononly .spectrum-PickerButton-fill", + ".spectrum-PickerButton--uiicononly .spectrum-PickerButton-label", + ".spectrum-PickerButton-fill", + ".spectrum-PickerButton-icon", + ".spectrum-PickerButton-label", + ".spectrum-PickerButton.is-focused .spectrum-PickerButton-fill,\n.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-fill,\n.spectrum-PickerButton:focus .spectrum-PickerButton-fill,\n.spectrum-PickerButton:focus-visible .spectrum-PickerButton-fill", + ".spectrum-PickerButton.is-focused .spectrum-PickerButton-icon,\n.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-icon,\n.spectrum-PickerButton:focus .spectrum-PickerButton-icon,\n.spectrum-PickerButton:focus-visible .spectrum-PickerButton-icon", + ".spectrum-PickerButton.is-focused .spectrum-PickerButton-label,\n.spectrum-PickerButton.is-keyboardFocused .spectrum-PickerButton-label,\n.spectrum-PickerButton:focus .spectrum-PickerButton-label,\n.spectrum-PickerButton:focus-visible .spectrum-PickerButton-label", + ".spectrum-PickerButton.is-open .spectrum-PickerButton-fill,\n.spectrum-PickerButton:active .spectrum-PickerButton-fill", + ".spectrum-PickerButton.is-open .spectrum-PickerButton-icon,\n.spectrum-PickerButton:active .spectrum-PickerButton-icon", + ".spectrum-PickerButton.is-open .spectrum-PickerButton-label,\n.spectrum-PickerButton:active .spectrum-PickerButton-label", + ".spectrum-PickerButton.spectrum-PickerButton--quiet", + ".spectrum-PickerButton.spectrum-PickerButton--sizeL", + ".spectrum-PickerButton.spectrum-PickerButton--sizeS", + ".spectrum-PickerButton.spectrum-PickerButton--sizeXL", + ".spectrum-PickerButton:disabled", + ".spectrum-PickerButton:hover .spectrum-PickerButton-fill", + ".spectrum-PickerButton:hover .spectrum-PickerButton-icon", + ".spectrum-PickerButton:hover .spectrum-PickerButton-label" + ], + "mods": [ + "--mod-picker-button-background-animation-duration", + "--mod-picker-button-background-color", + "--mod-picker-button-background-color-disabled", + "--mod-picker-button-background-color-down", + "--mod-picker-button-background-color-down-disabled", + "--mod-picker-button-background-color-down-quiet", + "--mod-picker-button-background-color-hover", + "--mod-picker-button-background-color-hover-disabled", + "--mod-picker-button-background-color-hover-quiet", + "--mod-picker-button-background-color-key-focus", + "--mod-picker-button-background-color-key-focus-quiet", + "--mod-picker-button-background-color-quiet", + "--mod-picker-button-border-color", + "--mod-picker-button-border-color-disabled", + "--mod-picker-button-border-color-quiet", + "--mod-picker-button-border-radius", + "--mod-picker-button-border-radius-rounded", + "--mod-picker-button-border-radius-rounded-sided", + "--mod-picker-button-border-radius-sided", + "--mod-picker-button-border-width", + "--mod-picker-button-fill-padding", + "--mod-picker-button-font-color", + "--mod-picker-button-font-color-disabled", + "--mod-picker-button-font-color-down", + "--mod-picker-button-font-color-down-disabled", + "--mod-picker-button-font-color-hover", + "--mod-picker-button-font-color-hover-disabled", + "--mod-picker-button-font-color-key-focus", + "--mod-picker-button-font-family", + "--mod-picker-button-font-size", + "--mod-picker-button-font-style", + "--mod-picker-button-font-weight", + "--mod-picker-button-gap", + "--mod-picker-button-height", + "--mod-picker-button-icon-color", + "--mod-picker-button-icon-color-disabled", + "--mod-picker-button-icon-color-down", + "--mod-picker-button-icon-color-down-disabled", + "--mod-picker-button-icon-color-hover", + "--mod-picker-button-icon-color-hover-disabled", + "--mod-picker-button-icon-color-key-focus", + "--mod-picker-button-label-padding", + "--mod-picker-button-padding", + "--mod-picker-button-width" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-body-sans-serif-font-weight", + "--spectrum-border-width-100", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-corner-radius-100", + "--spectrum-corner-radius-200", + "--spectrum-corner-radius-75", + "--spectrum-default-font-style", + "--spectrum-disabled-background-color", + "--spectrum-disabled-content-color", + "--spectrum-field-edge-to-disclosure-icon-100", + "--spectrum-field-edge-to-disclosure-icon-200", + "--spectrum-field-edge-to-disclosure-icon-300", + "--spectrum-field-edge-to-disclosure-icon-75", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-75", + "--spectrum-in-field-button-edge-to-fill", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-picker-button-background-animation-duration", + "--spectrum-picker-button-background-color", + "--spectrum-picker-button-background-color-down", + "--spectrum-picker-button-background-color-hover", + "--spectrum-picker-button-background-color-key-focus", + "--spectrum-picker-button-border-color", + "--spectrum-picker-button-border-radius", + "--spectrum-picker-button-border-radius-rounded", + "--spectrum-picker-button-border-radius-rounded-sided", + "--spectrum-picker-button-border-radius-sided", + "--spectrum-picker-button-border-width", + "--spectrum-picker-button-fill-padding", + "--spectrum-picker-button-font-color", + "--spectrum-picker-button-font-color-down", + "--spectrum-picker-button-font-color-hover", + "--spectrum-picker-button-font-color-key-focus", + "--spectrum-picker-button-font-family", + "--spectrum-picker-button-font-size", + "--spectrum-picker-button-font-style", + "--spectrum-picker-button-font-weight", + "--spectrum-picker-button-gap", + "--spectrum-picker-button-height", + "--spectrum-picker-button-icon-color", + "--spectrum-picker-button-icon-color-down", + "--spectrum-picker-button-icon-color-hover", + "--spectrum-picker-button-icon-color-key-focus", + "--spectrum-picker-button-label-padding", + "--spectrum-picker-button-padding", + "--spectrum-picker-button-width", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-75", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-50" + ], + "system": [ + "--system-spectrum-pickerbutton-spectrum-picker-button-background-color", + "--system-spectrum-pickerbutton-spectrum-picker-button-background-color-down", + "--system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover", + "--system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus", + "--system-spectrum-pickerbutton-spectrum-picker-button-border-color", + "--system-spectrum-pickerbutton-spectrum-picker-button-border-radius", + "--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided", + "--system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided", + "--system-spectrum-pickerbutton-spectrum-picker-button-border-width" + ], + "a11y": [] +} diff --git a/components/pickerbutton/package.json b/components/pickerbutton/package.json new file mode 100644 index 0000000000..25e53e82d0 --- /dev/null +++ b/components/pickerbutton/package.json @@ -0,0 +1,45 @@ +{ + "name": "@spectrum-css/pickerbutton", + "version": "5.1.1", + "description": "The Spectrum CSS picker button component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/pickerbutton", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/pickerbutton" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/menu": ">=7", + "@spectrum-css/popover": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/menu": "workspace:^", + "@spectrum-css/popover": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/pickerbutton/template.js b/components/pickerbutton/template.js new file mode 100644 index 0000000000..2c60d260e4 --- /dev/null +++ b/components/pickerbutton/template.js @@ -0,0 +1,71 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + id, + rootClass = "spectrum-PickerButton", + size = "m", + label, + position, + iconType = "ui", + iconName = "ChevronDown", + isDisabled = false, + isFocused = false, + isOpen = false, + isQuiet = false, + customClasses = [], + isRounded = false, + customStyles = {}, + onclick, +} = {}, context = {}) => { + const { updateArgs } = context; + + return html` + + `; +}; diff --git a/components/pickerbutton/themes/express.css b/components/pickerbutton/themes/express.css new file mode 100644 index 0000000000..19c9ffdd22 --- /dev/null +++ b/components/pickerbutton/themes/express.css @@ -0,0 +1,25 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-400); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: none; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: var(--spectrum-corner-radius-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: var(--spectrum-corner-radius-75); + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: 0px; +} +/*# sourceMappingURL=components/pickerbutton/themes/express.css.map */ diff --git a/components/pickerbutton/themes/spectrum.css b/components/pickerbutton/themes/spectrum.css new file mode 100644 index 0000000000..2f37084fb1 --- /dev/null +++ b/components/pickerbutton/themes/spectrum.css @@ -0,0 +1,25 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-pickerbutton-spectrum-picker-button-background-color: var(--spectrum-gray-75); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-hover: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-down: var(--spectrum-gray-300); + --system-spectrum-pickerbutton-spectrum-picker-button-background-color-key-focus: var(--spectrum-gray-200); + --system-spectrum-pickerbutton-spectrum-picker-button-border-color: inherit; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-rounded-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-radius-sided: 0; + --system-spectrum-pickerbutton-spectrum-picker-button-border-width: var(--spectrum-border-width-100); +} +/*# sourceMappingURL=components/pickerbutton/themes/spectrum.css.map */ diff --git a/components/popover/index-base.css b/components/popover/index-base.css new file mode 100644 index 0000000000..a235b72266 --- /dev/null +++ b/components/popover/index-base.css @@ -0,0 +1,286 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Popover { + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: + transform var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + opacity var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)); +} +.spectrum-Popover.is-open { + pointer-events: auto; + visibility: visible; + opacity: 1; + transition-delay: var(--mod-overlay-animation-duration-opened, var(--spectrum-animation-duration-0, 0ms)); +} +.spectrum-Popover { + --flow-direction: 1; + --spectrum-popover-animation-distance: var(--spectrum-spacing-100); + --spectrum-popover-background-color: var(--spectrum-background-layer-2-color); + --spectrum-popover-border-color: var(--spectrum-gray-400); + --spectrum-popover-content-area-spacing-vertical: var(--spectrum-popover-top-to-content-area); + --spectrum-popover-shadow-horizontal: var(--spectrum-drop-shadow-x); + --spectrum-popover-shadow-vertical: var(--spectrum-drop-shadow-y); + --spectrum-popover-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-popover-shadow-color: var(--spectrum-drop-shadow-color); + --spectrum-popover-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-popover-pointer-width: var(--spectrum-popover-tip-width); + --spectrum-popover-pointer-height: var(--spectrum-popover-tip-height); + --spectrum-popover-pointer-edge-offset: calc(var(--spectrum-corner-radius-100) + var(--spectrum-popover-tip-width) / 2); + --spectrum-popover-pointer-edge-spacing: calc(var(--spectrum-popover-pointer-edge-offset) - var(--spectrum-popover-tip-width) / 2); +} +.spectrum-Popover:dir(rtl), +[dir="rtl"] .spectrum-Popover { + --flow-direction: -1; +} +@media (forced-colors: active) { + .spectrum-Popover { + --highcontrast-popover-border-color: CanvasText; + } +} +.spectrum-Popover { + --spectrum-popover-filter: drop-shadow(var(--mod-popover-shadow-horizontal, var(--spectrum-popover-shadow-horizontal)) var(--mod-popover-shadow-vertical, var(--spectrum-popover-shadow-vertical)) var(--mod-popover-shadow-blur, var(--spectrum-popover-shadow-blur)) var(--mod-popover-shadow-color, var(--spectrum-popover-shadow-color))); + box-sizing: border-box; + position: absolute; + outline: none; + padding: var(--mod-popover-content-area-spacing-vertical, var(--spectrum-popover-content-area-spacing-vertical)) 0; + display: inline-flex; + flex-direction: column; + border-style: solid; + border-radius: var(--mod-popover-corner-radius, var(--spectrum-popover-corner-radius)); + border-color: var(--highcontrast-popover-border-color, var(--mod-popover-border-color, var(--spectrum-popover-border-color))); + border-width: var(--mod-popover-border-width, var(--spectrum-popover-border-width)); + background-color: var(--mod-popover-background-color, var(--spectrum-popover-background-color)); + filter: var(--mod-popover-filter, var(--spectrum-popover-filter)); +} +.spectrum-Popover.spectrum-Popover--withTip .spectrum-Popover-tip .spectrum-Popover-tip-triangle { + stroke-linecap: square; + stroke-linejoin: miter; + fill: var(--highcontrast-popover-background-color, var(--mod-popover-background-color, var(--spectrum-popover-background-color))); + stroke: var(--highcontrast-popover-border-color, var(--mod-popover-border-color, var(--spectrum-popover-border-color))); + stroke-width: var(--mod-popover-border-width, var(--spectrum-popover-border-width)); +} +.spectrum-Popover * { + --mod-popover-filter: none; +} +.spectrum-Popover--top-end.spectrum-Popover--withTip, +.spectrum-Popover--top-left.spectrum-Popover--withTip, +.spectrum-Popover--top-right.spectrum-Popover--withTip, +.spectrum-Popover--top-start.spectrum-Popover--withTip, +.spectrum-Popover--top.spectrum-Popover--withTip { + margin-block-end: calc(var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--top-end.is-open, +.spectrum-Popover--top-left.is-open, +.spectrum-Popover--top-right.is-open, +.spectrum-Popover--top-start.is-open, +.spectrum-Popover--top.is-open { + transform: translateY(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--bottom-end.spectrum-Popover--withTip, +.spectrum-Popover--bottom-left.spectrum-Popover--withTip, +.spectrum-Popover--bottom-right.spectrum-Popover--withTip, +.spectrum-Popover--bottom-start.spectrum-Popover--withTip, +.spectrum-Popover--bottom.spectrum-Popover--withTip { + margin-block-start: calc(var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--bottom-end.is-open, +.spectrum-Popover--bottom-left.is-open, +.spectrum-Popover--bottom-right.is-open, +.spectrum-Popover--bottom-start.is-open, +.spectrum-Popover--bottom.is-open { + transform: translateY(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--right-bottom.spectrum-Popover--withTip, +.spectrum-Popover--right-top.spectrum-Popover--withTip, +.spectrum-Popover--right.spectrum-Popover--withTip { + margin-left: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--right-bottom.is-open, +.spectrum-Popover--right-top.is-open, +.spectrum-Popover--right.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--left-bottom.spectrum-Popover--withTip, +.spectrum-Popover--left-top.spectrum-Popover--withTip, +.spectrum-Popover--left.spectrum-Popover--withTip { + margin-right: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--left-bottom.is-open, +.spectrum-Popover--left-top.is-open, +.spectrum-Popover--left.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--start-bottom.spectrum-Popover--withTip, +.spectrum-Popover--start-top.spectrum-Popover--withTip, +.spectrum-Popover--start.spectrum-Popover--withTip { + margin-inline-end: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--start-bottom.is-open, +.spectrum-Popover--start-top.is-open, +.spectrum-Popover--start.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--start-bottom.is-open:dir(rtl), +.spectrum-Popover--start-top.is-open:dir(rtl), +.spectrum-Popover--start.is-open:dir(rtl), +[dir="rtl"] .spectrum-Popover--start-bottom.is-open, +[dir="rtl"] .spectrum-Popover--start-top.is-open, +[dir="rtl"] .spectrum-Popover--start.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--end-bottom.spectrum-Popover--withTip, +.spectrum-Popover--end-top.spectrum-Popover--withTip, +.spectrum-Popover--end.spectrum-Popover--withTip { + margin-inline-start: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--end-bottom.is-open, +.spectrum-Popover--end-top.is-open, +.spectrum-Popover--end.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--end-bottom.is-open:dir(rtl), +.spectrum-Popover--end-top.is-open:dir(rtl), +.spectrum-Popover--end.is-open:dir(rtl), +[dir="rtl"] .spectrum-Popover--end-bottom.is-open, +[dir="rtl"] .spectrum-Popover--end-top.is-open, +[dir="rtl"] .spectrum-Popover--end.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--withTip.spectrum-Popover .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip { + inline-size: var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)); + block-size: var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)); + position: absolute; + inset-block-start: 100%; + inset-inline: 0; + margin: auto; + transform: translate(0); +} +.spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip { + inset-inline: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip { + inset-inline: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip { + margin-inline-start: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip { + margin-inline-end: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip { + inset-block: auto 100%; + transform: scaleY(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip { + inset-inline: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip { + inset-inline: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip { + margin-inline-start: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip { + margin-inline-end: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + inline-size: var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)); + block-size: var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)); + inset-block: 0; +} +.spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip { + left: 100%; + right: auto; +} +.spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip { + right: 100%; + left: auto; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + inset-block: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip { + inset-block: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + margin-inline-start: 100%; +} +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip:dir(rtl), +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + transform: none; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip { + margin-inline-end: 100%; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip:dir(rtl), +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip { + transform: scaleX(1); +} +.spectrum-Popover { + --spectrum-popover-border-width: var(--system-spectrum-popover-border-width); +} +/*# sourceMappingURL=components/popover/index.css.map */ diff --git a/components/popover/index-theme.css b/components/popover/index-theme.css new file mode 100644 index 0000000000..9fbc62a4f3 --- /dev/null +++ b/components/popover/index-theme.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-popover-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-popover-border-width: 0; +} +/*# sourceMappingURL=components/popover/themes/express.css.map */ diff --git a/components/popover/index-vars.css b/components/popover/index-vars.css new file mode 100644 index 0000000000..8a2122f1ab --- /dev/null +++ b/components/popover/index-vars.css @@ -0,0 +1,292 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-popover-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-popover-border-width: 0; +} +.spectrum-Popover { + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: + transform var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + opacity var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)); +} +.spectrum-Popover.is-open { + pointer-events: auto; + visibility: visible; + opacity: 1; + transition-delay: var(--mod-overlay-animation-duration-opened, var(--spectrum-animation-duration-0, 0ms)); +} +.spectrum-Popover { + --flow-direction: 1; + --spectrum-popover-animation-distance: var(--spectrum-spacing-100); + --spectrum-popover-background-color: var(--spectrum-background-layer-2-color); + --spectrum-popover-border-color: var(--spectrum-gray-400); + --spectrum-popover-content-area-spacing-vertical: var(--spectrum-popover-top-to-content-area); + --spectrum-popover-shadow-horizontal: var(--spectrum-drop-shadow-x); + --spectrum-popover-shadow-vertical: var(--spectrum-drop-shadow-y); + --spectrum-popover-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-popover-shadow-color: var(--spectrum-drop-shadow-color); + --spectrum-popover-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-popover-pointer-width: var(--spectrum-popover-tip-width); + --spectrum-popover-pointer-height: var(--spectrum-popover-tip-height); + --spectrum-popover-pointer-edge-offset: calc(var(--spectrum-corner-radius-100) + var(--spectrum-popover-tip-width) / 2); + --spectrum-popover-pointer-edge-spacing: calc(var(--spectrum-popover-pointer-edge-offset) - var(--spectrum-popover-tip-width) / 2); +} +.spectrum-Popover:dir(rtl), +[dir="rtl"] .spectrum-Popover { + --flow-direction: -1; +} +@media (forced-colors: active) { + .spectrum-Popover { + --highcontrast-popover-border-color: CanvasText; + } +} +.spectrum-Popover { + --spectrum-popover-filter: drop-shadow(var(--mod-popover-shadow-horizontal, var(--spectrum-popover-shadow-horizontal)) var(--mod-popover-shadow-vertical, var(--spectrum-popover-shadow-vertical)) var(--mod-popover-shadow-blur, var(--spectrum-popover-shadow-blur)) var(--mod-popover-shadow-color, var(--spectrum-popover-shadow-color))); + box-sizing: border-box; + position: absolute; + outline: none; + padding: var(--mod-popover-content-area-spacing-vertical, var(--spectrum-popover-content-area-spacing-vertical)) 0; + display: inline-flex; + flex-direction: column; + border-style: solid; + border-radius: var(--mod-popover-corner-radius, var(--spectrum-popover-corner-radius)); + border-color: var(--highcontrast-popover-border-color, var(--mod-popover-border-color, var(--spectrum-popover-border-color))); + border-width: var(--mod-popover-border-width, var(--spectrum-popover-border-width)); + background-color: var(--mod-popover-background-color, var(--spectrum-popover-background-color)); + filter: var(--mod-popover-filter, var(--spectrum-popover-filter)); +} +.spectrum-Popover.spectrum-Popover--withTip .spectrum-Popover-tip .spectrum-Popover-tip-triangle { + stroke-linecap: square; + stroke-linejoin: miter; + fill: var(--highcontrast-popover-background-color, var(--mod-popover-background-color, var(--spectrum-popover-background-color))); + stroke: var(--highcontrast-popover-border-color, var(--mod-popover-border-color, var(--spectrum-popover-border-color))); + stroke-width: var(--mod-popover-border-width, var(--spectrum-popover-border-width)); +} +.spectrum-Popover * { + --mod-popover-filter: none; +} +.spectrum-Popover--top-end.spectrum-Popover--withTip, +.spectrum-Popover--top-left.spectrum-Popover--withTip, +.spectrum-Popover--top-right.spectrum-Popover--withTip, +.spectrum-Popover--top-start.spectrum-Popover--withTip, +.spectrum-Popover--top.spectrum-Popover--withTip { + margin-block-end: calc(var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--top-end.is-open, +.spectrum-Popover--top-left.is-open, +.spectrum-Popover--top-right.is-open, +.spectrum-Popover--top-start.is-open, +.spectrum-Popover--top.is-open { + transform: translateY(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--bottom-end.spectrum-Popover--withTip, +.spectrum-Popover--bottom-left.spectrum-Popover--withTip, +.spectrum-Popover--bottom-right.spectrum-Popover--withTip, +.spectrum-Popover--bottom-start.spectrum-Popover--withTip, +.spectrum-Popover--bottom.spectrum-Popover--withTip { + margin-block-start: calc(var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--bottom-end.is-open, +.spectrum-Popover--bottom-left.is-open, +.spectrum-Popover--bottom-right.is-open, +.spectrum-Popover--bottom-start.is-open, +.spectrum-Popover--bottom.is-open { + transform: translateY(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--right-bottom.spectrum-Popover--withTip, +.spectrum-Popover--right-top.spectrum-Popover--withTip, +.spectrum-Popover--right.spectrum-Popover--withTip { + margin-left: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--right-bottom.is-open, +.spectrum-Popover--right-top.is-open, +.spectrum-Popover--right.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--left-bottom.spectrum-Popover--withTip, +.spectrum-Popover--left-top.spectrum-Popover--withTip, +.spectrum-Popover--left.spectrum-Popover--withTip { + margin-right: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--left-bottom.is-open, +.spectrum-Popover--left-top.is-open, +.spectrum-Popover--left.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--start-bottom.spectrum-Popover--withTip, +.spectrum-Popover--start-top.spectrum-Popover--withTip, +.spectrum-Popover--start.spectrum-Popover--withTip { + margin-inline-end: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--start-bottom.is-open, +.spectrum-Popover--start-top.is-open, +.spectrum-Popover--start.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--start-bottom.is-open:dir(rtl), +.spectrum-Popover--start-top.is-open:dir(rtl), +.spectrum-Popover--start.is-open:dir(rtl), +[dir="rtl"] .spectrum-Popover--start-bottom.is-open, +[dir="rtl"] .spectrum-Popover--start-top.is-open, +[dir="rtl"] .spectrum-Popover--start.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--end-bottom.spectrum-Popover--withTip, +.spectrum-Popover--end-top.spectrum-Popover--withTip, +.spectrum-Popover--end.spectrum-Popover--withTip { + margin-inline-start: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--end-bottom.is-open, +.spectrum-Popover--end-top.is-open, +.spectrum-Popover--end.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--end-bottom.is-open:dir(rtl), +.spectrum-Popover--end-top.is-open:dir(rtl), +.spectrum-Popover--end.is-open:dir(rtl), +[dir="rtl"] .spectrum-Popover--end-bottom.is-open, +[dir="rtl"] .spectrum-Popover--end-top.is-open, +[dir="rtl"] .spectrum-Popover--end.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--withTip.spectrum-Popover .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip { + inline-size: var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)); + block-size: var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)); + position: absolute; + inset-block-start: 100%; + inset-inline: 0; + margin: auto; + transform: translate(0); +} +.spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip { + inset-inline: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip { + inset-inline: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip { + margin-inline-start: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip { + margin-inline-end: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip { + inset-block: auto 100%; + transform: scaleY(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip { + inset-inline: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip { + inset-inline: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip { + margin-inline-start: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip { + margin-inline-end: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + inline-size: var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)); + block-size: var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)); + inset-block: 0; +} +.spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip { + left: 100%; + right: auto; +} +.spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip { + right: 100%; + left: auto; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + inset-block: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip { + inset-block: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + margin-inline-start: 100%; +} +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip:dir(rtl), +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + transform: none; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip { + margin-inline-end: 100%; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip:dir(rtl), +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip { + transform: scaleX(1); +} +.spectrum-Popover { + --spectrum-popover-border-width: var(--system-spectrum-popover-border-width); +} +/*# sourceMappingURL=components/popover/index.css.map */ diff --git a/components/popover/index.css b/components/popover/index.css new file mode 100644 index 0000000000..8a2122f1ab --- /dev/null +++ b/components/popover/index.css @@ -0,0 +1,292 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-popover-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-popover-border-width: 0; +} +.spectrum-Popover { + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: + transform var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + opacity var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)) ease-in-out, + visibility 0ms linear var(--mod-overlay-animation-duration, var(--spectrum-animation-duration-100, 0.13s)); +} +.spectrum-Popover.is-open { + pointer-events: auto; + visibility: visible; + opacity: 1; + transition-delay: var(--mod-overlay-animation-duration-opened, var(--spectrum-animation-duration-0, 0ms)); +} +.spectrum-Popover { + --flow-direction: 1; + --spectrum-popover-animation-distance: var(--spectrum-spacing-100); + --spectrum-popover-background-color: var(--spectrum-background-layer-2-color); + --spectrum-popover-border-color: var(--spectrum-gray-400); + --spectrum-popover-content-area-spacing-vertical: var(--spectrum-popover-top-to-content-area); + --spectrum-popover-shadow-horizontal: var(--spectrum-drop-shadow-x); + --spectrum-popover-shadow-vertical: var(--spectrum-drop-shadow-y); + --spectrum-popover-shadow-blur: var(--spectrum-drop-shadow-blur); + --spectrum-popover-shadow-color: var(--spectrum-drop-shadow-color); + --spectrum-popover-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-popover-pointer-width: var(--spectrum-popover-tip-width); + --spectrum-popover-pointer-height: var(--spectrum-popover-tip-height); + --spectrum-popover-pointer-edge-offset: calc(var(--spectrum-corner-radius-100) + var(--spectrum-popover-tip-width) / 2); + --spectrum-popover-pointer-edge-spacing: calc(var(--spectrum-popover-pointer-edge-offset) - var(--spectrum-popover-tip-width) / 2); +} +.spectrum-Popover:dir(rtl), +[dir="rtl"] .spectrum-Popover { + --flow-direction: -1; +} +@media (forced-colors: active) { + .spectrum-Popover { + --highcontrast-popover-border-color: CanvasText; + } +} +.spectrum-Popover { + --spectrum-popover-filter: drop-shadow(var(--mod-popover-shadow-horizontal, var(--spectrum-popover-shadow-horizontal)) var(--mod-popover-shadow-vertical, var(--spectrum-popover-shadow-vertical)) var(--mod-popover-shadow-blur, var(--spectrum-popover-shadow-blur)) var(--mod-popover-shadow-color, var(--spectrum-popover-shadow-color))); + box-sizing: border-box; + position: absolute; + outline: none; + padding: var(--mod-popover-content-area-spacing-vertical, var(--spectrum-popover-content-area-spacing-vertical)) 0; + display: inline-flex; + flex-direction: column; + border-style: solid; + border-radius: var(--mod-popover-corner-radius, var(--spectrum-popover-corner-radius)); + border-color: var(--highcontrast-popover-border-color, var(--mod-popover-border-color, var(--spectrum-popover-border-color))); + border-width: var(--mod-popover-border-width, var(--spectrum-popover-border-width)); + background-color: var(--mod-popover-background-color, var(--spectrum-popover-background-color)); + filter: var(--mod-popover-filter, var(--spectrum-popover-filter)); +} +.spectrum-Popover.spectrum-Popover--withTip .spectrum-Popover-tip .spectrum-Popover-tip-triangle { + stroke-linecap: square; + stroke-linejoin: miter; + fill: var(--highcontrast-popover-background-color, var(--mod-popover-background-color, var(--spectrum-popover-background-color))); + stroke: var(--highcontrast-popover-border-color, var(--mod-popover-border-color, var(--spectrum-popover-border-color))); + stroke-width: var(--mod-popover-border-width, var(--spectrum-popover-border-width)); +} +.spectrum-Popover * { + --mod-popover-filter: none; +} +.spectrum-Popover--top-end.spectrum-Popover--withTip, +.spectrum-Popover--top-left.spectrum-Popover--withTip, +.spectrum-Popover--top-right.spectrum-Popover--withTip, +.spectrum-Popover--top-start.spectrum-Popover--withTip, +.spectrum-Popover--top.spectrum-Popover--withTip { + margin-block-end: calc(var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--top-end.is-open, +.spectrum-Popover--top-left.is-open, +.spectrum-Popover--top-right.is-open, +.spectrum-Popover--top-start.is-open, +.spectrum-Popover--top.is-open { + transform: translateY(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--bottom-end.spectrum-Popover--withTip, +.spectrum-Popover--bottom-left.spectrum-Popover--withTip, +.spectrum-Popover--bottom-right.spectrum-Popover--withTip, +.spectrum-Popover--bottom-start.spectrum-Popover--withTip, +.spectrum-Popover--bottom.spectrum-Popover--withTip { + margin-block-start: calc(var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--bottom-end.is-open, +.spectrum-Popover--bottom-left.is-open, +.spectrum-Popover--bottom-right.is-open, +.spectrum-Popover--bottom-start.is-open, +.spectrum-Popover--bottom.is-open { + transform: translateY(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--right-bottom.spectrum-Popover--withTip, +.spectrum-Popover--right-top.spectrum-Popover--withTip, +.spectrum-Popover--right.spectrum-Popover--withTip { + margin-left: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--right-bottom.is-open, +.spectrum-Popover--right-top.is-open, +.spectrum-Popover--right.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--left-bottom.spectrum-Popover--withTip, +.spectrum-Popover--left-top.spectrum-Popover--withTip, +.spectrum-Popover--left.spectrum-Popover--withTip { + margin-right: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--left-bottom.is-open, +.spectrum-Popover--left-top.is-open, +.spectrum-Popover--left.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--start-bottom.spectrum-Popover--withTip, +.spectrum-Popover--start-top.spectrum-Popover--withTip, +.spectrum-Popover--start.spectrum-Popover--withTip { + margin-inline-end: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--start-bottom.is-open, +.spectrum-Popover--start-top.is-open, +.spectrum-Popover--start.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--start-bottom.is-open:dir(rtl), +.spectrum-Popover--start-top.is-open:dir(rtl), +.spectrum-Popover--start.is-open:dir(rtl), +[dir="rtl"] .spectrum-Popover--start-bottom.is-open, +[dir="rtl"] .spectrum-Popover--start-top.is-open, +[dir="rtl"] .spectrum-Popover--start.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--end-bottom.spectrum-Popover--withTip, +.spectrum-Popover--end-top.spectrum-Popover--withTip, +.spectrum-Popover--end.spectrum-Popover--withTip { + margin-inline-start: calc(var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)) - var(--mod-popover-border-width, var(--spectrum-popover-border-width))); +} +.spectrum-Popover--end-bottom.is-open, +.spectrum-Popover--end-top.is-open, +.spectrum-Popover--end.is-open { + transform: translateX(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance))); +} +.spectrum-Popover--end-bottom.is-open:dir(rtl), +.spectrum-Popover--end-top.is-open:dir(rtl), +.spectrum-Popover--end.is-open:dir(rtl), +[dir="rtl"] .spectrum-Popover--end-bottom.is-open, +[dir="rtl"] .spectrum-Popover--end-top.is-open, +[dir="rtl"] .spectrum-Popover--end.is-open { + transform: translateX(calc(var(--mod-popover-animation-distance, var(--spectrum-popover-animation-distance)) * -1)); +} +.spectrum-Popover--withTip.spectrum-Popover .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip { + inline-size: var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)); + block-size: var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)); + position: absolute; + inset-block-start: 100%; + inset-inline: 0; + margin: auto; + transform: translate(0); +} +.spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip { + inset-inline: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip { + inset-inline: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip { + margin-inline-start: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip { + margin-inline-end: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip { + inset-block: auto 100%; + transform: scaleY(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip { + inset-inline: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip { + inset-inline: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip { + margin-inline-start: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip { + margin-inline-end: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + inline-size: var(--mod-popover-pointer-height, var(--spectrum-popover-pointer-height)); + block-size: var(--mod-popover-pointer-width, var(--spectrum-popover-pointer-width)); + inset-block: 0; +} +.spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip { + left: 100%; + right: auto; +} +.spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip { + right: 100%; + left: auto; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + inset-block: var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)) auto; +} +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip { + inset-block: auto var(--mod-popover-pointer-edge-spacing, var(--spectrum-popover-pointer-edge-spacing)); +} +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + margin-inline-start: 100%; +} +.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip:dir(rtl), +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip { + transform: none; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip { + margin-inline-end: 100%; + transform: scaleX(-1); +} +.spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip:dir(rtl), +.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip:dir(rtl), +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip, +[dir="rtl"] .spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip { + transform: scaleX(1); +} +.spectrum-Popover { + --spectrum-popover-border-width: var(--system-spectrum-popover-border-width); +} +/*# sourceMappingURL=components/popover/index.css.map */ diff --git a/components/popover/metadata.json b/components/popover/metadata.json new file mode 100644 index 0000000000..92ba0aebc2 --- /dev/null +++ b/components/popover/metadata.json @@ -0,0 +1,98 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Popover", + ".spectrum-Popover *", + ".spectrum-Popover--bottom-end.is-open,\n.spectrum-Popover--bottom-left.is-open,\n.spectrum-Popover--bottom-right.is-open,\n.spectrum-Popover--bottom-start.is-open,\n.spectrum-Popover--bottom.is-open", + ".spectrum-Popover--bottom-end.spectrum-Popover--withTip,\n.spectrum-Popover--bottom-left.spectrum-Popover--withTip,\n.spectrum-Popover--bottom-right.spectrum-Popover--withTip,\n.spectrum-Popover--bottom-start.spectrum-Popover--withTip,\n.spectrum-Popover--bottom.spectrum-Popover--withTip", + ".spectrum-Popover--end-bottom.is-open,\n.spectrum-Popover--end-top.is-open,\n.spectrum-Popover--end.is-open", + ".spectrum-Popover--end-bottom.is-open:dir(rtl),\n.spectrum-Popover--end-top.is-open:dir(rtl),\n.spectrum-Popover--end.is-open:dir(rtl),\n[dir=\"rtl\"] .spectrum-Popover--end-bottom.is-open,\n[dir=\"rtl\"] .spectrum-Popover--end-top.is-open,\n[dir=\"rtl\"] .spectrum-Popover--end.is-open", + ".spectrum-Popover--end-bottom.spectrum-Popover--withTip,\n.spectrum-Popover--end-top.spectrum-Popover--withTip,\n.spectrum-Popover--end.spectrum-Popover--withTip", + ".spectrum-Popover--left-bottom.is-open,\n.spectrum-Popover--left-top.is-open,\n.spectrum-Popover--left.is-open", + ".spectrum-Popover--left-bottom.spectrum-Popover--withTip,\n.spectrum-Popover--left-top.spectrum-Popover--withTip,\n.spectrum-Popover--left.spectrum-Popover--withTip", + ".spectrum-Popover--right-bottom.is-open,\n.spectrum-Popover--right-top.is-open,\n.spectrum-Popover--right.is-open", + ".spectrum-Popover--right-bottom.spectrum-Popover--withTip,\n.spectrum-Popover--right-top.spectrum-Popover--withTip,\n.spectrum-Popover--right.spectrum-Popover--withTip", + ".spectrum-Popover--start-bottom.is-open,\n.spectrum-Popover--start-top.is-open,\n.spectrum-Popover--start.is-open", + ".spectrum-Popover--start-bottom.is-open:dir(rtl),\n.spectrum-Popover--start-top.is-open:dir(rtl),\n.spectrum-Popover--start.is-open:dir(rtl),\n[dir=\"rtl\"] .spectrum-Popover--start-bottom.is-open,\n[dir=\"rtl\"] .spectrum-Popover--start-top.is-open,\n[dir=\"rtl\"] .spectrum-Popover--start.is-open", + ".spectrum-Popover--start-bottom.spectrum-Popover--withTip,\n.spectrum-Popover--start-top.spectrum-Popover--withTip,\n.spectrum-Popover--start.spectrum-Popover--withTip", + ".spectrum-Popover--top-end.is-open,\n.spectrum-Popover--top-left.is-open,\n.spectrum-Popover--top-right.is-open,\n.spectrum-Popover--top-start.is-open,\n.spectrum-Popover--top.is-open", + ".spectrum-Popover--top-end.spectrum-Popover--withTip,\n.spectrum-Popover--top-left.spectrum-Popover--withTip,\n.spectrum-Popover--top-right.spectrum-Popover--withTip,\n.spectrum-Popover--top-start.spectrum-Popover--withTip,\n.spectrum-Popover--top.spectrum-Popover--withTip", + ".spectrum-Popover--withTip.spectrum-Popover .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--top .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--bottom-end .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--bottom-left .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--bottom-right .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--bottom-start .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip:dir(rtl),\n.spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip:dir(rtl),\n.spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip:dir(rtl),\n[dir=\"rtl\"] .spectrum-Popover--withTip.spectrum-Popover--end .spectrum-Popover-tip,\n[dir=\"rtl\"] .spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip,\n[dir=\"rtl\"] .spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--end-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--end-top .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--left .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--left-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--left-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--right .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--right-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--right-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip,\n.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip:dir(rtl),\n.spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip:dir(rtl),\n.spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip:dir(rtl),\n[dir=\"rtl\"] .spectrum-Popover--withTip.spectrum-Popover--start .spectrum-Popover-tip,\n[dir=\"rtl\"] .spectrum-Popover--withTip.spectrum-Popover--start-bottom .spectrum-Popover-tip,\n[dir=\"rtl\"] .spectrum-Popover--withTip.spectrum-Popover--start-top .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--top-end .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--top-left .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--top-right .spectrum-Popover-tip", + ".spectrum-Popover--withTip.spectrum-Popover--top-start .spectrum-Popover-tip", + ".spectrum-Popover.is-open", + ".spectrum-Popover.spectrum-Popover--withTip .spectrum-Popover-tip .spectrum-Popover-tip-triangle", + ".spectrum-Popover:dir(rtl),\n[dir=\"rtl\"] .spectrum-Popover" + ], + "mods": [ + "--mod-overlay-animation-duration", + "--mod-overlay-animation-duration-opened", + "--mod-popover-animation-distance", + "--mod-popover-background-color", + "--mod-popover-border-color", + "--mod-popover-border-width", + "--mod-popover-content-area-spacing-vertical", + "--mod-popover-corner-radius", + "--mod-popover-filter", + "--mod-popover-pointer-edge-spacing", + "--mod-popover-pointer-height", + "--mod-popover-pointer-width", + "--mod-popover-shadow-blur", + "--mod-popover-shadow-color", + "--mod-popover-shadow-horizontal", + "--mod-popover-shadow-vertical" + ], + "spectrum": [ + "--spectrum-animation-duration-0", + "--spectrum-animation-duration-100", + "--spectrum-background-layer-2-color", + "--spectrum-border-width-100", + "--spectrum-corner-radius-100", + "--spectrum-drop-shadow-blur", + "--spectrum-drop-shadow-color", + "--spectrum-drop-shadow-x", + "--spectrum-drop-shadow-y", + "--spectrum-gray-400", + "--spectrum-popover-animation-distance", + "--spectrum-popover-background-color", + "--spectrum-popover-border-color", + "--spectrum-popover-border-width", + "--spectrum-popover-content-area-spacing-vertical", + "--spectrum-popover-corner-radius", + "--spectrum-popover-filter", + "--spectrum-popover-pointer-edge-offset", + "--spectrum-popover-pointer-edge-spacing", + "--spectrum-popover-pointer-height", + "--spectrum-popover-pointer-width", + "--spectrum-popover-shadow-blur", + "--spectrum-popover-shadow-color", + "--spectrum-popover-shadow-horizontal", + "--spectrum-popover-shadow-vertical", + "--spectrum-popover-tip-height", + "--spectrum-popover-tip-width", + "--spectrum-popover-top-to-content-area", + "--spectrum-spacing-100" + ], + "system": ["--system-spectrum-popover-border-width"], + "a11y": [ + "--highcontrast-popover-background-color", + "--highcontrast-popover-border-color" + ] +} diff --git a/components/popover/package.json b/components/popover/package.json new file mode 100644 index 0000000000..00ebb20975 --- /dev/null +++ b/components/popover/package.json @@ -0,0 +1,56 @@ +{ + "name": "@spectrum-css/popover", + "version": "7.1.3", + "description": "The Spectrum CSS popover component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/popover", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/popover" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/alertdialog": ">=2", + "@spectrum-css/dialog": ">=10", + "@spectrum-css/divider": ">=3", + "@spectrum-css/menu": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/divider": { + "optional": true + }, + "@spectrum-css/menu": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/alertdialog": "workspace:^", + "@spectrum-css/commons": "workspace:^", + "@spectrum-css/dialog": "workspace:^", + "@spectrum-css/divider": "workspace:^", + "@spectrum-css/menu": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/popover/template.js b/components/popover/template.js new file mode 100644 index 0000000000..1ea2a4ae7a --- /dev/null +++ b/components/popover/template.js @@ -0,0 +1,240 @@ +import { renderContent } from "@spectrum-css/preview/decorators/utilities.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { useArgs } from "@storybook/preview-api"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Popover", + size = "m", + isOpen = false, + withTip = false, + position = "top", + customClasses = [], + id = "popover-1", + testId, + triggerId = "trigger", + customStyles = {}, + trigger, + content = [], +} = {}, context = {}) => { + const [, updateArgs] = useArgs(); + const { globals = {} } = context; + const textDir = globals.textDir ?? "ltr"; + const isNestedPopover = id === "popover-nested" || id === "popover-nested-2"; + + /** + * Adjust popover's position in relation to the source/trigger element. + * Changes both the transform and the absolute positioning. + */ + const positionPopover = () => { + // Nested popover is static and open, so we don't need to reposition it. + if (isNestedPopover || !isOpen || !position) return; + + // Get trigger (source) and popover elements + const element = document.querySelector(`#${triggerId}`); + const popover = document.querySelector(`#${id}`); + + if (!element || !popover) return; + + const rect = element.getBoundingClientRect(); + + const transforms = []; + const triggerXCenter = (rect.left + rect.right) / 2; + const triggerYCenter = (rect.top + rect.bottom) / 2; + const popWidth = popover.offsetWidth ?? 0; + const popHeight = popover.offsetHeight ?? 0; + + let x, y; + let xOffset = "+ 0px"; + let yOffset = "+ 0px"; + + if (position.startsWith("top") || position.startsWith("bottom")) { + x = triggerXCenter - (popWidth > 0 ? popWidth / 2 : popWidth); + } + if (position.includes("left") || position.includes("right") || position.startsWith("start") || position.startsWith("end")) { + y = triggerYCenter - (popHeight > 0 ? popHeight / 2 : popHeight); + } + if (position.startsWith("top")) { + y = rect.top - popHeight; + yOffset = withTip + ? "- (var(--spectrum-popover-pointer-height) + var(--spectrum-popover-animation-distance) - 1px)" + : "- var(--spectrum-popover-animation-distance)"; + } + else if (position.startsWith("bottom")) { + y = rect.bottom; + yOffset = "+ (var(--spectrum-popover-animation-distance))"; + } + else if (position.includes("left")) { + if (textDir == "rtl") { + x = rect.right; + xOffset = withTip ? "+ 0px" : "+ var(--spectrum-popover-animation-distance)"; + } + else { + x = rect.left - popWidth; + xOffset = withTip + ? "- ((var(--spectrum-popover-pointer-width) / 2) + var(--spectrum-popover-animation-distance) - 2px)" + : "- var(--spectrum-popover-animation-distance)"; + } + } + else if (position.includes("right")) { + if (textDir == "rtl") { + x = rect.left - popWidth; + xOffset = withTip + ? "- ((var(--spectrum-popover-pointer-width) / 2) + var(--spectrum-popover-animation-distance) - 2px)" + : "- var(--spectrum-popover-animation-distance)"; + } + else { + x = rect.right; + xOffset = withTip ? "+ 0px" : "+ var(--spectrum-popover-animation-distance)"; + } + } + else if (position.includes("start")) { + x = rect.left - popWidth; + xOffset = withTip + ? "- ((var(--spectrum-popover-pointer-width) / 2) + var(--spectrum-popover-animation-distance) - 2px)" + : "- var(--spectrum-popover-animation-distance)"; + } + else if (position.includes("end")) { + x = rect.right; + xOffset = withTip ? "+ 0px" : "+ var(--spectrum-popover-animation-distance)"; + } + + // Offset popover with translateX and/or translateY. + if (x) transforms.push(`translateX(calc(var(--flow-direction) * calc(${parseInt(x, 10)}px ${xOffset})))`); + if (y) transforms.push(`translateY(calc(${y}px ${yOffset}))`); + + if (transforms.length > 0) { + popover.style.transform = transforms.join(" "); + } + + // Add start and end styles + if (position === "top-start" || position === "bottom-start") { + popover.style["inset-inline-start"] = "calc(" + (popWidth / 2) + "px - var(--spectrum-popover-pointer-edge-offset))"; + popover.style["inset-block-start"] = "0px"; + } + else if (position === "top-end" || position === "bottom-end") { + popover.style["inset-inline-start"] = "calc(-1 *" + (popWidth / 2) + "px + var(--spectrum-popover-pointer-edge-offset))"; + popover.style["inset-block-start"] = "0px"; + } + else if (position === "left-top" || position === "right-top" || position === "start-top" || position === "end-top") { + popover.style["inset-block-start"] = "calc(" + (popHeight / 2) + "px - var(--spectrum-popover-pointer-edge-offset))"; + popover.style["inset-inline-start"] = "0px"; + } + else if (position === "left-bottom" || position === "right-bottom" || position === "start-bottom" || position === "end-bottom") { + popover.style["inset-block-start"] = "calc(-1 *" + (popHeight / 2) + "px + var(--spectrum-popover-pointer-edge-offset))"; + popover.style["inset-inline-start"] = "0px"; + } + else { + popover.style["inset-inline-start"] = "0px"; + popover.style["inset-block-start"] = "0px"; + } + }; + + window.addEventListener("DOMContentLoaded", () => { + setTimeout(positionPopover, 100); + }); + + window.addEventListener("resize", () => { + setTimeout(positionPopover, 100); + }); + + return html` + ${when(typeof trigger === "function", () => trigger({ + isSelected: isNestedPopover ?? isOpen, + isOpen: isNestedPopover ?? true, + id: triggerId, + popupId: id, + onclick: () => { + updateArgs({ isOpen: !isOpen }); + } + }))} + +
    ({ ...a, [c]: true }), {}), + })} + style=${ifDefined(styleMap(customStyles))} + role="presentation" + id=${ifDefined(id)} + data-testid=${ifDefined(testId ?? id)} + > + ${renderContent(content)} + ${withTip + ? position && ["top", "bottom"].some((e) => position.startsWith(e)) + ? html`` + : html`` + : ""} +
    + `; +}; + +export const Variants = (args, context) => { + const placementOptions = context?.argTypes?.position?.options ?? []; + return html` +
    + ${Template(args, context)} +
    +
    + ${placementOptions.map(option => { + let optionDescription; + if (option.startsWith("start") || option.startsWith("end")) + optionDescription = "Changes side with text direction (like a logical property)"; + if (option.startsWith("left") || option.startsWith("right")) + optionDescription = "Text direction does not affect the position"; + + return html` +
    + ${Typography({ + semantics: "heading", + size: "s", + content: [option], + customClasses: ["chromatic-ignore"], + }, context)} +
    +
    + ${Template({ + ...args, + position: option, + isOpen: true, + trigger: () => null, + }, context)} +
    +
    + ${when(optionDescription, () => html` + ${Typography({ + semantics: "body", + size: "s", + content: [html`* ${optionDescription}`], + customClasses: ["chromatic-ignore"], + }, context)} + `)} +
    + `; + })} +
    + `; +}; diff --git a/components/popover/themes/express.css b/components/popover/themes/express.css new file mode 100644 index 0000000000..3a848abab4 --- /dev/null +++ b/components/popover/themes/express.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-popover-border-width: 0; +} +/*# sourceMappingURL=components/popover/themes/express.css.map */ diff --git a/components/popover/themes/spectrum.css b/components/popover/themes/spectrum.css new file mode 100644 index 0000000000..7ef9a10f99 --- /dev/null +++ b/components/popover/themes/spectrum.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-popover-border-width: var(--spectrum-border-width-100); +} +/*# sourceMappingURL=components/popover/themes/spectrum.css.map */ diff --git a/components/progressbar/index-base.css b/components/progressbar/index-base.css new file mode 100644 index 0000000000..453b62e2db --- /dev/null +++ b/components/progressbar/index-base.css @@ -0,0 +1,209 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ProgressBar { + --spectrum-progressbar-animation-ease-in-out-indeterminate: var(--spectrum-animation-ease-in-out); + --spectrum-progressbar-animation-duration-indeterminate: var(--spectrum-animation-duration-2000); + --spectrum-progressbar-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-progressbar-fill-size-indeterminate: 70%; + --spectrum-progressbar-size-2400: 192px; + --spectrum-progressbar-size-2500: 200px; + --spectrum-progressbar-size-2800: 224px; + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-progressbar-min-size: var(--spectrum-progress-bar-minimum-width); + --spectrum-progressbar-max-size: var(--spectrum-progress-bar-maximum-width); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-medium); + --spectrum-progressbar-line-height: var(--spectrum-line-height-100); + --spectrum-progressbar-spacing-label-to-progressbar: var(--spectrum-spacing-75); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-progressbar-spacing-label-to-text: var(--spectrum-spacing-200); + --spectrum-progressbar-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-progressbar-track-color: var(--spectrum-gray-300); + --spectrum-progressbar-fill-color: var(--spectrum-accent-color-900); + --spectrum-progressbar-fill-color-positive: var(--spectrum-positive-visual-color); + --spectrum-progressbar-fill-color-notice: var(--spectrum-notice-visual-color); + --spectrum-progressbar-fill-color-negative: var(--spectrum-negative-visual-color); + --spectrum-progressbar-label-and-value-white: var(--spectrum-white); + --spectrum-progressbar-track-color-white: var(--spectrum-transparent-white-300); + --spectrum-progressbar-fill-color-white: var(--spectrum-white); + --spectrum-meter-min-width: var(--spectrum-meter-minimum-width); + --spectrum-meter-max-width: var(--spectrum-meter-maximum-width); + --spectrum-meter-inline-size: var(--spectrum-meter-default-width); + --spectrum-meter-thickness-s: var(--spectrum-meter-thickness-small); + --spectrum-meter-thickness-l: var(--spectrum-meter-thickness-large); + --spectrum-meter-top-to-text: var(--spectrum-component-top-to-text); +} +.spectrum-Meter--sizeS, +.spectrum-ProgressBar--sizeS { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2400); + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-small); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-ProgressBar--sizeM { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2400); + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-Meter--sizeL, +.spectrum-ProgressBar--sizeL { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2500); + --spectrum-progressbar-font-size: var(--spectrum-font-size-100); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-200); +} +.spectrum-ProgressBar--sizeXL { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2800); + --spectrum-progressbar-font-size: var(--spectrum-font-size-200); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-extra-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-300); +} +.spectrum-Meter { + --spectrum-progressbar-size-default: var(--mod-meter-inline-size, var(--spectrum-meter-inline-size)); + --spectrum-progressbar-max-size: var(--mod-meter-max-width, var(--spectrum-meter-max-width)); + --spectrum-progressbar-min-size: var(--mod-meter-min-width, var(--spectrum-meter-min-width)); +} +.spectrum-Meter.spectrum-Meter--sizeS { + --spectrum-progressbar-thickness: var(--spectrum-meter-thickness-s); +} +.spectrum-Meter.spectrum-Meter--sizeL { + --spectrum-progressbar-thickness: var(--spectrum-meter-thickness-l); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-Meter.is-positive .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-positive, var(--spectrum-progressbar-fill-color-positive))); +} +.spectrum-Meter.is-notice .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-notice, var(--spectrum-progressbar-fill-color-notice))); +} +.spectrum-Meter.is-negative .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-negative, var(--spectrum-progressbar-fill-color-negative))); +} +.spectrum-ProgressBar { + position: relative; + display: inline-flex; + flex-flow: row wrap; + justify-content: space-between; + align-items: center; + font-size: var(--mod-progressbar-font-size, var(--spectrum-progressbar-font-size)); + vertical-align: top; + inline-size: var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)); + max-inline-size: var(--mod-progressbar-max-size, var(--spectrum-progressbar-max-size)); + min-inline-size: var(--mod-progressbar-min-size, var(--spectrum-progressbar-min-size)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label, +.spectrum-ProgressBar .spectrum-ProgressBar-percentage { + text-align: start; + margin-block-start: var(--mod-progressbar-spacing-top-to-text, var(--spectrum-progressbar-spacing-top-to-text)); + margin-block-end: var(--mod-progressbar-spacing-label-to-progressbar, var(--spectrum-progressbar-spacing-label-to-progressbar)); + line-height: var(--mod-progressbar-line-height, var(--spectrum-progressbar-line-height)); + color: var(--mod-progressbar-text-color, var(--spectrum-progressbar-text-color)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ja), +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ko), +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(zh), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ja), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ko), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(zh) { + line-height: var(--mod-progressbar-line-height-cjk, var(--spectrum-progressbar-line-height-cjk)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label { + flex: 1 1 0%; +} +.spectrum-ProgressBar .spectrum-ProgressBar-percentage { + align-self: flex-start; + margin-inline-start: var(--mod-progressbar-spacing-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-track { + overflow: hidden; + inline-size: 100%; + block-size: var(--mod-progressbar-thickness, var(--spectrum-progressbar-thickness)); + border-radius: var(--spectrum-progressbar-corner-radius); + background-color: var(--highcontrast-progressbar-track-color, var(--mod-progressbar-track-color, var(--spectrum-progressbar-track-color))); +} +.spectrum-ProgressBar .spectrum-ProgressBar-fill { + border: none; + block-size: var(--mod-progressbar-thickness, var(--spectrum-progressbar-thickness)); + transition: width 1s; + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color, var(--spectrum-progressbar-fill-color))); +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + inline-size: var(--mod-progressbar-fill-size-indeterminate, var(--spectrum-progressbar-fill-size-indeterminate)); + position: relative; + animation-timing-function: var(--mod-progressbar-animation-ease-in-out-indeterminate, var(--spectrum-progressbar-animation-ease-in-out-indeterminate)); + will-change: transform; +} +.spectrum-ProgressBar--sideLabel { + display: inline-flex; + flex-flow: row; + justify-content: space-between; +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-track { + flex: 1 1 var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)); +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-label { + flex-grow: 0; + margin-inline-end: var(--mod-progressbar-spacing-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); + margin-block-end: 0; +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-percentage { + order: 3; + text-align: end; + margin-inline-start: var(--mod-spacing-progressbar-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); + margin-block-end: 0; +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill { + background-color: var(--mod-progressbar-fill-color-white, var(--spectrum-progressbar-fill-color-white)); +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill, +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-label, +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-percentage { + color: var(--mod-progressbar-label-and-value-white, var(--spectrum-progressbar-label-and-value-white)); +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-track { + background-color: var(--spectrum-progressbar-track-color-white); +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + animation: indeterminate-loop-ltr var(--mod-progressbar-animation-duration-indeterminate, var(--spectrum-progressbar-animation-duration-indeterminate)) infinite; +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill:dir(rtl), +[dir="rtl"] .spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + animation: indeterminate-loop-rtl var(--mod-progressbar-animation-duration-indeterminate, var(--spectrum-progressbar-animation-duration-indeterminate)) infinite; +} +@keyframes indeterminate-loop-ltr { + 0% { + transform: translate(calc(var(--mod-progressbar-fill-size-indeterminate, var(--spectrum-progressbar-fill-size-indeterminate)) * -1)); + } + to { + transform: translate(var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default))); + } +} +@keyframes indeterminate-loop-rtl { + 0% { + transform: translate(var(--mod-progressbar-size-default, var(--spectrum-progressbar-fill-size-indeterminate))); + } + to { + transform: translate(calc(var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)) * -1)); + } +} +@media (forced-colors: active) { + .spectrum-ProgressBar-track { + forced-color-adjust: none; + --highcontrast-progressbar-fill-color: ButtonText; + --highcontrast-progressbar-track-color: ButtonFace; + border: 1px solid ButtonText; + } +} +/*# sourceMappingURL=components/progressbar/index.css.map */ diff --git a/components/progressbar/index-vars.css b/components/progressbar/index-vars.css new file mode 100644 index 0000000000..453b62e2db --- /dev/null +++ b/components/progressbar/index-vars.css @@ -0,0 +1,209 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ProgressBar { + --spectrum-progressbar-animation-ease-in-out-indeterminate: var(--spectrum-animation-ease-in-out); + --spectrum-progressbar-animation-duration-indeterminate: var(--spectrum-animation-duration-2000); + --spectrum-progressbar-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-progressbar-fill-size-indeterminate: 70%; + --spectrum-progressbar-size-2400: 192px; + --spectrum-progressbar-size-2500: 200px; + --spectrum-progressbar-size-2800: 224px; + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-progressbar-min-size: var(--spectrum-progress-bar-minimum-width); + --spectrum-progressbar-max-size: var(--spectrum-progress-bar-maximum-width); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-medium); + --spectrum-progressbar-line-height: var(--spectrum-line-height-100); + --spectrum-progressbar-spacing-label-to-progressbar: var(--spectrum-spacing-75); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-progressbar-spacing-label-to-text: var(--spectrum-spacing-200); + --spectrum-progressbar-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-progressbar-track-color: var(--spectrum-gray-300); + --spectrum-progressbar-fill-color: var(--spectrum-accent-color-900); + --spectrum-progressbar-fill-color-positive: var(--spectrum-positive-visual-color); + --spectrum-progressbar-fill-color-notice: var(--spectrum-notice-visual-color); + --spectrum-progressbar-fill-color-negative: var(--spectrum-negative-visual-color); + --spectrum-progressbar-label-and-value-white: var(--spectrum-white); + --spectrum-progressbar-track-color-white: var(--spectrum-transparent-white-300); + --spectrum-progressbar-fill-color-white: var(--spectrum-white); + --spectrum-meter-min-width: var(--spectrum-meter-minimum-width); + --spectrum-meter-max-width: var(--spectrum-meter-maximum-width); + --spectrum-meter-inline-size: var(--spectrum-meter-default-width); + --spectrum-meter-thickness-s: var(--spectrum-meter-thickness-small); + --spectrum-meter-thickness-l: var(--spectrum-meter-thickness-large); + --spectrum-meter-top-to-text: var(--spectrum-component-top-to-text); +} +.spectrum-Meter--sizeS, +.spectrum-ProgressBar--sizeS { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2400); + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-small); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-ProgressBar--sizeM { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2400); + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-Meter--sizeL, +.spectrum-ProgressBar--sizeL { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2500); + --spectrum-progressbar-font-size: var(--spectrum-font-size-100); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-200); +} +.spectrum-ProgressBar--sizeXL { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2800); + --spectrum-progressbar-font-size: var(--spectrum-font-size-200); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-extra-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-300); +} +.spectrum-Meter { + --spectrum-progressbar-size-default: var(--mod-meter-inline-size, var(--spectrum-meter-inline-size)); + --spectrum-progressbar-max-size: var(--mod-meter-max-width, var(--spectrum-meter-max-width)); + --spectrum-progressbar-min-size: var(--mod-meter-min-width, var(--spectrum-meter-min-width)); +} +.spectrum-Meter.spectrum-Meter--sizeS { + --spectrum-progressbar-thickness: var(--spectrum-meter-thickness-s); +} +.spectrum-Meter.spectrum-Meter--sizeL { + --spectrum-progressbar-thickness: var(--spectrum-meter-thickness-l); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-Meter.is-positive .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-positive, var(--spectrum-progressbar-fill-color-positive))); +} +.spectrum-Meter.is-notice .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-notice, var(--spectrum-progressbar-fill-color-notice))); +} +.spectrum-Meter.is-negative .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-negative, var(--spectrum-progressbar-fill-color-negative))); +} +.spectrum-ProgressBar { + position: relative; + display: inline-flex; + flex-flow: row wrap; + justify-content: space-between; + align-items: center; + font-size: var(--mod-progressbar-font-size, var(--spectrum-progressbar-font-size)); + vertical-align: top; + inline-size: var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)); + max-inline-size: var(--mod-progressbar-max-size, var(--spectrum-progressbar-max-size)); + min-inline-size: var(--mod-progressbar-min-size, var(--spectrum-progressbar-min-size)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label, +.spectrum-ProgressBar .spectrum-ProgressBar-percentage { + text-align: start; + margin-block-start: var(--mod-progressbar-spacing-top-to-text, var(--spectrum-progressbar-spacing-top-to-text)); + margin-block-end: var(--mod-progressbar-spacing-label-to-progressbar, var(--spectrum-progressbar-spacing-label-to-progressbar)); + line-height: var(--mod-progressbar-line-height, var(--spectrum-progressbar-line-height)); + color: var(--mod-progressbar-text-color, var(--spectrum-progressbar-text-color)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ja), +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ko), +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(zh), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ja), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ko), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(zh) { + line-height: var(--mod-progressbar-line-height-cjk, var(--spectrum-progressbar-line-height-cjk)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label { + flex: 1 1 0%; +} +.spectrum-ProgressBar .spectrum-ProgressBar-percentage { + align-self: flex-start; + margin-inline-start: var(--mod-progressbar-spacing-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-track { + overflow: hidden; + inline-size: 100%; + block-size: var(--mod-progressbar-thickness, var(--spectrum-progressbar-thickness)); + border-radius: var(--spectrum-progressbar-corner-radius); + background-color: var(--highcontrast-progressbar-track-color, var(--mod-progressbar-track-color, var(--spectrum-progressbar-track-color))); +} +.spectrum-ProgressBar .spectrum-ProgressBar-fill { + border: none; + block-size: var(--mod-progressbar-thickness, var(--spectrum-progressbar-thickness)); + transition: width 1s; + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color, var(--spectrum-progressbar-fill-color))); +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + inline-size: var(--mod-progressbar-fill-size-indeterminate, var(--spectrum-progressbar-fill-size-indeterminate)); + position: relative; + animation-timing-function: var(--mod-progressbar-animation-ease-in-out-indeterminate, var(--spectrum-progressbar-animation-ease-in-out-indeterminate)); + will-change: transform; +} +.spectrum-ProgressBar--sideLabel { + display: inline-flex; + flex-flow: row; + justify-content: space-between; +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-track { + flex: 1 1 var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)); +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-label { + flex-grow: 0; + margin-inline-end: var(--mod-progressbar-spacing-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); + margin-block-end: 0; +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-percentage { + order: 3; + text-align: end; + margin-inline-start: var(--mod-spacing-progressbar-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); + margin-block-end: 0; +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill { + background-color: var(--mod-progressbar-fill-color-white, var(--spectrum-progressbar-fill-color-white)); +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill, +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-label, +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-percentage { + color: var(--mod-progressbar-label-and-value-white, var(--spectrum-progressbar-label-and-value-white)); +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-track { + background-color: var(--spectrum-progressbar-track-color-white); +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + animation: indeterminate-loop-ltr var(--mod-progressbar-animation-duration-indeterminate, var(--spectrum-progressbar-animation-duration-indeterminate)) infinite; +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill:dir(rtl), +[dir="rtl"] .spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + animation: indeterminate-loop-rtl var(--mod-progressbar-animation-duration-indeterminate, var(--spectrum-progressbar-animation-duration-indeterminate)) infinite; +} +@keyframes indeterminate-loop-ltr { + 0% { + transform: translate(calc(var(--mod-progressbar-fill-size-indeterminate, var(--spectrum-progressbar-fill-size-indeterminate)) * -1)); + } + to { + transform: translate(var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default))); + } +} +@keyframes indeterminate-loop-rtl { + 0% { + transform: translate(var(--mod-progressbar-size-default, var(--spectrum-progressbar-fill-size-indeterminate))); + } + to { + transform: translate(calc(var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)) * -1)); + } +} +@media (forced-colors: active) { + .spectrum-ProgressBar-track { + forced-color-adjust: none; + --highcontrast-progressbar-fill-color: ButtonText; + --highcontrast-progressbar-track-color: ButtonFace; + border: 1px solid ButtonText; + } +} +/*# sourceMappingURL=components/progressbar/index.css.map */ diff --git a/components/progressbar/index.css b/components/progressbar/index.css new file mode 100644 index 0000000000..453b62e2db --- /dev/null +++ b/components/progressbar/index.css @@ -0,0 +1,209 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ProgressBar { + --spectrum-progressbar-animation-ease-in-out-indeterminate: var(--spectrum-animation-ease-in-out); + --spectrum-progressbar-animation-duration-indeterminate: var(--spectrum-animation-duration-2000); + --spectrum-progressbar-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-progressbar-fill-size-indeterminate: 70%; + --spectrum-progressbar-size-2400: 192px; + --spectrum-progressbar-size-2500: 200px; + --spectrum-progressbar-size-2800: 224px; + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-progressbar-min-size: var(--spectrum-progress-bar-minimum-width); + --spectrum-progressbar-max-size: var(--spectrum-progress-bar-maximum-width); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-medium); + --spectrum-progressbar-line-height: var(--spectrum-line-height-100); + --spectrum-progressbar-spacing-label-to-progressbar: var(--spectrum-spacing-75); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-progressbar-spacing-label-to-text: var(--spectrum-spacing-200); + --spectrum-progressbar-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-progressbar-track-color: var(--spectrum-gray-300); + --spectrum-progressbar-fill-color: var(--spectrum-accent-color-900); + --spectrum-progressbar-fill-color-positive: var(--spectrum-positive-visual-color); + --spectrum-progressbar-fill-color-notice: var(--spectrum-notice-visual-color); + --spectrum-progressbar-fill-color-negative: var(--spectrum-negative-visual-color); + --spectrum-progressbar-label-and-value-white: var(--spectrum-white); + --spectrum-progressbar-track-color-white: var(--spectrum-transparent-white-300); + --spectrum-progressbar-fill-color-white: var(--spectrum-white); + --spectrum-meter-min-width: var(--spectrum-meter-minimum-width); + --spectrum-meter-max-width: var(--spectrum-meter-maximum-width); + --spectrum-meter-inline-size: var(--spectrum-meter-default-width); + --spectrum-meter-thickness-s: var(--spectrum-meter-thickness-small); + --spectrum-meter-thickness-l: var(--spectrum-meter-thickness-large); + --spectrum-meter-top-to-text: var(--spectrum-component-top-to-text); +} +.spectrum-Meter--sizeS, +.spectrum-ProgressBar--sizeS { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2400); + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-small); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-ProgressBar--sizeM { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2400); + --spectrum-progressbar-font-size: var(--spectrum-font-size-75); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-Meter--sizeL, +.spectrum-ProgressBar--sizeL { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2500); + --spectrum-progressbar-font-size: var(--spectrum-font-size-100); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-200); +} +.spectrum-ProgressBar--sizeXL { + --spectrum-progressbar-size-default: var(--spectrum-progressbar-size-2800); + --spectrum-progressbar-font-size: var(--spectrum-font-size-200); + --spectrum-progressbar-thickness: var(--spectrum-progress-bar-thickness-extra-large); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-300); +} +.spectrum-Meter { + --spectrum-progressbar-size-default: var(--mod-meter-inline-size, var(--spectrum-meter-inline-size)); + --spectrum-progressbar-max-size: var(--mod-meter-max-width, var(--spectrum-meter-max-width)); + --spectrum-progressbar-min-size: var(--mod-meter-min-width, var(--spectrum-meter-min-width)); +} +.spectrum-Meter.spectrum-Meter--sizeS { + --spectrum-progressbar-thickness: var(--spectrum-meter-thickness-s); +} +.spectrum-Meter.spectrum-Meter--sizeL { + --spectrum-progressbar-thickness: var(--spectrum-meter-thickness-l); + --spectrum-progressbar-spacing-top-to-text: var(--spectrum-component-top-to-text-75); +} +.spectrum-Meter.is-positive .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-positive, var(--spectrum-progressbar-fill-color-positive))); +} +.spectrum-Meter.is-notice .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-notice, var(--spectrum-progressbar-fill-color-notice))); +} +.spectrum-Meter.is-negative .spectrum-ProgressBar-fill { + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color-negative, var(--spectrum-progressbar-fill-color-negative))); +} +.spectrum-ProgressBar { + position: relative; + display: inline-flex; + flex-flow: row wrap; + justify-content: space-between; + align-items: center; + font-size: var(--mod-progressbar-font-size, var(--spectrum-progressbar-font-size)); + vertical-align: top; + inline-size: var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)); + max-inline-size: var(--mod-progressbar-max-size, var(--spectrum-progressbar-max-size)); + min-inline-size: var(--mod-progressbar-min-size, var(--spectrum-progressbar-min-size)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label, +.spectrum-ProgressBar .spectrum-ProgressBar-percentage { + text-align: start; + margin-block-start: var(--mod-progressbar-spacing-top-to-text, var(--spectrum-progressbar-spacing-top-to-text)); + margin-block-end: var(--mod-progressbar-spacing-label-to-progressbar, var(--spectrum-progressbar-spacing-label-to-progressbar)); + line-height: var(--mod-progressbar-line-height, var(--spectrum-progressbar-line-height)); + color: var(--mod-progressbar-text-color, var(--spectrum-progressbar-text-color)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ja), +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ko), +.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(zh), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ja), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ko), +.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(zh) { + line-height: var(--mod-progressbar-line-height-cjk, var(--spectrum-progressbar-line-height-cjk)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-label { + flex: 1 1 0%; +} +.spectrum-ProgressBar .spectrum-ProgressBar-percentage { + align-self: flex-start; + margin-inline-start: var(--mod-progressbar-spacing-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); +} +.spectrum-ProgressBar .spectrum-ProgressBar-track { + overflow: hidden; + inline-size: 100%; + block-size: var(--mod-progressbar-thickness, var(--spectrum-progressbar-thickness)); + border-radius: var(--spectrum-progressbar-corner-radius); + background-color: var(--highcontrast-progressbar-track-color, var(--mod-progressbar-track-color, var(--spectrum-progressbar-track-color))); +} +.spectrum-ProgressBar .spectrum-ProgressBar-fill { + border: none; + block-size: var(--mod-progressbar-thickness, var(--spectrum-progressbar-thickness)); + transition: width 1s; + background-color: var(--highcontrast-progressbar-fill-color, var(--mod-progressbar-fill-color, var(--spectrum-progressbar-fill-color))); +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + inline-size: var(--mod-progressbar-fill-size-indeterminate, var(--spectrum-progressbar-fill-size-indeterminate)); + position: relative; + animation-timing-function: var(--mod-progressbar-animation-ease-in-out-indeterminate, var(--spectrum-progressbar-animation-ease-in-out-indeterminate)); + will-change: transform; +} +.spectrum-ProgressBar--sideLabel { + display: inline-flex; + flex-flow: row; + justify-content: space-between; +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-track { + flex: 1 1 var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)); +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-label { + flex-grow: 0; + margin-inline-end: var(--mod-progressbar-spacing-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); + margin-block-end: 0; +} +.spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-percentage { + order: 3; + text-align: end; + margin-inline-start: var(--mod-spacing-progressbar-label-to-text, var(--spectrum-progressbar-spacing-label-to-text)); + margin-block-end: 0; +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill { + background-color: var(--mod-progressbar-fill-color-white, var(--spectrum-progressbar-fill-color-white)); +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill, +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-label, +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-percentage { + color: var(--mod-progressbar-label-and-value-white, var(--spectrum-progressbar-label-and-value-white)); +} +.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-track { + background-color: var(--spectrum-progressbar-track-color-white); +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + animation: indeterminate-loop-ltr var(--mod-progressbar-animation-duration-indeterminate, var(--spectrum-progressbar-animation-duration-indeterminate)) infinite; +} +.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill:dir(rtl), +[dir="rtl"] .spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill { + animation: indeterminate-loop-rtl var(--mod-progressbar-animation-duration-indeterminate, var(--spectrum-progressbar-animation-duration-indeterminate)) infinite; +} +@keyframes indeterminate-loop-ltr { + 0% { + transform: translate(calc(var(--mod-progressbar-fill-size-indeterminate, var(--spectrum-progressbar-fill-size-indeterminate)) * -1)); + } + to { + transform: translate(var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default))); + } +} +@keyframes indeterminate-loop-rtl { + 0% { + transform: translate(var(--mod-progressbar-size-default, var(--spectrum-progressbar-fill-size-indeterminate))); + } + to { + transform: translate(calc(var(--mod-progressbar-size-default, var(--spectrum-progressbar-size-default)) * -1)); + } +} +@media (forced-colors: active) { + .spectrum-ProgressBar-track { + forced-color-adjust: none; + --highcontrast-progressbar-fill-color: ButtonText; + --highcontrast-progressbar-track-color: ButtonFace; + border: 1px solid ButtonText; + } +} +/*# sourceMappingURL=components/progressbar/index.css.map */ diff --git a/components/progressbar/metadata.json b/components/progressbar/metadata.json new file mode 100644 index 0000000000..d8787f8a19 --- /dev/null +++ b/components/progressbar/metadata.json @@ -0,0 +1,132 @@ +{ + "selectors": [ + ".spectrum-Meter", + ".spectrum-Meter--sizeL,\n.spectrum-ProgressBar--sizeL", + ".spectrum-Meter--sizeS,\n.spectrum-ProgressBar--sizeS", + ".spectrum-Meter.is-negative .spectrum-ProgressBar-fill", + ".spectrum-Meter.is-notice .spectrum-ProgressBar-fill", + ".spectrum-Meter.is-positive .spectrum-ProgressBar-fill", + ".spectrum-Meter.spectrum-Meter--sizeL", + ".spectrum-Meter.spectrum-Meter--sizeS", + ".spectrum-ProgressBar", + ".spectrum-ProgressBar .spectrum-ProgressBar-fill", + ".spectrum-ProgressBar .spectrum-ProgressBar-label", + ".spectrum-ProgressBar .spectrum-ProgressBar-label,\n.spectrum-ProgressBar .spectrum-ProgressBar-percentage", + ".spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ja),\n.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ko),\n.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(zh),\n.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ja),\n.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ko),\n.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(zh)", + ".spectrum-ProgressBar .spectrum-ProgressBar-percentage", + ".spectrum-ProgressBar .spectrum-ProgressBar-track", + ".spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill", + ".spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill:dir(rtl),\n[dir=\"rtl\"] .spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill", + ".spectrum-ProgressBar--sideLabel", + ".spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-label", + ".spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-percentage", + ".spectrum-ProgressBar--sideLabel .spectrum-ProgressBar-track", + ".spectrum-ProgressBar--sizeM", + ".spectrum-ProgressBar--sizeXL", + ".spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill", + ".spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-fill,\n.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-label,\n.spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-percentage", + ".spectrum-ProgressBar--staticWhite .spectrum-ProgressBar-track", + ".spectrum-ProgressBar-track", + "0%", + "to" + ], + "mods": [ + "--mod-meter-inline-size", + "--mod-meter-max-width", + "--mod-meter-min-width", + "--mod-progressbar-animation-duration-indeterminate", + "--mod-progressbar-animation-ease-in-out-indeterminate", + "--mod-progressbar-fill-color", + "--mod-progressbar-fill-color-negative", + "--mod-progressbar-fill-color-notice", + "--mod-progressbar-fill-color-positive", + "--mod-progressbar-fill-color-white", + "--mod-progressbar-fill-size-indeterminate", + "--mod-progressbar-font-size", + "--mod-progressbar-label-and-value-white", + "--mod-progressbar-line-height", + "--mod-progressbar-line-height-cjk", + "--mod-progressbar-max-size", + "--mod-progressbar-min-size", + "--mod-progressbar-size-default", + "--mod-progressbar-spacing-label-to-progressbar", + "--mod-progressbar-spacing-label-to-text", + "--mod-progressbar-spacing-top-to-text", + "--mod-progressbar-text-color", + "--mod-progressbar-thickness", + "--mod-progressbar-track-color", + "--mod-spacing-progressbar-label-to-text" + ], + "spectrum": [ + "--spectrum-accent-color-900", + "--spectrum-animation-duration-2000", + "--spectrum-animation-ease-in-out", + "--spectrum-cjk-line-height-100", + "--spectrum-component-top-to-text", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-corner-radius-100", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-75", + "--spectrum-gray-300", + "--spectrum-line-height-100", + "--spectrum-meter-default-width", + "--spectrum-meter-inline-size", + "--spectrum-meter-max-width", + "--spectrum-meter-maximum-width", + "--spectrum-meter-min-width", + "--spectrum-meter-minimum-width", + "--spectrum-meter-thickness-l", + "--spectrum-meter-thickness-large", + "--spectrum-meter-thickness-s", + "--spectrum-meter-thickness-small", + "--spectrum-negative-visual-color", + "--spectrum-neutral-content-color-default", + "--spectrum-notice-visual-color", + "--spectrum-positive-visual-color", + "--spectrum-progress-bar-maximum-width", + "--spectrum-progress-bar-minimum-width", + "--spectrum-progress-bar-thickness-extra-large", + "--spectrum-progress-bar-thickness-large", + "--spectrum-progress-bar-thickness-medium", + "--spectrum-progress-bar-thickness-small", + "--spectrum-progressbar-animation-duration-indeterminate", + "--spectrum-progressbar-animation-ease-in-out-indeterminate", + "--spectrum-progressbar-corner-radius", + "--spectrum-progressbar-fill-color", + "--spectrum-progressbar-fill-color-negative", + "--spectrum-progressbar-fill-color-notice", + "--spectrum-progressbar-fill-color-positive", + "--spectrum-progressbar-fill-color-white", + "--spectrum-progressbar-fill-size-indeterminate", + "--spectrum-progressbar-font-size", + "--spectrum-progressbar-label-and-value-white", + "--spectrum-progressbar-line-height", + "--spectrum-progressbar-line-height-cjk", + "--spectrum-progressbar-max-size", + "--spectrum-progressbar-min-size", + "--spectrum-progressbar-size-2400", + "--spectrum-progressbar-size-2500", + "--spectrum-progressbar-size-2800", + "--spectrum-progressbar-size-default", + "--spectrum-progressbar-spacing-label-to-progressbar", + "--spectrum-progressbar-spacing-label-to-text", + "--spectrum-progressbar-spacing-top-to-text", + "--spectrum-progressbar-text-color", + "--spectrum-progressbar-thickness", + "--spectrum-progressbar-track-color", + "--spectrum-progressbar-track-color-white", + "--spectrum-spacing-200", + "--spectrum-spacing-75", + "--spectrum-transparent-white-300", + "--spectrum-white" + ], + "system": [], + "a11y": [ + "--highcontrast-progressbar-fill-color", + "--highcontrast-progressbar-track-color" + ] +} diff --git a/components/progressbar/meter.template.js b/components/progressbar/meter.template.js new file mode 100644 index 0000000000..9183366b95 --- /dev/null +++ b/components/progressbar/meter.template.js @@ -0,0 +1,71 @@ +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { styleMap } from "lit/directives/style-map.js"; +import { Template as ProgressBar } from "./template.js"; + +import "../index.css"; + +export const Template = ({ + customClasses = [], + fill, + size = "s", + ...item +}, context) => ProgressBar({ + customClasses: [ + ...customClasses, + "spectrum-Meter", + typeof size !== "undefined" ? `spectrum-Meter--size${size.toUpperCase()}` : null, + typeof fill !== "undefined" ? `is-${fill}` : null, + ].filter(Boolean), + size, + ...item, +}, context); + +export const MeterGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${[{}, + { + heading: "Large", + size: "l", + }, + { + heading: "Positive", + fill: "positive", + }, + { + heading: "Negative", + fill: "negative", + }, + { + heading: "Notice", + fill: "notice", + }, + { + heading: "Text overflow", + fill: "notice", + label: "Storage space remaining for XYZ user" + }].map(({ heading, ...item }) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [heading], + }, context)} + ${Template({ + ...args, + ...item, + }, context)} +
    + `)} +
    +`; diff --git a/components/progressbar/package.json b/components/progressbar/package.json new file mode 100644 index 0000000000..38cd7da6de --- /dev/null +++ b/components/progressbar/package.json @@ -0,0 +1,46 @@ +{ + "name": "@spectrum-css/progressbar", + "version": "4.1.3", + "description": "The Spectrum CSS progress bar component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/progressbar", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/progressbar" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/fieldlabel": ">=8", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/fieldlabel": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/fieldlabel": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/progressbar/template.js b/components/progressbar/template.js new file mode 100644 index 0000000000..faf6f0424b --- /dev/null +++ b/components/progressbar/template.js @@ -0,0 +1,160 @@ +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { Template as Typography } from "@spectrum-css/typography/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { capitalize, lowerCase } from "lodash-es"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-ProgressBar", + customClasses = [], + labelPosition, + staticColor, + customWidth, + indeterminate, + label, + value, + customStyles = {}, + size = "m", +}, context) => html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap({ + "width": customWidth, + ...customStyles, + })} + value="${value}%" + role="progressbar" + aria-valuenow="${value}%" + aria-valuemin="0" + aria-valuemax="100" + > + ${FieldLabel({ + size, + label, + customClasses: [`${rootClass}-label`], + }, context)} + ${FieldLabel({ + size, + label: indeterminate ? "" : `${value}%`, + customClasses: [`${rootClass}-percentage`], + }, context)} +
    +
    +
    +
    +`; + +const Sizes = (args, context) => html` + ${["s", "m", "l", "xl"].map((size) => html` +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: [ + { + xxs: "Extra-extra-small", + xs: "Extra-small", + s: "Small", + m: "Medium", + l: "Large", + xl: "Extra-large", + xxl: "Extra-extra-large", + }[size], + ], + customClasses: ["chromatic-ignore"], + }, context)} + ${Template({ ...args, size }, context)} +
    + `)} +`; + +export const ProgressBarGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    +
    + ${Template(args, context)} +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: ["Side label"], + customClasses: ["chromatic-ignore"], + }, context)} + ${Template({ + ...args, + labelPosition: "side", + }, context)} +
    +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: ["Custom width"], + customClasses: ["chromatic-ignore"], + }, context)} + ${Template({ + ...args, + customWidth: "225px", + }, context)} +
    +
    + ${Typography({ + semantics: "heading", + size: "xs", + content: ["Indeterminate"], + customClasses: ["chromatic-ignore"], + }, context)} + ${Template({ + ...args, + indeterminate: "indeterminate", + }, context)} +
    +
    +
    + ${Typography({ + semantics: "heading", + size: "s", + content: ["Sizing"], + customClasses: ["chromatic-ignore"], + }, context)} +
    + ${Sizes(args, context)} +
    +
    +
    +`; diff --git a/components/progresscircle/index-base.css b/components/progresscircle/index-base.css new file mode 100644 index 0000000000..caa851747e --- /dev/null +++ b/components/progresscircle/index-base.css @@ -0,0 +1,495 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ProgressCircle--indeterminate-fill-submask-2 { + animation: spectrum-fill-mask-2 1s linear infinite; +} +@keyframes spectrum-fill-mask-1 { + 0% { + transform: rotate(90deg); + } + 1.69% { + transform: rotate(72.3deg); + } + 3.39% { + transform: rotate(55.5deg); + } + 5.08% { + transform: rotate(40.3deg); + } + 6.78% { + transform: rotate(25deg); + } + 8.47% { + transform: rotate(10.6deg); + } + 10.17% { + transform: rotate(0deg); + } + 11.86% { + transform: rotate(0deg); + } + 13.56% { + transform: rotate(0deg); + } + 15.25% { + transform: rotate(0deg); + } + 16.95% { + transform: rotate(0deg); + } + 18.64% { + transform: rotate(0deg); + } + 20.34% { + transform: rotate(0deg); + } + 22.03% { + transform: rotate(0deg); + } + 23.73% { + transform: rotate(0deg); + } + 25.42% { + transform: rotate(0deg); + } + 27.12% { + transform: rotate(0deg); + } + 28.81% { + transform: rotate(0deg); + } + 30.51% { + transform: rotate(0deg); + } + 32.2% { + transform: rotate(0deg); + } + 33.9% { + transform: rotate(0deg); + } + 35.59% { + transform: rotate(0deg); + } + 37.29% { + transform: rotate(0deg); + } + 38.98% { + transform: rotate(0deg); + } + 40.68% { + transform: rotate(0deg); + } + 42.37% { + transform: rotate(5.3deg); + } + 44.07% { + transform: rotate(13.4deg); + } + 45.76% { + transform: rotate(20.6deg); + } + 47.46% { + transform: rotate(29deg); + } + 49.15% { + transform: rotate(36.5deg); + } + 50.85% { + transform: rotate(42.6deg); + } + 52.54% { + transform: rotate(48.8deg); + } + 54.24% { + transform: rotate(54.2deg); + } + 55.93% { + transform: rotate(59.4deg); + } + 57.63% { + transform: rotate(63.2deg); + } + 59.32% { + transform: rotate(67.2deg); + } + 61.02% { + transform: rotate(70.8deg); + } + 62.71% { + transform: rotate(73.8deg); + } + 64.41% { + transform: rotate(76.2deg); + } + 66.1% { + transform: rotate(78.7deg); + } + 67.8% { + transform: rotate(80.6deg); + } + 69.49% { + transform: rotate(82.6deg); + } + 71.19% { + transform: rotate(83.7deg); + } + 72.88% { + transform: rotate(85deg); + } + 74.58% { + transform: rotate(86.3deg); + } + 76.27% { + transform: rotate(87deg); + } + 77.97% { + transform: rotate(87.7deg); + } + 79.66% { + transform: rotate(88.3deg); + } + 81.36% { + transform: rotate(88.6deg); + } + 83.05% { + transform: rotate(89.2deg); + } + 84.75% { + transform: rotate(89.2deg); + } + 86.44% { + transform: rotate(89.5deg); + } + 88.14% { + transform: rotate(89.9deg); + } + 89.83% { + transform: rotate(89.7deg); + } + 91.53% { + transform: rotate(90.1deg); + } + 93.22% { + transform: rotate(90.2deg); + } + 94.92% { + transform: rotate(90.1deg); + } + 96.61% { + transform: rotate(90deg); + } + 98.31% { + transform: rotate(89.8deg); + } + to { + transform: rotate(90deg); + } +} +@keyframes spectrum-fill-mask-2 { + 0% { + transform: rotate(180deg); + } + 1.69% { + transform: rotate(180deg); + } + 3.39% { + transform: rotate(180deg); + } + 5.08% { + transform: rotate(180deg); + } + 6.78% { + transform: rotate(180deg); + } + 8.47% { + transform: rotate(180deg); + } + 10.17% { + transform: rotate(179.2deg); + } + 11.86% { + transform: rotate(164deg); + } + 13.56% { + transform: rotate(151.8deg); + } + 15.25% { + transform: rotate(140.8deg); + } + 16.95% { + transform: rotate(130.3deg); + } + 18.64% { + transform: rotate(120.4deg); + } + 20.34% { + transform: rotate(110.8deg); + } + 22.03% { + transform: rotate(101.6deg); + } + 23.73% { + transform: rotate(93.5deg); + } + 25.42% { + transform: rotate(85.4deg); + } + 27.12% { + transform: rotate(78.1deg); + } + 28.81% { + transform: rotate(71.2deg); + } + 30.51% { + transform: rotate(89.1deg); + } + 32.2% { + transform: rotate(105.5deg); + } + 33.9% { + transform: rotate(121.3deg); + } + 35.59% { + transform: rotate(135.5deg); + } + 37.29% { + transform: rotate(148.4deg); + } + 38.98% { + transform: rotate(161deg); + } + 40.68% { + transform: rotate(173.5deg); + } + 42.37% { + transform: rotate(180deg); + } + 44.07% { + transform: rotate(180deg); + } + 45.76% { + transform: rotate(180deg); + } + 47.46% { + transform: rotate(180deg); + } + 49.15% { + transform: rotate(180deg); + } + 50.85% { + transform: rotate(180deg); + } + 52.54% { + transform: rotate(180deg); + } + 54.24% { + transform: rotate(180deg); + } + 55.93% { + transform: rotate(180deg); + } + 57.63% { + transform: rotate(180deg); + } + 59.32% { + transform: rotate(180deg); + } + 61.02% { + transform: rotate(180deg); + } + 62.71% { + transform: rotate(180deg); + } + 64.41% { + transform: rotate(180deg); + } + 66.1% { + transform: rotate(180deg); + } + 67.8% { + transform: rotate(180deg); + } + 69.49% { + transform: rotate(180deg); + } + 71.19% { + transform: rotate(180deg); + } + 72.88% { + transform: rotate(180deg); + } + 74.58% { + transform: rotate(180deg); + } + 76.27% { + transform: rotate(180deg); + } + 77.97% { + transform: rotate(180deg); + } + 79.66% { + transform: rotate(180deg); + } + 81.36% { + transform: rotate(180deg); + } + 83.05% { + transform: rotate(180deg); + } + 84.75% { + transform: rotate(180deg); + } + 86.44% { + transform: rotate(180deg); + } + 88.14% { + transform: rotate(180deg); + } + 89.83% { + transform: rotate(180deg); + } + 91.53% { + transform: rotate(180deg); + } + 93.22% { + transform: rotate(180deg); + } + 94.92% { + transform: rotate(180deg); + } + 96.61% { + transform: rotate(180deg); + } + 98.31% { + transform: rotate(180deg); + } + to { + transform: rotate(180deg); + } +} +@keyframes spectrum-fills-rotate { + 0% { + transform: rotate(-90deg); + } + to { + transform: rotate(270deg); + } +} +.spectrum-ProgressCircle { + --spectrum-progress-circle-track-border-color: var(--spectrum-gray-300); + --spectrum-progress-circle-fill-border-color: var(--spectrum-accent-content-color-default); + --spectrum-progress-circle-track-border-color-over-background: var(--spectrum-transparent-white-300); + --spectrum-progress-circle-fill-border-color-over-background: var(--spectrum-transparent-white-900); + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-medium); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); + --spectrum-progress-circle-track-border-style: solid; +} +.spectrum-ProgressCircle--small { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-small); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-small); +} +.spectrum-ProgressCircle--medium { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-medium); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); +} +.spectrum-ProgressCircle--large { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-large); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-large); +} +@media (forced-colors: active) { + .spectrum-ProgressCircle { + --highcontrast-progress-circle-fill-border-color: Highlight; + --highcontrast-progress-circle-fill-border-color-over-background: Highlight; + } + .spectrum-ProgressCircle-track { + --spectrum-progress-circle-track-border-style: double; + } +} +.spectrum-ProgressCircle { + display: inline-block; + position: var(--mod-progress-circle-position, relative); + direction: ltr; + transform: translateZ(0); +} +.spectrum-ProgressCircle, +.spectrum-ProgressCircle-track { + inline-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + block-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); +} +.spectrum-ProgressCircle-track { + box-sizing: border-box; + border-style: var(--highcontrast-progress-circle-track-border-style, var(--mod-progress-circle-track-border-style, var(--spectrum-progress-circle-track-border-style))); + border-width: var(--mod-progress-circle-thickness, var(--spectrum-progress-circle-thickness)); + border-radius: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-color: var(--mod-progress-circle-track-border-color, var(--spectrum-progress-circle-track-border-color)); +} +.spectrum-ProgressCircle-fills { + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; +} +.spectrum-ProgressCircle-fill { + box-sizing: border-box; + inline-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + block-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-style: solid; + border-width: var(--mod-progress-circle-thickness, var(--spectrum-progress-circle-thickness)); + border-radius: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-color: var(--highcontrast-progress-circle-fill-border-color, var(--mod-progress-circle-fill-border-color, var(--spectrum-progress-circle-fill-border-color))); +} +.spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-track { + border-color: var(--mod-progress-circle-track-border-color-over-background, var(--spectrum-progress-circle-track-border-color-over-background)); +} +.spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-fill { + border-color: var(--highcontrast-progress-circle-fill-border-color-over-background, var(--mod-progress-circle-fill-border-color-over-background, var(--spectrum-progress-circle-fill-border-color-over-background))); +} +.spectrum-ProgressCircle-fillMask1, +.spectrum-ProgressCircle-fillMask2 { + inline-size: 50%; + block-size: 100%; + transform-origin: 100% center; + transform: rotate(180deg); + overflow: hidden; + position: absolute; +} +.spectrum-ProgressCircle-fillSubMask1, +.spectrum-ProgressCircle-fillSubMask2 { + inline-size: 100%; + block-size: 100%; + transform-origin: 100% center; + overflow: hidden; + transform: rotate(-180deg); +} +.spectrum-ProgressCircle-fillMask2 { + transform: rotate(0deg); +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fills { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fills-rotate 1s cubic-bezier(0.25, 0.78, 0.48, 0.89) infinite; + transform-origin: center; +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask1 { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fill-mask-1 1s linear infinite; +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask2 { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fill-mask-2 1s linear infinite; +} +/*# sourceMappingURL=components/progresscircle/index.css.map */ diff --git a/components/progresscircle/index-vars.css b/components/progresscircle/index-vars.css new file mode 100644 index 0000000000..caa851747e --- /dev/null +++ b/components/progresscircle/index-vars.css @@ -0,0 +1,495 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ProgressCircle--indeterminate-fill-submask-2 { + animation: spectrum-fill-mask-2 1s linear infinite; +} +@keyframes spectrum-fill-mask-1 { + 0% { + transform: rotate(90deg); + } + 1.69% { + transform: rotate(72.3deg); + } + 3.39% { + transform: rotate(55.5deg); + } + 5.08% { + transform: rotate(40.3deg); + } + 6.78% { + transform: rotate(25deg); + } + 8.47% { + transform: rotate(10.6deg); + } + 10.17% { + transform: rotate(0deg); + } + 11.86% { + transform: rotate(0deg); + } + 13.56% { + transform: rotate(0deg); + } + 15.25% { + transform: rotate(0deg); + } + 16.95% { + transform: rotate(0deg); + } + 18.64% { + transform: rotate(0deg); + } + 20.34% { + transform: rotate(0deg); + } + 22.03% { + transform: rotate(0deg); + } + 23.73% { + transform: rotate(0deg); + } + 25.42% { + transform: rotate(0deg); + } + 27.12% { + transform: rotate(0deg); + } + 28.81% { + transform: rotate(0deg); + } + 30.51% { + transform: rotate(0deg); + } + 32.2% { + transform: rotate(0deg); + } + 33.9% { + transform: rotate(0deg); + } + 35.59% { + transform: rotate(0deg); + } + 37.29% { + transform: rotate(0deg); + } + 38.98% { + transform: rotate(0deg); + } + 40.68% { + transform: rotate(0deg); + } + 42.37% { + transform: rotate(5.3deg); + } + 44.07% { + transform: rotate(13.4deg); + } + 45.76% { + transform: rotate(20.6deg); + } + 47.46% { + transform: rotate(29deg); + } + 49.15% { + transform: rotate(36.5deg); + } + 50.85% { + transform: rotate(42.6deg); + } + 52.54% { + transform: rotate(48.8deg); + } + 54.24% { + transform: rotate(54.2deg); + } + 55.93% { + transform: rotate(59.4deg); + } + 57.63% { + transform: rotate(63.2deg); + } + 59.32% { + transform: rotate(67.2deg); + } + 61.02% { + transform: rotate(70.8deg); + } + 62.71% { + transform: rotate(73.8deg); + } + 64.41% { + transform: rotate(76.2deg); + } + 66.1% { + transform: rotate(78.7deg); + } + 67.8% { + transform: rotate(80.6deg); + } + 69.49% { + transform: rotate(82.6deg); + } + 71.19% { + transform: rotate(83.7deg); + } + 72.88% { + transform: rotate(85deg); + } + 74.58% { + transform: rotate(86.3deg); + } + 76.27% { + transform: rotate(87deg); + } + 77.97% { + transform: rotate(87.7deg); + } + 79.66% { + transform: rotate(88.3deg); + } + 81.36% { + transform: rotate(88.6deg); + } + 83.05% { + transform: rotate(89.2deg); + } + 84.75% { + transform: rotate(89.2deg); + } + 86.44% { + transform: rotate(89.5deg); + } + 88.14% { + transform: rotate(89.9deg); + } + 89.83% { + transform: rotate(89.7deg); + } + 91.53% { + transform: rotate(90.1deg); + } + 93.22% { + transform: rotate(90.2deg); + } + 94.92% { + transform: rotate(90.1deg); + } + 96.61% { + transform: rotate(90deg); + } + 98.31% { + transform: rotate(89.8deg); + } + to { + transform: rotate(90deg); + } +} +@keyframes spectrum-fill-mask-2 { + 0% { + transform: rotate(180deg); + } + 1.69% { + transform: rotate(180deg); + } + 3.39% { + transform: rotate(180deg); + } + 5.08% { + transform: rotate(180deg); + } + 6.78% { + transform: rotate(180deg); + } + 8.47% { + transform: rotate(180deg); + } + 10.17% { + transform: rotate(179.2deg); + } + 11.86% { + transform: rotate(164deg); + } + 13.56% { + transform: rotate(151.8deg); + } + 15.25% { + transform: rotate(140.8deg); + } + 16.95% { + transform: rotate(130.3deg); + } + 18.64% { + transform: rotate(120.4deg); + } + 20.34% { + transform: rotate(110.8deg); + } + 22.03% { + transform: rotate(101.6deg); + } + 23.73% { + transform: rotate(93.5deg); + } + 25.42% { + transform: rotate(85.4deg); + } + 27.12% { + transform: rotate(78.1deg); + } + 28.81% { + transform: rotate(71.2deg); + } + 30.51% { + transform: rotate(89.1deg); + } + 32.2% { + transform: rotate(105.5deg); + } + 33.9% { + transform: rotate(121.3deg); + } + 35.59% { + transform: rotate(135.5deg); + } + 37.29% { + transform: rotate(148.4deg); + } + 38.98% { + transform: rotate(161deg); + } + 40.68% { + transform: rotate(173.5deg); + } + 42.37% { + transform: rotate(180deg); + } + 44.07% { + transform: rotate(180deg); + } + 45.76% { + transform: rotate(180deg); + } + 47.46% { + transform: rotate(180deg); + } + 49.15% { + transform: rotate(180deg); + } + 50.85% { + transform: rotate(180deg); + } + 52.54% { + transform: rotate(180deg); + } + 54.24% { + transform: rotate(180deg); + } + 55.93% { + transform: rotate(180deg); + } + 57.63% { + transform: rotate(180deg); + } + 59.32% { + transform: rotate(180deg); + } + 61.02% { + transform: rotate(180deg); + } + 62.71% { + transform: rotate(180deg); + } + 64.41% { + transform: rotate(180deg); + } + 66.1% { + transform: rotate(180deg); + } + 67.8% { + transform: rotate(180deg); + } + 69.49% { + transform: rotate(180deg); + } + 71.19% { + transform: rotate(180deg); + } + 72.88% { + transform: rotate(180deg); + } + 74.58% { + transform: rotate(180deg); + } + 76.27% { + transform: rotate(180deg); + } + 77.97% { + transform: rotate(180deg); + } + 79.66% { + transform: rotate(180deg); + } + 81.36% { + transform: rotate(180deg); + } + 83.05% { + transform: rotate(180deg); + } + 84.75% { + transform: rotate(180deg); + } + 86.44% { + transform: rotate(180deg); + } + 88.14% { + transform: rotate(180deg); + } + 89.83% { + transform: rotate(180deg); + } + 91.53% { + transform: rotate(180deg); + } + 93.22% { + transform: rotate(180deg); + } + 94.92% { + transform: rotate(180deg); + } + 96.61% { + transform: rotate(180deg); + } + 98.31% { + transform: rotate(180deg); + } + to { + transform: rotate(180deg); + } +} +@keyframes spectrum-fills-rotate { + 0% { + transform: rotate(-90deg); + } + to { + transform: rotate(270deg); + } +} +.spectrum-ProgressCircle { + --spectrum-progress-circle-track-border-color: var(--spectrum-gray-300); + --spectrum-progress-circle-fill-border-color: var(--spectrum-accent-content-color-default); + --spectrum-progress-circle-track-border-color-over-background: var(--spectrum-transparent-white-300); + --spectrum-progress-circle-fill-border-color-over-background: var(--spectrum-transparent-white-900); + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-medium); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); + --spectrum-progress-circle-track-border-style: solid; +} +.spectrum-ProgressCircle--small { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-small); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-small); +} +.spectrum-ProgressCircle--medium { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-medium); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); +} +.spectrum-ProgressCircle--large { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-large); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-large); +} +@media (forced-colors: active) { + .spectrum-ProgressCircle { + --highcontrast-progress-circle-fill-border-color: Highlight; + --highcontrast-progress-circle-fill-border-color-over-background: Highlight; + } + .spectrum-ProgressCircle-track { + --spectrum-progress-circle-track-border-style: double; + } +} +.spectrum-ProgressCircle { + display: inline-block; + position: var(--mod-progress-circle-position, relative); + direction: ltr; + transform: translateZ(0); +} +.spectrum-ProgressCircle, +.spectrum-ProgressCircle-track { + inline-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + block-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); +} +.spectrum-ProgressCircle-track { + box-sizing: border-box; + border-style: var(--highcontrast-progress-circle-track-border-style, var(--mod-progress-circle-track-border-style, var(--spectrum-progress-circle-track-border-style))); + border-width: var(--mod-progress-circle-thickness, var(--spectrum-progress-circle-thickness)); + border-radius: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-color: var(--mod-progress-circle-track-border-color, var(--spectrum-progress-circle-track-border-color)); +} +.spectrum-ProgressCircle-fills { + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; +} +.spectrum-ProgressCircle-fill { + box-sizing: border-box; + inline-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + block-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-style: solid; + border-width: var(--mod-progress-circle-thickness, var(--spectrum-progress-circle-thickness)); + border-radius: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-color: var(--highcontrast-progress-circle-fill-border-color, var(--mod-progress-circle-fill-border-color, var(--spectrum-progress-circle-fill-border-color))); +} +.spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-track { + border-color: var(--mod-progress-circle-track-border-color-over-background, var(--spectrum-progress-circle-track-border-color-over-background)); +} +.spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-fill { + border-color: var(--highcontrast-progress-circle-fill-border-color-over-background, var(--mod-progress-circle-fill-border-color-over-background, var(--spectrum-progress-circle-fill-border-color-over-background))); +} +.spectrum-ProgressCircle-fillMask1, +.spectrum-ProgressCircle-fillMask2 { + inline-size: 50%; + block-size: 100%; + transform-origin: 100% center; + transform: rotate(180deg); + overflow: hidden; + position: absolute; +} +.spectrum-ProgressCircle-fillSubMask1, +.spectrum-ProgressCircle-fillSubMask2 { + inline-size: 100%; + block-size: 100%; + transform-origin: 100% center; + overflow: hidden; + transform: rotate(-180deg); +} +.spectrum-ProgressCircle-fillMask2 { + transform: rotate(0deg); +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fills { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fills-rotate 1s cubic-bezier(0.25, 0.78, 0.48, 0.89) infinite; + transform-origin: center; +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask1 { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fill-mask-1 1s linear infinite; +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask2 { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fill-mask-2 1s linear infinite; +} +/*# sourceMappingURL=components/progresscircle/index.css.map */ diff --git a/components/progresscircle/index.css b/components/progresscircle/index.css new file mode 100644 index 0000000000..caa851747e --- /dev/null +++ b/components/progresscircle/index.css @@ -0,0 +1,495 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-ProgressCircle--indeterminate-fill-submask-2 { + animation: spectrum-fill-mask-2 1s linear infinite; +} +@keyframes spectrum-fill-mask-1 { + 0% { + transform: rotate(90deg); + } + 1.69% { + transform: rotate(72.3deg); + } + 3.39% { + transform: rotate(55.5deg); + } + 5.08% { + transform: rotate(40.3deg); + } + 6.78% { + transform: rotate(25deg); + } + 8.47% { + transform: rotate(10.6deg); + } + 10.17% { + transform: rotate(0deg); + } + 11.86% { + transform: rotate(0deg); + } + 13.56% { + transform: rotate(0deg); + } + 15.25% { + transform: rotate(0deg); + } + 16.95% { + transform: rotate(0deg); + } + 18.64% { + transform: rotate(0deg); + } + 20.34% { + transform: rotate(0deg); + } + 22.03% { + transform: rotate(0deg); + } + 23.73% { + transform: rotate(0deg); + } + 25.42% { + transform: rotate(0deg); + } + 27.12% { + transform: rotate(0deg); + } + 28.81% { + transform: rotate(0deg); + } + 30.51% { + transform: rotate(0deg); + } + 32.2% { + transform: rotate(0deg); + } + 33.9% { + transform: rotate(0deg); + } + 35.59% { + transform: rotate(0deg); + } + 37.29% { + transform: rotate(0deg); + } + 38.98% { + transform: rotate(0deg); + } + 40.68% { + transform: rotate(0deg); + } + 42.37% { + transform: rotate(5.3deg); + } + 44.07% { + transform: rotate(13.4deg); + } + 45.76% { + transform: rotate(20.6deg); + } + 47.46% { + transform: rotate(29deg); + } + 49.15% { + transform: rotate(36.5deg); + } + 50.85% { + transform: rotate(42.6deg); + } + 52.54% { + transform: rotate(48.8deg); + } + 54.24% { + transform: rotate(54.2deg); + } + 55.93% { + transform: rotate(59.4deg); + } + 57.63% { + transform: rotate(63.2deg); + } + 59.32% { + transform: rotate(67.2deg); + } + 61.02% { + transform: rotate(70.8deg); + } + 62.71% { + transform: rotate(73.8deg); + } + 64.41% { + transform: rotate(76.2deg); + } + 66.1% { + transform: rotate(78.7deg); + } + 67.8% { + transform: rotate(80.6deg); + } + 69.49% { + transform: rotate(82.6deg); + } + 71.19% { + transform: rotate(83.7deg); + } + 72.88% { + transform: rotate(85deg); + } + 74.58% { + transform: rotate(86.3deg); + } + 76.27% { + transform: rotate(87deg); + } + 77.97% { + transform: rotate(87.7deg); + } + 79.66% { + transform: rotate(88.3deg); + } + 81.36% { + transform: rotate(88.6deg); + } + 83.05% { + transform: rotate(89.2deg); + } + 84.75% { + transform: rotate(89.2deg); + } + 86.44% { + transform: rotate(89.5deg); + } + 88.14% { + transform: rotate(89.9deg); + } + 89.83% { + transform: rotate(89.7deg); + } + 91.53% { + transform: rotate(90.1deg); + } + 93.22% { + transform: rotate(90.2deg); + } + 94.92% { + transform: rotate(90.1deg); + } + 96.61% { + transform: rotate(90deg); + } + 98.31% { + transform: rotate(89.8deg); + } + to { + transform: rotate(90deg); + } +} +@keyframes spectrum-fill-mask-2 { + 0% { + transform: rotate(180deg); + } + 1.69% { + transform: rotate(180deg); + } + 3.39% { + transform: rotate(180deg); + } + 5.08% { + transform: rotate(180deg); + } + 6.78% { + transform: rotate(180deg); + } + 8.47% { + transform: rotate(180deg); + } + 10.17% { + transform: rotate(179.2deg); + } + 11.86% { + transform: rotate(164deg); + } + 13.56% { + transform: rotate(151.8deg); + } + 15.25% { + transform: rotate(140.8deg); + } + 16.95% { + transform: rotate(130.3deg); + } + 18.64% { + transform: rotate(120.4deg); + } + 20.34% { + transform: rotate(110.8deg); + } + 22.03% { + transform: rotate(101.6deg); + } + 23.73% { + transform: rotate(93.5deg); + } + 25.42% { + transform: rotate(85.4deg); + } + 27.12% { + transform: rotate(78.1deg); + } + 28.81% { + transform: rotate(71.2deg); + } + 30.51% { + transform: rotate(89.1deg); + } + 32.2% { + transform: rotate(105.5deg); + } + 33.9% { + transform: rotate(121.3deg); + } + 35.59% { + transform: rotate(135.5deg); + } + 37.29% { + transform: rotate(148.4deg); + } + 38.98% { + transform: rotate(161deg); + } + 40.68% { + transform: rotate(173.5deg); + } + 42.37% { + transform: rotate(180deg); + } + 44.07% { + transform: rotate(180deg); + } + 45.76% { + transform: rotate(180deg); + } + 47.46% { + transform: rotate(180deg); + } + 49.15% { + transform: rotate(180deg); + } + 50.85% { + transform: rotate(180deg); + } + 52.54% { + transform: rotate(180deg); + } + 54.24% { + transform: rotate(180deg); + } + 55.93% { + transform: rotate(180deg); + } + 57.63% { + transform: rotate(180deg); + } + 59.32% { + transform: rotate(180deg); + } + 61.02% { + transform: rotate(180deg); + } + 62.71% { + transform: rotate(180deg); + } + 64.41% { + transform: rotate(180deg); + } + 66.1% { + transform: rotate(180deg); + } + 67.8% { + transform: rotate(180deg); + } + 69.49% { + transform: rotate(180deg); + } + 71.19% { + transform: rotate(180deg); + } + 72.88% { + transform: rotate(180deg); + } + 74.58% { + transform: rotate(180deg); + } + 76.27% { + transform: rotate(180deg); + } + 77.97% { + transform: rotate(180deg); + } + 79.66% { + transform: rotate(180deg); + } + 81.36% { + transform: rotate(180deg); + } + 83.05% { + transform: rotate(180deg); + } + 84.75% { + transform: rotate(180deg); + } + 86.44% { + transform: rotate(180deg); + } + 88.14% { + transform: rotate(180deg); + } + 89.83% { + transform: rotate(180deg); + } + 91.53% { + transform: rotate(180deg); + } + 93.22% { + transform: rotate(180deg); + } + 94.92% { + transform: rotate(180deg); + } + 96.61% { + transform: rotate(180deg); + } + 98.31% { + transform: rotate(180deg); + } + to { + transform: rotate(180deg); + } +} +@keyframes spectrum-fills-rotate { + 0% { + transform: rotate(-90deg); + } + to { + transform: rotate(270deg); + } +} +.spectrum-ProgressCircle { + --spectrum-progress-circle-track-border-color: var(--spectrum-gray-300); + --spectrum-progress-circle-fill-border-color: var(--spectrum-accent-content-color-default); + --spectrum-progress-circle-track-border-color-over-background: var(--spectrum-transparent-white-300); + --spectrum-progress-circle-fill-border-color-over-background: var(--spectrum-transparent-white-900); + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-medium); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); + --spectrum-progress-circle-track-border-style: solid; +} +.spectrum-ProgressCircle--small { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-small); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-small); +} +.spectrum-ProgressCircle--medium { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-medium); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-medium); +} +.spectrum-ProgressCircle--large { + --spectrum-progress-circle-size: var(--spectrum-progress-circle-size-large); + --spectrum-progress-circle-thickness: var(--spectrum-progress-circle-thickness-large); +} +@media (forced-colors: active) { + .spectrum-ProgressCircle { + --highcontrast-progress-circle-fill-border-color: Highlight; + --highcontrast-progress-circle-fill-border-color-over-background: Highlight; + } + .spectrum-ProgressCircle-track { + --spectrum-progress-circle-track-border-style: double; + } +} +.spectrum-ProgressCircle { + display: inline-block; + position: var(--mod-progress-circle-position, relative); + direction: ltr; + transform: translateZ(0); +} +.spectrum-ProgressCircle, +.spectrum-ProgressCircle-track { + inline-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + block-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); +} +.spectrum-ProgressCircle-track { + box-sizing: border-box; + border-style: var(--highcontrast-progress-circle-track-border-style, var(--mod-progress-circle-track-border-style, var(--spectrum-progress-circle-track-border-style))); + border-width: var(--mod-progress-circle-thickness, var(--spectrum-progress-circle-thickness)); + border-radius: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-color: var(--mod-progress-circle-track-border-color, var(--spectrum-progress-circle-track-border-color)); +} +.spectrum-ProgressCircle-fills { + position: absolute; + inset-block-start: 0; + inset-inline-start: 0; + inline-size: 100%; + block-size: 100%; +} +.spectrum-ProgressCircle-fill { + box-sizing: border-box; + inline-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + block-size: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-style: solid; + border-width: var(--mod-progress-circle-thickness, var(--spectrum-progress-circle-thickness)); + border-radius: var(--mod-progress-circle-size, var(--spectrum-progress-circle-size)); + border-color: var(--highcontrast-progress-circle-fill-border-color, var(--mod-progress-circle-fill-border-color, var(--spectrum-progress-circle-fill-border-color))); +} +.spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-track { + border-color: var(--mod-progress-circle-track-border-color-over-background, var(--spectrum-progress-circle-track-border-color-over-background)); +} +.spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-fill { + border-color: var(--highcontrast-progress-circle-fill-border-color-over-background, var(--mod-progress-circle-fill-border-color-over-background, var(--spectrum-progress-circle-fill-border-color-over-background))); +} +.spectrum-ProgressCircle-fillMask1, +.spectrum-ProgressCircle-fillMask2 { + inline-size: 50%; + block-size: 100%; + transform-origin: 100% center; + transform: rotate(180deg); + overflow: hidden; + position: absolute; +} +.spectrum-ProgressCircle-fillSubMask1, +.spectrum-ProgressCircle-fillSubMask2 { + inline-size: 100%; + block-size: 100%; + transform-origin: 100% center; + overflow: hidden; + transform: rotate(-180deg); +} +.spectrum-ProgressCircle-fillMask2 { + transform: rotate(0deg); +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fills { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fills-rotate 1s cubic-bezier(0.25, 0.78, 0.48, 0.89) infinite; + transform-origin: center; +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask1 { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fill-mask-1 1s linear infinite; +} +.spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask2 { + will-change: transform; + transform: translateZ(0); + animation: spectrum-fill-mask-2 1s linear infinite; +} +/*# sourceMappingURL=components/progresscircle/index.css.map */ diff --git a/components/progresscircle/metadata.json b/components/progresscircle/metadata.json new file mode 100644 index 0000000000..5fd5854119 --- /dev/null +++ b/components/progresscircle/metadata.json @@ -0,0 +1,116 @@ +{ + "selectors": [ + ".spectrum-ProgressCircle", + ".spectrum-ProgressCircle,\n.spectrum-ProgressCircle-track", + ".spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask1", + ".spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fillSubMask2", + ".spectrum-ProgressCircle--indeterminate .spectrum-ProgressCircle-fills", + ".spectrum-ProgressCircle--indeterminate-fill-submask-2", + ".spectrum-ProgressCircle--large", + ".spectrum-ProgressCircle--medium", + ".spectrum-ProgressCircle--small", + ".spectrum-ProgressCircle-fill", + ".spectrum-ProgressCircle-fillMask1,\n.spectrum-ProgressCircle-fillMask2", + ".spectrum-ProgressCircle-fillMask2", + ".spectrum-ProgressCircle-fillSubMask1,\n.spectrum-ProgressCircle-fillSubMask2", + ".spectrum-ProgressCircle-fills", + ".spectrum-ProgressCircle-track", + ".spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-fill", + ".spectrum-ProgressCircle.spectrum-ProgressCircle--staticWhite .spectrum-ProgressCircle-track", + "0%", + "1.69%", + "10.17%", + "11.86%", + "13.56%", + "15.25%", + "16.95%", + "18.64%", + "20.34%", + "22.03%", + "23.73%", + "25.42%", + "27.12%", + "28.81%", + "3.39%", + "30.51%", + "32.2%", + "33.9%", + "35.59%", + "37.29%", + "38.98%", + "40.68%", + "42.37%", + "44.07%", + "45.76%", + "47.46%", + "49.15%", + "5.08%", + "50.85%", + "52.54%", + "54.24%", + "55.93%", + "57.63%", + "59.32%", + "6.78%", + "61.02%", + "62.71%", + "64.41%", + "66.1%", + "67.8%", + "69.49%", + "71.19%", + "72.88%", + "74.58%", + "76.27%", + "77.97%", + "79.66%", + "8.47%", + "81.36%", + "83.05%", + "84.75%", + "86.44%", + "88.14%", + "89.83%", + "91.53%", + "93.22%", + "94.92%", + "96.61%", + "98.31%", + "to" + ], + "mods": [ + "--mod-progress-circle-fill-border-color", + "--mod-progress-circle-fill-border-color-over-background", + "--mod-progress-circle-position", + "--mod-progress-circle-size", + "--mod-progress-circle-thickness", + "--mod-progress-circle-track-border-color", + "--mod-progress-circle-track-border-color-over-background", + "--mod-progress-circle-track-border-style" + ], + "spectrum": [ + "--spectrum-accent-content-color-default", + "--spectrum-gray-300", + "--spectrum-progress-circle-fill-border-color", + "--spectrum-progress-circle-fill-border-color-over-background", + "--spectrum-progress-circle-size", + "--spectrum-progress-circle-size-large", + "--spectrum-progress-circle-size-medium", + "--spectrum-progress-circle-size-small", + "--spectrum-progress-circle-thickness", + "--spectrum-progress-circle-thickness-large", + "--spectrum-progress-circle-thickness-medium", + "--spectrum-progress-circle-thickness-small", + "--spectrum-progress-circle-track-border-color", + "--spectrum-progress-circle-track-border-color-over-background", + "--spectrum-progress-circle-track-border-style", + "--spectrum-transparent-white-300", + "--spectrum-transparent-white-900" + ], + "system": [], + "a11y": [ + "--highcontrast-progress-circle-fill-border-color", + "--highcontrast-progress-circle-fill-border-color-over-background", + "--highcontrast-progress-circle-track-border-style" + ] +} diff --git a/components/progresscircle/package.json b/components/progresscircle/package.json new file mode 100644 index 0000000000..0ffd974f42 --- /dev/null +++ b/components/progresscircle/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/progresscircle", + "version": "3.1.2", + "description": "The Spectrum CSS progress circle component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/progresscircle", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/progresscircle" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/progresscircle/template.js b/components/progresscircle/template.js new file mode 100644 index 0000000000..ad72bc70cd --- /dev/null +++ b/components/progresscircle/template.js @@ -0,0 +1,58 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + id, + customStyles = {}, + testId, + rootClass = "spectrum-ProgressCircle", + customClasses = [], + size = "m", + staticColor, + isIndeterminate = false, +}) => { + let sizeClassName = "medium"; + switch (size) { + case "s": + sizeClassName = "small"; + break; + case "l": + sizeClassName = "large"; + break; + default: + sizeClassName = "medium"; + } + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + data-testid=${ifDefined(testId)} + > +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + `; +}; diff --git a/components/radio/index-base.css b/components/radio/index-base.css new file mode 100644 index 0000000000..b0fca075d5 --- /dev/null +++ b/components/radio/index-base.css @@ -0,0 +1,289 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Radio { + --spectrum-radio-neutral-content-color: var(--spectrum-neutral-content-color-default); + --spectrum-radio-neutral-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-radio-neutral-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-radio-neutral-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-radio-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-radio-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-radio-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-radio-disabled-content-color: var(--spectrum-disabled-content-color); + --spectrum-radio-disabled-border-color: var(--spectrum-disabled-content-color); + --spectrum-radio-emphasized-accent-color: var(--spectrum-accent-color-900); + --spectrum-radio-emphasized-accent-color-hover: var(--spectrum-accent-color-1000); + --spectrum-radio-emphasized-accent-color-down: var(--spectrum-accent-color-1100); + --spectrum-radio-emphasized-accent-color-focus: var(--spectrum-accent-color-1000); + --spectrum-radio-border-width: var(--spectrum-border-width-200); + --spectrum-radio-button-background-color: var(--spectrum-gray-75); + --spectrum-radio-button-checked-border-color-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-radio-button-checked-border-color-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-radio-button-checked-border-color-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-radio-button-checked-border-color-focus: var(--spectrum-neutral-background-color-selected-focus); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-radio-font-size: var(--spectrum-font-size-100); + --spectrum-radio-line-height: var(--spectrum-line-height-100); + --spectrum-radio-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-radio-height: var(--spectrum-component-height-100); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-medium); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-medium); +} +.spectrum-Radio:lang(ja), +.spectrum-Radio:lang(ko), +.spectrum-Radio:lang(zh) { + --spectrum-radio-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-Radio--sizeS { + --spectrum-radio-height: var(--spectrum-component-height-75); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-small); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-75); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-small); + --spectrum-radio-font-size: var(--spectrum-font-size-75); +} +.spectrum-Radio--sizeM { + --spectrum-radio-height: var(--spectrum-component-height-100); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-medium); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-medium); + --spectrum-radio-font-size: var(--spectrum-font-size-100); +} +.spectrum-Radio--sizeL { + --spectrum-radio-height: var(--spectrum-component-height-200); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-large); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-200); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-large); + --spectrum-radio-font-size: var(--spectrum-font-size-200); +} +.spectrum-Radio--sizeXL { + --spectrum-radio-height: var(--spectrum-component-height-300); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-extra-large); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-300); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-extra-large); + --spectrum-radio-font-size: var(--spectrum-font-size-300); +} +@media (forced-colors: active) { + .spectrum-Radio { + --highcontrast-radio-neutral-content-color: CanvasText; + --highcontrast-radio-neutral-content-color-hover: CanvasText; + --highcontrast-radio-neutral-content-color-down: CanvasText; + --highcontrast-radio-neutral-content-color-focus: CanvasText; + --highcontrast-radio-button-border-color-default: ButtonText; + --highcontrast-radio-button-border-color-hover: Highlight; + --highcontrast-radio-button-border-color-down: ButtonText; + --highcontrast-radio-button-border-color-focus: Highlight; + --highcontrast-radio-emphasized-accent-color: ButtonText; + --highcontrast-radio-emphasized-accent-color-hover: Highlight; + --highcontrast-radio-emphasized-accent-color-down: ButtonText; + --highcontrast-radio-emphasized-accent-color-focus: Highlight; + --highcontrast-radio-button-checked-border-color-default: Highlight; + --highcontrast-radio-button-checked-border-color-hover: Highlight; + --highcontrast-radio-button-checked-border-color-down: Highlight; + --highcontrast-radio-button-checked-border-color-focus: Highlight; + --highcontrast-radio-disabled-content-color: GrayText; + --highcontrast-radio-disabled-border-color: GrayText; + --highcontrast-radio-focus-indicator-color: CanvasText; + } + .spectrum-Radio .spectrum-Radio-button:after { + forced-color-adjust: none; + } +} +.spectrum-Radio { + display: inline-flex; + align-items: flex-start; + position: relative; + vertical-align: top; + min-block-size: var(--mod-radio-height, var(--spectrum-radio-height)); + max-inline-size: 100%; +} +.spectrum-Radio:active .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-down, var(--mod-radio-button-border-color-down, var(--spectrum-radio-button-border-color-down))); +} +.spectrum-Radio:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-down, var(--mod-radio-button-checked-border-color-down, var(--spectrum-radio-button-checked-border-color-down))); +} +.spectrum-Radio:active .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-down, var(--mod-radio-neutral-content-color-down, var(--spectrum-radio-neutral-content-color-down))); +} +.spectrum-Radio:focus .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-focus, var(--mod-radio-button-border-color-focus, var(--spectrum-radio-button-border-color-focus))); +} +.spectrum-Radio:focus .spectrum-Radio-button:after { + border-style: solid; + border-color: var(--highcontrast-radio-focus-indicator-color, var(--mod-radio-focus-indicator-color, var(--spectrum-radio-focus-indicator-color))); + border-width: var(--mod-radio-focus-indicator-thickness, var(--spectrum-radio-focus-indicator-thickness)); + inline-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); + block-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); +} +.spectrum-Radio:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-focus, var(--mod-radio-button-checked-border-color-focus, var(--spectrum-radio-button-checked-border-color-focus))); +} +.spectrum-Radio:focus .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-focus, var(--mod-radio-neutral-content-color-focus, var(--spectrum-radio-neutral-content-color-focus))); +} +.spectrum-Radio.is-readOnly .spectrum-Radio-input:read-only { + cursor: auto; +} +.spectrum-Radio.is-readOnly .spectrum-Radio-button { + position: fixed; + inset-inline-end: 100%; + inset-block-end: 100%; + clip: rect(1px, 1px, 1px, 1px); + clip-path: inset(50%); +} +.spectrum-Radio.is-readOnly .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label, +.spectrum-Radio.is-readOnly .spectrum-Radio-input:disabled ~ .spectrum-Radio-label, +.spectrum-Radio.is-readOnly .spectrum-Radio-label { + margin-inline-start: auto; + color: var(--highcontrast-radio-neutral-content-color, var(--mod-radio-neutral-content-color, var(--spectrum-radio-neutral-content-color))); +} +.spectrum-Radio--emphasized .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color, var(--mod-radio-emphasized-accent-color, var(--spectrum-radio-emphasized-accent-color))); +} +@media (hover: hover) { + .spectrum-Radio:hover .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-hover, var(--mod-radio-button-border-color-hover, var(--spectrum-radio-button-border-color-hover))); + } + .spectrum-Radio:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-hover, var(--mod-radio-button-checked-border-color-hover, var(--spectrum-radio-button-checked-border-color-hover))); + } + .spectrum-Radio:hover .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-hover, var(--mod-radio-neutral-content-color-hover, var(--spectrum-radio-neutral-content-color-hover))); + } + .spectrum-Radio--emphasized:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-hover, var(--mod-radio-emphasized-accent-color-hover, var(--spectrum-radio-emphasized-accent-color-hover))); + } +} +.spectrum-Radio--emphasized:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-down, var(--mod-radio-emphasized-accent-color-down, var(--spectrum-radio-emphasized-accent-color-down))); +} +.spectrum-Radio--emphasized:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-focus, var(--mod-radio-emphasized-accent-color-focus, var(--spectrum-radio-emphasized-accent-color-focus))); +} +.spectrum-Radio .spectrum-Radio-input:checked:disabled + .spectrum-Radio-button:before, +.spectrum-Radio .spectrum-Radio-input:disabled + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-disabled-border-color, var(--mod-radio-disabled-border-color, var(--spectrum-radio-disabled-border-color))); +} +.spectrum-Radio .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label, +.spectrum-Radio .spectrum-Radio-input:disabled ~ .spectrum-Radio-label { + color: var(--highcontrast-radio-disabled-content-color, var(--mod-radio-disabled-content-color, var(--spectrum-radio-disabled-content-color))); +} +.spectrum-Radio-input { + font-family: inherit; + font-size: 100%; + line-height: var(--mod-radio-line-height, var(--spectrum-radio-line-height)); + margin: 0; + overflow: visible; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + opacity: 0; + z-index: 1; + cursor: pointer; +} +.spectrum-Radio-input:disabled { + cursor: default; +} +.spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-width: calc(var(--spectrum-radio-button-control-size) / 2 - var(--spectrum-radio-button-selection-indicator) / 2); + border-color: var(--highcontrast-radio-button-checked-border-color-default, var(--mod-radio-button-checked-border-color-default, var(--spectrum-radio-button-checked-border-color-default))); +} +.spectrum-Radio-input:focus-visible + .spectrum-Radio-button:after { + border-width: var(--mod-radio-focus-indicator-thickness, var(--spectrum-radio-focus-indicator-thickness)); + border-color: var(--highcontrast-radio-focus-indicator-color, var(--mod-radio-focus-indicator-color, var(--spectrum-radio-focus-indicator-color))); + border-style: solid; + inline-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); + block-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); +} +.spectrum-Radio-label { + text-align: start; + margin-inline-start: var(--mod-radio-text-to-control, var(--spectrum-radio-text-to-control)); + margin-block-start: var(--spectrum-radio-label-top-to-text); + margin-block-end: var(--spectrum-radio-label-bottom-to-text); + font-size: var(--mod-radio-font-size, var(--spectrum-radio-font-size)); + color: var(--highcontrast-radio-neutral-content-color, var(--mod-radio-neutral-content-color, var(--spectrum-radio-neutral-content-color))); + line-height: var(--mod-radio-line-height, var(--spectrum-radio-line-height)); + transition: color var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out; +} +.spectrum-Radio-label:lang(ja), +.spectrum-Radio-label:lang(ko), +.spectrum-Radio-label:lang(zh) { + line-height: var(--mod-radio-line-height-cjk, var(--spectrum-radio-line-height-cjk)); +} +.spectrum-Radio-button { + position: relative; + box-sizing: border-box; + inline-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + block-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + margin-block-start: var(--mod-radio-button-top-to-control, var(--spectrum-radio-button-top-to-control)); + flex-grow: 0; + flex-shrink: 0; +} +.spectrum-Radio-button:before { + display: block; + z-index: 0; + content: ""; + box-sizing: border-box; + position: absolute; + inline-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + block-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + background-color: var(--highcontrast-radio-button-background-color, var(--mod-radio-button-background-color, var(--spectrum-radio-button-background-color))); + border-radius: 50%; + border-width: var(--mod-radio-border-width, var(--spectrum-radio-border-width)); + border-color: var(--highcontrast-radio-button-border-color-default, var(--mod-radio-button-border-color-default, var(--spectrum-radio-button-border-color-default))); + border-style: solid; + transition: + border var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out, + box-shadow var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out; +} +.spectrum-Radio-button:after { + border-radius: 50%; + content: ""; + display: block; + position: absolute; + inset-inline-start: 50%; + inset-block-start: 50%; + transform: translateX(-50%) translateY(-50%); + transition: + opacity var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-out, + margin var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-out; +} +.spectrum-Radio:dir(rtl) .spectrum-Radio-button:after, +[dir="rtl"] .spectrum-Radio .spectrum-Radio-button:after { + transform: translateX(50%) translateY(-50%); +} +.spectrum-Radio { + --spectrum-radio-button-border-color-default: var(--system-spectrum-radio-button-border-color-default); + --spectrum-radio-button-border-color-hover: var(--system-spectrum-radio-button-border-color-hover); + --spectrum-radio-button-border-color-down: var(--system-spectrum-radio-button-border-color-down); + --spectrum-radio-button-border-color-focus: var(--system-spectrum-radio-button-border-color-focus); +} +.spectrum-Radio--emphasized { + --spectrum-radio-button-checked-border-color-default: var(--system-spectrum-radio-emphasized-button-checked-border-color-default); + --spectrum-radio-button-checked-border-color-hover: var(--system-spectrum-radio-emphasized-button-checked-border-color-hover); + --spectrum-radio-button-checked-border-color-down: var(--system-spectrum-radio-emphasized-button-checked-border-color-down); + --spectrum-radio-button-checked-border-color-focus: var(--system-spectrum-radio-emphasized-button-checked-border-color-focus); +} +/*# sourceMappingURL=components/radio/index.css.map */ diff --git a/components/radio/index-theme.css b/components/radio/index-theme.css new file mode 100644 index 0000000000..85b314f0ba --- /dev/null +++ b/components/radio/index-theme.css @@ -0,0 +1,30 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-600); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-radio-emphasized-button-checked-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-radio-emphasized-button-checked-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-radio-emphasized-button-checked-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-radio-emphasized-button-checked-border-color-focus: var(--spectrum-accent-color-1000); +} +.spectrum--express { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-900); +} +/*# sourceMappingURL=components/radio/themes/express.css.map */ diff --git a/components/radio/index-vars.css b/components/radio/index-vars.css new file mode 100644 index 0000000000..ff44acfbec --- /dev/null +++ b/components/radio/index-vars.css @@ -0,0 +1,305 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-600); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-radio-emphasized-button-checked-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-radio-emphasized-button-checked-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-radio-emphasized-button-checked-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-radio-emphasized-button-checked-border-color-focus: var(--spectrum-accent-color-1000); +} +.spectrum--express { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-900); +} +.spectrum-Radio { + --spectrum-radio-neutral-content-color: var(--spectrum-neutral-content-color-default); + --spectrum-radio-neutral-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-radio-neutral-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-radio-neutral-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-radio-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-radio-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-radio-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-radio-disabled-content-color: var(--spectrum-disabled-content-color); + --spectrum-radio-disabled-border-color: var(--spectrum-disabled-content-color); + --spectrum-radio-emphasized-accent-color: var(--spectrum-accent-color-900); + --spectrum-radio-emphasized-accent-color-hover: var(--spectrum-accent-color-1000); + --spectrum-radio-emphasized-accent-color-down: var(--spectrum-accent-color-1100); + --spectrum-radio-emphasized-accent-color-focus: var(--spectrum-accent-color-1000); + --spectrum-radio-border-width: var(--spectrum-border-width-200); + --spectrum-radio-button-background-color: var(--spectrum-gray-75); + --spectrum-radio-button-checked-border-color-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-radio-button-checked-border-color-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-radio-button-checked-border-color-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-radio-button-checked-border-color-focus: var(--spectrum-neutral-background-color-selected-focus); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-radio-font-size: var(--spectrum-font-size-100); + --spectrum-radio-line-height: var(--spectrum-line-height-100); + --spectrum-radio-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-radio-height: var(--spectrum-component-height-100); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-medium); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-medium); +} +.spectrum-Radio:lang(ja), +.spectrum-Radio:lang(ko), +.spectrum-Radio:lang(zh) { + --spectrum-radio-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-Radio--sizeS { + --spectrum-radio-height: var(--spectrum-component-height-75); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-small); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-75); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-small); + --spectrum-radio-font-size: var(--spectrum-font-size-75); +} +.spectrum-Radio--sizeM { + --spectrum-radio-height: var(--spectrum-component-height-100); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-medium); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-medium); + --spectrum-radio-font-size: var(--spectrum-font-size-100); +} +.spectrum-Radio--sizeL { + --spectrum-radio-height: var(--spectrum-component-height-200); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-large); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-200); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-large); + --spectrum-radio-font-size: var(--spectrum-font-size-200); +} +.spectrum-Radio--sizeXL { + --spectrum-radio-height: var(--spectrum-component-height-300); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-extra-large); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-300); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-extra-large); + --spectrum-radio-font-size: var(--spectrum-font-size-300); +} +@media (forced-colors: active) { + .spectrum-Radio { + --highcontrast-radio-neutral-content-color: CanvasText; + --highcontrast-radio-neutral-content-color-hover: CanvasText; + --highcontrast-radio-neutral-content-color-down: CanvasText; + --highcontrast-radio-neutral-content-color-focus: CanvasText; + --highcontrast-radio-button-border-color-default: ButtonText; + --highcontrast-radio-button-border-color-hover: Highlight; + --highcontrast-radio-button-border-color-down: ButtonText; + --highcontrast-radio-button-border-color-focus: Highlight; + --highcontrast-radio-emphasized-accent-color: ButtonText; + --highcontrast-radio-emphasized-accent-color-hover: Highlight; + --highcontrast-radio-emphasized-accent-color-down: ButtonText; + --highcontrast-radio-emphasized-accent-color-focus: Highlight; + --highcontrast-radio-button-checked-border-color-default: Highlight; + --highcontrast-radio-button-checked-border-color-hover: Highlight; + --highcontrast-radio-button-checked-border-color-down: Highlight; + --highcontrast-radio-button-checked-border-color-focus: Highlight; + --highcontrast-radio-disabled-content-color: GrayText; + --highcontrast-radio-disabled-border-color: GrayText; + --highcontrast-radio-focus-indicator-color: CanvasText; + } + .spectrum-Radio .spectrum-Radio-button:after { + forced-color-adjust: none; + } +} +.spectrum-Radio { + display: inline-flex; + align-items: flex-start; + position: relative; + vertical-align: top; + min-block-size: var(--mod-radio-height, var(--spectrum-radio-height)); + max-inline-size: 100%; +} +.spectrum-Radio:active .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-down, var(--mod-radio-button-border-color-down, var(--spectrum-radio-button-border-color-down))); +} +.spectrum-Radio:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-down, var(--mod-radio-button-checked-border-color-down, var(--spectrum-radio-button-checked-border-color-down))); +} +.spectrum-Radio:active .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-down, var(--mod-radio-neutral-content-color-down, var(--spectrum-radio-neutral-content-color-down))); +} +.spectrum-Radio:focus .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-focus, var(--mod-radio-button-border-color-focus, var(--spectrum-radio-button-border-color-focus))); +} +.spectrum-Radio:focus .spectrum-Radio-button:after { + border-style: solid; + border-color: var(--highcontrast-radio-focus-indicator-color, var(--mod-radio-focus-indicator-color, var(--spectrum-radio-focus-indicator-color))); + border-width: var(--mod-radio-focus-indicator-thickness, var(--spectrum-radio-focus-indicator-thickness)); + inline-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); + block-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); +} +.spectrum-Radio:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-focus, var(--mod-radio-button-checked-border-color-focus, var(--spectrum-radio-button-checked-border-color-focus))); +} +.spectrum-Radio:focus .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-focus, var(--mod-radio-neutral-content-color-focus, var(--spectrum-radio-neutral-content-color-focus))); +} +.spectrum-Radio.is-readOnly .spectrum-Radio-input:read-only { + cursor: auto; +} +.spectrum-Radio.is-readOnly .spectrum-Radio-button { + position: fixed; + inset-inline-end: 100%; + inset-block-end: 100%; + clip: rect(1px, 1px, 1px, 1px); + clip-path: inset(50%); +} +.spectrum-Radio.is-readOnly .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label, +.spectrum-Radio.is-readOnly .spectrum-Radio-input:disabled ~ .spectrum-Radio-label, +.spectrum-Radio.is-readOnly .spectrum-Radio-label { + margin-inline-start: auto; + color: var(--highcontrast-radio-neutral-content-color, var(--mod-radio-neutral-content-color, var(--spectrum-radio-neutral-content-color))); +} +.spectrum-Radio--emphasized .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color, var(--mod-radio-emphasized-accent-color, var(--spectrum-radio-emphasized-accent-color))); +} +@media (hover: hover) { + .spectrum-Radio:hover .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-hover, var(--mod-radio-button-border-color-hover, var(--spectrum-radio-button-border-color-hover))); + } + .spectrum-Radio:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-hover, var(--mod-radio-button-checked-border-color-hover, var(--spectrum-radio-button-checked-border-color-hover))); + } + .spectrum-Radio:hover .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-hover, var(--mod-radio-neutral-content-color-hover, var(--spectrum-radio-neutral-content-color-hover))); + } + .spectrum-Radio--emphasized:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-hover, var(--mod-radio-emphasized-accent-color-hover, var(--spectrum-radio-emphasized-accent-color-hover))); + } +} +.spectrum-Radio--emphasized:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-down, var(--mod-radio-emphasized-accent-color-down, var(--spectrum-radio-emphasized-accent-color-down))); +} +.spectrum-Radio--emphasized:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-focus, var(--mod-radio-emphasized-accent-color-focus, var(--spectrum-radio-emphasized-accent-color-focus))); +} +.spectrum-Radio .spectrum-Radio-input:checked:disabled + .spectrum-Radio-button:before, +.spectrum-Radio .spectrum-Radio-input:disabled + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-disabled-border-color, var(--mod-radio-disabled-border-color, var(--spectrum-radio-disabled-border-color))); +} +.spectrum-Radio .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label, +.spectrum-Radio .spectrum-Radio-input:disabled ~ .spectrum-Radio-label { + color: var(--highcontrast-radio-disabled-content-color, var(--mod-radio-disabled-content-color, var(--spectrum-radio-disabled-content-color))); +} +.spectrum-Radio-input { + font-family: inherit; + font-size: 100%; + line-height: var(--mod-radio-line-height, var(--spectrum-radio-line-height)); + margin: 0; + overflow: visible; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + opacity: 0; + z-index: 1; + cursor: pointer; +} +.spectrum-Radio-input:disabled { + cursor: default; +} +.spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-width: calc(var(--spectrum-radio-button-control-size) / 2 - var(--spectrum-radio-button-selection-indicator) / 2); + border-color: var(--highcontrast-radio-button-checked-border-color-default, var(--mod-radio-button-checked-border-color-default, var(--spectrum-radio-button-checked-border-color-default))); +} +.spectrum-Radio-input:focus-visible + .spectrum-Radio-button:after { + border-width: var(--mod-radio-focus-indicator-thickness, var(--spectrum-radio-focus-indicator-thickness)); + border-color: var(--highcontrast-radio-focus-indicator-color, var(--mod-radio-focus-indicator-color, var(--spectrum-radio-focus-indicator-color))); + border-style: solid; + inline-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); + block-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); +} +.spectrum-Radio-label { + text-align: start; + margin-inline-start: var(--mod-radio-text-to-control, var(--spectrum-radio-text-to-control)); + margin-block-start: var(--spectrum-radio-label-top-to-text); + margin-block-end: var(--spectrum-radio-label-bottom-to-text); + font-size: var(--mod-radio-font-size, var(--spectrum-radio-font-size)); + color: var(--highcontrast-radio-neutral-content-color, var(--mod-radio-neutral-content-color, var(--spectrum-radio-neutral-content-color))); + line-height: var(--mod-radio-line-height, var(--spectrum-radio-line-height)); + transition: color var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out; +} +.spectrum-Radio-label:lang(ja), +.spectrum-Radio-label:lang(ko), +.spectrum-Radio-label:lang(zh) { + line-height: var(--mod-radio-line-height-cjk, var(--spectrum-radio-line-height-cjk)); +} +.spectrum-Radio-button { + position: relative; + box-sizing: border-box; + inline-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + block-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + margin-block-start: var(--mod-radio-button-top-to-control, var(--spectrum-radio-button-top-to-control)); + flex-grow: 0; + flex-shrink: 0; +} +.spectrum-Radio-button:before { + display: block; + z-index: 0; + content: ""; + box-sizing: border-box; + position: absolute; + inline-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + block-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + background-color: var(--highcontrast-radio-button-background-color, var(--mod-radio-button-background-color, var(--spectrum-radio-button-background-color))); + border-radius: 50%; + border-width: var(--mod-radio-border-width, var(--spectrum-radio-border-width)); + border-color: var(--highcontrast-radio-button-border-color-default, var(--mod-radio-button-border-color-default, var(--spectrum-radio-button-border-color-default))); + border-style: solid; + transition: + border var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out, + box-shadow var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out; +} +.spectrum-Radio-button:after { + border-radius: 50%; + content: ""; + display: block; + position: absolute; + inset-inline-start: 50%; + inset-block-start: 50%; + transform: translateX(-50%) translateY(-50%); + transition: + opacity var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-out, + margin var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-out; +} +.spectrum-Radio:dir(rtl) .spectrum-Radio-button:after, +[dir="rtl"] .spectrum-Radio .spectrum-Radio-button:after { + transform: translateX(50%) translateY(-50%); +} +.spectrum-Radio { + --spectrum-radio-button-border-color-default: var(--system-spectrum-radio-button-border-color-default); + --spectrum-radio-button-border-color-hover: var(--system-spectrum-radio-button-border-color-hover); + --spectrum-radio-button-border-color-down: var(--system-spectrum-radio-button-border-color-down); + --spectrum-radio-button-border-color-focus: var(--system-spectrum-radio-button-border-color-focus); +} +.spectrum-Radio--emphasized { + --spectrum-radio-button-checked-border-color-default: var(--system-spectrum-radio-emphasized-button-checked-border-color-default); + --spectrum-radio-button-checked-border-color-hover: var(--system-spectrum-radio-emphasized-button-checked-border-color-hover); + --spectrum-radio-button-checked-border-color-down: var(--system-spectrum-radio-emphasized-button-checked-border-color-down); + --spectrum-radio-button-checked-border-color-focus: var(--system-spectrum-radio-emphasized-button-checked-border-color-focus); +} +/*# sourceMappingURL=components/radio/index.css.map */ diff --git a/components/radio/index.css b/components/radio/index.css new file mode 100644 index 0000000000..ff44acfbec --- /dev/null +++ b/components/radio/index.css @@ -0,0 +1,305 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-600); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-radio-emphasized-button-checked-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-radio-emphasized-button-checked-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-radio-emphasized-button-checked-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-radio-emphasized-button-checked-border-color-focus: var(--spectrum-accent-color-1000); +} +.spectrum--express { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-900); +} +.spectrum-Radio { + --spectrum-radio-neutral-content-color: var(--spectrum-neutral-content-color-default); + --spectrum-radio-neutral-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-radio-neutral-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-radio-neutral-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-radio-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-radio-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-radio-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-radio-disabled-content-color: var(--spectrum-disabled-content-color); + --spectrum-radio-disabled-border-color: var(--spectrum-disabled-content-color); + --spectrum-radio-emphasized-accent-color: var(--spectrum-accent-color-900); + --spectrum-radio-emphasized-accent-color-hover: var(--spectrum-accent-color-1000); + --spectrum-radio-emphasized-accent-color-down: var(--spectrum-accent-color-1100); + --spectrum-radio-emphasized-accent-color-focus: var(--spectrum-accent-color-1000); + --spectrum-radio-border-width: var(--spectrum-border-width-200); + --spectrum-radio-button-background-color: var(--spectrum-gray-75); + --spectrum-radio-button-checked-border-color-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-radio-button-checked-border-color-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-radio-button-checked-border-color-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-radio-button-checked-border-color-focus: var(--spectrum-neutral-background-color-selected-focus); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-radio-font-size: var(--spectrum-font-size-100); + --spectrum-radio-line-height: var(--spectrum-line-height-100); + --spectrum-radio-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-radio-height: var(--spectrum-component-height-100); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-medium); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-medium); +} +.spectrum-Radio:lang(ja), +.spectrum-Radio:lang(ko), +.spectrum-Radio:lang(zh) { + --spectrum-radio-line-height-cjk: var(--spectrum-cjk-line-height-100); +} +.spectrum-Radio--sizeS { + --spectrum-radio-height: var(--spectrum-component-height-75); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-small); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-75); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-75); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-small); + --spectrum-radio-font-size: var(--spectrum-font-size-75); +} +.spectrum-Radio--sizeM { + --spectrum-radio-height: var(--spectrum-component-height-100); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-medium); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-100); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-medium); + --spectrum-radio-font-size: var(--spectrum-font-size-100); +} +.spectrum-Radio--sizeL { + --spectrum-radio-height: var(--spectrum-component-height-200); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-large); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-200); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-200); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-large); + --spectrum-radio-font-size: var(--spectrum-font-size-200); +} +.spectrum-Radio--sizeXL { + --spectrum-radio-height: var(--spectrum-component-height-300); + --spectrum-radio-button-control-size: var(--spectrum-radio-button-control-size-extra-large); + --spectrum-radio-text-to-control: var(--spectrum-text-to-control-300); + --spectrum-radio-label-top-to-text: var(--spectrum-component-top-to-text-300); + --spectrum-radio-label-bottom-to-text: var(--spectrum-component-bottom-to-text-300); + --spectrum-radio-button-top-to-control: var(--spectrum-radio-button-top-to-control-extra-large); + --spectrum-radio-font-size: var(--spectrum-font-size-300); +} +@media (forced-colors: active) { + .spectrum-Radio { + --highcontrast-radio-neutral-content-color: CanvasText; + --highcontrast-radio-neutral-content-color-hover: CanvasText; + --highcontrast-radio-neutral-content-color-down: CanvasText; + --highcontrast-radio-neutral-content-color-focus: CanvasText; + --highcontrast-radio-button-border-color-default: ButtonText; + --highcontrast-radio-button-border-color-hover: Highlight; + --highcontrast-radio-button-border-color-down: ButtonText; + --highcontrast-radio-button-border-color-focus: Highlight; + --highcontrast-radio-emphasized-accent-color: ButtonText; + --highcontrast-radio-emphasized-accent-color-hover: Highlight; + --highcontrast-radio-emphasized-accent-color-down: ButtonText; + --highcontrast-radio-emphasized-accent-color-focus: Highlight; + --highcontrast-radio-button-checked-border-color-default: Highlight; + --highcontrast-radio-button-checked-border-color-hover: Highlight; + --highcontrast-radio-button-checked-border-color-down: Highlight; + --highcontrast-radio-button-checked-border-color-focus: Highlight; + --highcontrast-radio-disabled-content-color: GrayText; + --highcontrast-radio-disabled-border-color: GrayText; + --highcontrast-radio-focus-indicator-color: CanvasText; + } + .spectrum-Radio .spectrum-Radio-button:after { + forced-color-adjust: none; + } +} +.spectrum-Radio { + display: inline-flex; + align-items: flex-start; + position: relative; + vertical-align: top; + min-block-size: var(--mod-radio-height, var(--spectrum-radio-height)); + max-inline-size: 100%; +} +.spectrum-Radio:active .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-down, var(--mod-radio-button-border-color-down, var(--spectrum-radio-button-border-color-down))); +} +.spectrum-Radio:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-down, var(--mod-radio-button-checked-border-color-down, var(--spectrum-radio-button-checked-border-color-down))); +} +.spectrum-Radio:active .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-down, var(--mod-radio-neutral-content-color-down, var(--spectrum-radio-neutral-content-color-down))); +} +.spectrum-Radio:focus .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-focus, var(--mod-radio-button-border-color-focus, var(--spectrum-radio-button-border-color-focus))); +} +.spectrum-Radio:focus .spectrum-Radio-button:after { + border-style: solid; + border-color: var(--highcontrast-radio-focus-indicator-color, var(--mod-radio-focus-indicator-color, var(--spectrum-radio-focus-indicator-color))); + border-width: var(--mod-radio-focus-indicator-thickness, var(--spectrum-radio-focus-indicator-thickness)); + inline-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); + block-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); +} +.spectrum-Radio:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-focus, var(--mod-radio-button-checked-border-color-focus, var(--spectrum-radio-button-checked-border-color-focus))); +} +.spectrum-Radio:focus .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-focus, var(--mod-radio-neutral-content-color-focus, var(--spectrum-radio-neutral-content-color-focus))); +} +.spectrum-Radio.is-readOnly .spectrum-Radio-input:read-only { + cursor: auto; +} +.spectrum-Radio.is-readOnly .spectrum-Radio-button { + position: fixed; + inset-inline-end: 100%; + inset-block-end: 100%; + clip: rect(1px, 1px, 1px, 1px); + clip-path: inset(50%); +} +.spectrum-Radio.is-readOnly .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label, +.spectrum-Radio.is-readOnly .spectrum-Radio-input:disabled ~ .spectrum-Radio-label, +.spectrum-Radio.is-readOnly .spectrum-Radio-label { + margin-inline-start: auto; + color: var(--highcontrast-radio-neutral-content-color, var(--mod-radio-neutral-content-color, var(--spectrum-radio-neutral-content-color))); +} +.spectrum-Radio--emphasized .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color, var(--mod-radio-emphasized-accent-color, var(--spectrum-radio-emphasized-accent-color))); +} +@media (hover: hover) { + .spectrum-Radio:hover .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-border-color-hover, var(--mod-radio-button-border-color-hover, var(--spectrum-radio-button-border-color-hover))); + } + .spectrum-Radio:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-button-checked-border-color-hover, var(--mod-radio-button-checked-border-color-hover, var(--spectrum-radio-button-checked-border-color-hover))); + } + .spectrum-Radio:hover .spectrum-Radio-label { + color: var(--highcontrast-radio-neutral-content-color-hover, var(--mod-radio-neutral-content-color-hover, var(--spectrum-radio-neutral-content-color-hover))); + } + .spectrum-Radio--emphasized:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-hover, var(--mod-radio-emphasized-accent-color-hover, var(--spectrum-radio-emphasized-accent-color-hover))); + } +} +.spectrum-Radio--emphasized:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-down, var(--mod-radio-emphasized-accent-color-down, var(--spectrum-radio-emphasized-accent-color-down))); +} +.spectrum-Radio--emphasized:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-emphasized-accent-color-focus, var(--mod-radio-emphasized-accent-color-focus, var(--spectrum-radio-emphasized-accent-color-focus))); +} +.spectrum-Radio .spectrum-Radio-input:checked:disabled + .spectrum-Radio-button:before, +.spectrum-Radio .spectrum-Radio-input:disabled + .spectrum-Radio-button:before { + border-color: var(--highcontrast-radio-disabled-border-color, var(--mod-radio-disabled-border-color, var(--spectrum-radio-disabled-border-color))); +} +.spectrum-Radio .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label, +.spectrum-Radio .spectrum-Radio-input:disabled ~ .spectrum-Radio-label { + color: var(--highcontrast-radio-disabled-content-color, var(--mod-radio-disabled-content-color, var(--spectrum-radio-disabled-content-color))); +} +.spectrum-Radio-input { + font-family: inherit; + font-size: 100%; + line-height: var(--mod-radio-line-height, var(--spectrum-radio-line-height)); + margin: 0; + overflow: visible; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + opacity: 0; + z-index: 1; + cursor: pointer; +} +.spectrum-Radio-input:disabled { + cursor: default; +} +.spectrum-Radio-input:checked + .spectrum-Radio-button:before { + border-width: calc(var(--spectrum-radio-button-control-size) / 2 - var(--spectrum-radio-button-selection-indicator) / 2); + border-color: var(--highcontrast-radio-button-checked-border-color-default, var(--mod-radio-button-checked-border-color-default, var(--spectrum-radio-button-checked-border-color-default))); +} +.spectrum-Radio-input:focus-visible + .spectrum-Radio-button:after { + border-width: var(--mod-radio-focus-indicator-thickness, var(--spectrum-radio-focus-indicator-thickness)); + border-color: var(--highcontrast-radio-focus-indicator-color, var(--mod-radio-focus-indicator-color, var(--spectrum-radio-focus-indicator-color))); + border-style: solid; + inline-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); + block-size: calc(var(--spectrum-radio-button-control-size) + var(--spectrum-radio-focus-indicator-gap) * 2); +} +.spectrum-Radio-label { + text-align: start; + margin-inline-start: var(--mod-radio-text-to-control, var(--spectrum-radio-text-to-control)); + margin-block-start: var(--spectrum-radio-label-top-to-text); + margin-block-end: var(--spectrum-radio-label-bottom-to-text); + font-size: var(--mod-radio-font-size, var(--spectrum-radio-font-size)); + color: var(--highcontrast-radio-neutral-content-color, var(--mod-radio-neutral-content-color, var(--spectrum-radio-neutral-content-color))); + line-height: var(--mod-radio-line-height, var(--spectrum-radio-line-height)); + transition: color var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out; +} +.spectrum-Radio-label:lang(ja), +.spectrum-Radio-label:lang(ko), +.spectrum-Radio-label:lang(zh) { + line-height: var(--mod-radio-line-height-cjk, var(--spectrum-radio-line-height-cjk)); +} +.spectrum-Radio-button { + position: relative; + box-sizing: border-box; + inline-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + block-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + margin-block-start: var(--mod-radio-button-top-to-control, var(--spectrum-radio-button-top-to-control)); + flex-grow: 0; + flex-shrink: 0; +} +.spectrum-Radio-button:before { + display: block; + z-index: 0; + content: ""; + box-sizing: border-box; + position: absolute; + inline-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + block-size: var(--mod-radio-button-control-size, var(--spectrum-radio-button-control-size)); + background-color: var(--highcontrast-radio-button-background-color, var(--mod-radio-button-background-color, var(--spectrum-radio-button-background-color))); + border-radius: 50%; + border-width: var(--mod-radio-border-width, var(--spectrum-radio-border-width)); + border-color: var(--highcontrast-radio-button-border-color-default, var(--mod-radio-button-border-color-default, var(--spectrum-radio-button-border-color-default))); + border-style: solid; + transition: + border var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out, + box-shadow var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-in-out; +} +.spectrum-Radio-button:after { + border-radius: 50%; + content: ""; + display: block; + position: absolute; + inset-inline-start: 50%; + inset-block-start: 50%; + transform: translateX(-50%) translateY(-50%); + transition: + opacity var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-out, + margin var(--mod-radio-animation-duration, var(--spectrum-radio-animation-duration)) ease-out; +} +.spectrum-Radio:dir(rtl) .spectrum-Radio-button:after, +[dir="rtl"] .spectrum-Radio .spectrum-Radio-button:after { + transform: translateX(50%) translateY(-50%); +} +.spectrum-Radio { + --spectrum-radio-button-border-color-default: var(--system-spectrum-radio-button-border-color-default); + --spectrum-radio-button-border-color-hover: var(--system-spectrum-radio-button-border-color-hover); + --spectrum-radio-button-border-color-down: var(--system-spectrum-radio-button-border-color-down); + --spectrum-radio-button-border-color-focus: var(--system-spectrum-radio-button-border-color-focus); +} +.spectrum-Radio--emphasized { + --spectrum-radio-button-checked-border-color-default: var(--system-spectrum-radio-emphasized-button-checked-border-color-default); + --spectrum-radio-button-checked-border-color-hover: var(--system-spectrum-radio-emphasized-button-checked-border-color-hover); + --spectrum-radio-button-checked-border-color-down: var(--system-spectrum-radio-emphasized-button-checked-border-color-down); + --spectrum-radio-button-checked-border-color-focus: var(--system-spectrum-radio-emphasized-button-checked-border-color-focus); +} +/*# sourceMappingURL=components/radio/index.css.map */ diff --git a/components/radio/metadata.json b/components/radio/metadata.json new file mode 100644 index 0000000000..284f6684ce --- /dev/null +++ b/components/radio/metadata.json @@ -0,0 +1,195 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Radio", + ".spectrum-Radio .spectrum-Radio-button:after", + ".spectrum-Radio .spectrum-Radio-input:checked:disabled + .spectrum-Radio-button:before,\n.spectrum-Radio .spectrum-Radio-input:disabled + .spectrum-Radio-button:before", + ".spectrum-Radio .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label,\n.spectrum-Radio .spectrum-Radio-input:disabled ~ .spectrum-Radio-label", + ".spectrum-Radio--emphasized", + ".spectrum-Radio--emphasized .spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio--emphasized:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio--emphasized:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio--emphasized:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio--sizeL", + ".spectrum-Radio--sizeM", + ".spectrum-Radio--sizeS", + ".spectrum-Radio--sizeXL", + ".spectrum-Radio-button", + ".spectrum-Radio-button:after", + ".spectrum-Radio-button:before", + ".spectrum-Radio-input", + ".spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio-input:disabled", + ".spectrum-Radio-input:focus-visible + .spectrum-Radio-button:after", + ".spectrum-Radio-label", + ".spectrum-Radio-label:lang(ja),\n.spectrum-Radio-label:lang(ko),\n.spectrum-Radio-label:lang(zh)", + ".spectrum-Radio.is-readOnly .spectrum-Radio-button", + ".spectrum-Radio.is-readOnly .spectrum-Radio-input:checked:disabled ~ .spectrum-Radio-label,\n.spectrum-Radio.is-readOnly .spectrum-Radio-input:disabled ~ .spectrum-Radio-label,\n.spectrum-Radio.is-readOnly .spectrum-Radio-label", + ".spectrum-Radio.is-readOnly .spectrum-Radio-input:read-only", + ".spectrum-Radio:active .spectrum-Radio-button:before", + ".spectrum-Radio:active .spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio:active .spectrum-Radio-label", + ".spectrum-Radio:dir(rtl) .spectrum-Radio-button:after,\n[dir=\"rtl\"] .spectrum-Radio .spectrum-Radio-button:after", + ".spectrum-Radio:focus .spectrum-Radio-button:after", + ".spectrum-Radio:focus .spectrum-Radio-button:before", + ".spectrum-Radio:focus .spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio:focus .spectrum-Radio-label", + ".spectrum-Radio:hover .spectrum-Radio-button:before", + ".spectrum-Radio:hover .spectrum-Radio-input:checked + .spectrum-Radio-button:before", + ".spectrum-Radio:hover .spectrum-Radio-label", + ".spectrum-Radio:lang(ja),\n.spectrum-Radio:lang(ko),\n.spectrum-Radio:lang(zh)" + ], + "mods": [ + "--mod-radio-animation-duration", + "--mod-radio-border-width", + "--mod-radio-button-background-color", + "--mod-radio-button-border-color-default", + "--mod-radio-button-border-color-down", + "--mod-radio-button-border-color-focus", + "--mod-radio-button-border-color-hover", + "--mod-radio-button-checked-border-color-default", + "--mod-radio-button-checked-border-color-down", + "--mod-radio-button-checked-border-color-focus", + "--mod-radio-button-checked-border-color-hover", + "--mod-radio-button-control-size", + "--mod-radio-button-top-to-control", + "--mod-radio-disabled-border-color", + "--mod-radio-disabled-content-color", + "--mod-radio-emphasized-accent-color", + "--mod-radio-emphasized-accent-color-down", + "--mod-radio-emphasized-accent-color-focus", + "--mod-radio-emphasized-accent-color-hover", + "--mod-radio-focus-indicator-color", + "--mod-radio-focus-indicator-thickness", + "--mod-radio-font-size", + "--mod-radio-height", + "--mod-radio-line-height", + "--mod-radio-line-height-cjk", + "--mod-radio-neutral-content-color", + "--mod-radio-neutral-content-color-down", + "--mod-radio-neutral-content-color-focus", + "--mod-radio-neutral-content-color-hover", + "--mod-radio-text-to-control" + ], + "spectrum": [ + "--spectrum-accent-color-1000", + "--spectrum-accent-color-1100", + "--spectrum-accent-color-900", + "--spectrum-animation-duration-100", + "--spectrum-border-width-200", + "--spectrum-cjk-line-height-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-75", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-line-height-100", + "--spectrum-neutral-background-color-selected-default", + "--spectrum-neutral-background-color-selected-down", + "--spectrum-neutral-background-color-selected-focus", + "--spectrum-neutral-background-color-selected-hover", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-radio-animation-duration", + "--spectrum-radio-border-width", + "--spectrum-radio-button-background-color", + "--spectrum-radio-button-border-color-default", + "--spectrum-radio-button-border-color-down", + "--spectrum-radio-button-border-color-focus", + "--spectrum-radio-button-border-color-hover", + "--spectrum-radio-button-checked-border-color-default", + "--spectrum-radio-button-checked-border-color-down", + "--spectrum-radio-button-checked-border-color-focus", + "--spectrum-radio-button-checked-border-color-hover", + "--spectrum-radio-button-control-size", + "--spectrum-radio-button-control-size-extra-large", + "--spectrum-radio-button-control-size-large", + "--spectrum-radio-button-control-size-medium", + "--spectrum-radio-button-control-size-small", + "--spectrum-radio-button-selection-indicator", + "--spectrum-radio-button-top-to-control", + "--spectrum-radio-button-top-to-control-extra-large", + "--spectrum-radio-button-top-to-control-large", + "--spectrum-radio-button-top-to-control-medium", + "--spectrum-radio-button-top-to-control-small", + "--spectrum-radio-disabled-border-color", + "--spectrum-radio-disabled-content-color", + "--spectrum-radio-emphasized-accent-color", + "--spectrum-radio-emphasized-accent-color-down", + "--spectrum-radio-emphasized-accent-color-focus", + "--spectrum-radio-emphasized-accent-color-hover", + "--spectrum-radio-focus-indicator-color", + "--spectrum-radio-focus-indicator-gap", + "--spectrum-radio-focus-indicator-thickness", + "--spectrum-radio-font-size", + "--spectrum-radio-height", + "--spectrum-radio-label-bottom-to-text", + "--spectrum-radio-label-top-to-text", + "--spectrum-radio-line-height", + "--spectrum-radio-line-height-cjk", + "--spectrum-radio-neutral-content-color", + "--spectrum-radio-neutral-content-color-down", + "--spectrum-radio-neutral-content-color-focus", + "--spectrum-radio-neutral-content-color-hover", + "--spectrum-radio-text-to-control", + "--spectrum-text-to-control-100", + "--spectrum-text-to-control-200", + "--spectrum-text-to-control-300", + "--spectrum-text-to-control-75" + ], + "system": [ + "--system-spectrum-radio-button-border-color-default", + "--system-spectrum-radio-button-border-color-down", + "--system-spectrum-radio-button-border-color-focus", + "--system-spectrum-radio-button-border-color-hover", + "--system-spectrum-radio-emphasized-button-checked-border-color-default", + "--system-spectrum-radio-emphasized-button-checked-border-color-down", + "--system-spectrum-radio-emphasized-button-checked-border-color-focus", + "--system-spectrum-radio-emphasized-button-checked-border-color-hover" + ], + "a11y": [ + "--highcontrast-radio-button-background-color", + "--highcontrast-radio-button-border-color-default", + "--highcontrast-radio-button-border-color-down", + "--highcontrast-radio-button-border-color-focus", + "--highcontrast-radio-button-border-color-hover", + "--highcontrast-radio-button-checked-border-color-default", + "--highcontrast-radio-button-checked-border-color-down", + "--highcontrast-radio-button-checked-border-color-focus", + "--highcontrast-radio-button-checked-border-color-hover", + "--highcontrast-radio-disabled-border-color", + "--highcontrast-radio-disabled-content-color", + "--highcontrast-radio-emphasized-accent-color", + "--highcontrast-radio-emphasized-accent-color-down", + "--highcontrast-radio-emphasized-accent-color-focus", + "--highcontrast-radio-emphasized-accent-color-hover", + "--highcontrast-radio-focus-indicator-color", + "--highcontrast-radio-neutral-content-color", + "--highcontrast-radio-neutral-content-color-down", + "--highcontrast-radio-neutral-content-color-focus", + "--highcontrast-radio-neutral-content-color-hover" + ] +} diff --git a/components/radio/package.json b/components/radio/package.json new file mode 100644 index 0000000000..04e4864742 --- /dev/null +++ b/components/radio/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/radio", + "version": "9.2.2", + "description": "The Spectrum CSS radio component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/radio", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/radio" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/radio/template.js b/components/radio/template.js new file mode 100644 index 0000000000..11097eb18e --- /dev/null +++ b/components/radio/template.js @@ -0,0 +1,56 @@ +import { useArgs } from "@storybook/preview-api"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Radio", + size = "m", + label, + name, + isEmphasized, + isChecked, + isDisabled, + isReadOnly, + id, + customClasses = [], + customStyles = {}, +} = {}, context = {}) => { + const { updateArgs } = context; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + id=${ifDefined(id)} + > + { + if (isDisabled) return; + updateArgs({ isChecked: !isChecked }); + }} + /> + + +
    + `; +}; diff --git a/components/radio/themes/express.css b/components/radio/themes/express.css new file mode 100644 index 0000000000..57827eca1d --- /dev/null +++ b/components/radio/themes/express.css @@ -0,0 +1,24 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-900); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-radio-emphasized-button-checked-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-radio-emphasized-button-checked-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-radio-emphasized-button-checked-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-radio-emphasized-button-checked-border-color-focus: var(--spectrum-accent-color-1000); +} +/*# sourceMappingURL=components/radio/themes/express.css.map */ diff --git a/components/radio/themes/spectrum.css b/components/radio/themes/spectrum.css new file mode 100644 index 0000000000..9cd7bf55ec --- /dev/null +++ b/components/radio/themes/spectrum.css @@ -0,0 +1,24 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-radio-button-border-color-default: var(--spectrum-gray-600); + --system-spectrum-radio-button-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-radio-button-border-color-down: var(--spectrum-gray-800); + --system-spectrum-radio-button-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-radio-emphasized-button-checked-border-color-default: var(--spectrum-accent-color-900); + --system-spectrum-radio-emphasized-button-checked-border-color-hover: var(--spectrum-accent-color-1000); + --system-spectrum-radio-emphasized-button-checked-border-color-down: var(--spectrum-accent-color-1100); + --system-spectrum-radio-emphasized-button-checked-border-color-focus: var(--spectrum-accent-color-1000); +} +/*# sourceMappingURL=components/radio/themes/spectrum.css.map */ diff --git a/components/rating/index-base.css b/components/rating/index-base.css new file mode 100644 index 0000000000..ecc2cf8d57 --- /dev/null +++ b/components/rating/index-base.css @@ -0,0 +1,175 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Rating { + --spectrum-rating-icon-height: var(--spectrum-workflow-icon-size-100); + --spectrum-rating-icon-width: var(--spectrum-workflow-icon-size-100); + --spectrum-rating-border-radius: var(--spectrum-corner-radius-100); + --spectrum-rating-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-rating-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-rating-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-rating-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-rating-indicator-border-radius: var(--spectrum-corner-radius-75); + --spectrum-rating-indicator-height: var(--spectrum-border-width-200); + --spectrum-rating-emphasized-icon-color-default: var(--spectrum-accent-content-color-default); + --spectrum-rating-emphasized-icon-color-hover: var(--spectrum-accent-content-color-hover); + --spectrum-rating-emphasized-icon-color-down: var(--spectrum-accent-content-color-down); + --spectrum-rating-emphasized-icon-color-key-focus: var(--spectrum-accent-content-color-key-focus); + --spectrum-rating-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-rating-icon-count: var(--spectrum-rating-icon-count); +} +.spectrum-Rating.is-focused { + box-shadow: 0 0 0 var(--mod-rating-focus-indicator-thickness, var(--spectrum-rating-focus-indicator-thickness)) var(--highcontrast-rating-focus-indicator-color, var(--mod-rating-focus-indicator-color, var(--spectrum-rating-focus-indicator-color))); +} +.spectrum-Rating.is-focused .spectrum-Rating-icon, +.spectrum-Rating.is-focused .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-key-focus, var(--mod-rating-icon-color-key-focus, var(--spectrum-rating-icon-color-key-focus))); +} +.spectrum-Rating { + position: relative; + display: inline-flex; + flex: 0 0 auto; + gap: var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing)); + inline-size: calc((var(--mod-rating-icon-width, var(--spectrum-rating-icon-width)) + var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing))) * var(--mod-rating-icon-count, var(--spectrum-rating-icon-count))); + border-radius: var(--mod-rating-border-radius, var(--spectrum-rating-border-radius)); + padding-inline: calc(var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing)) + var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap)) - 1.5px); + cursor: pointer; +} +.spectrum-Rating.is-disabled, +.spectrum-Rating.is-readOnly { + cursor: default; + pointer-events: none; +} +.spectrum-Rating-input { + position: absolute; + z-index: 0; + inline-size: 100%; + block-size: 100%; + margin: 0; + opacity: 0; + pointer-events: none; +} +.spectrum-Rating-icon { + position: relative; + background-size: contain; + background-repeat: no-repeat; + inline-size: var(--mod-rating-icon-width, var(--spectrum-rating-icon-width)); + block-size: var(--mod-rating-icon-height, var(--spectrum-rating-icon-height)); + padding-block: calc(var(--mod-rating-icon-spacing-vertical-top, var(--spectrum-rating-icon-spacing-vertical-top)) + var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap))); +} +.spectrum-Rating-icon .spectrum-Rating-starActive { + display: none; +} +.spectrum-Rating-icon .spectrum-Rating-starInactive, +.spectrum-Rating-icon.is-selected .spectrum-Rating-starActive { + display: block; +} +.spectrum-Rating-icon.is-selected .spectrum-Rating-starInactive { + display: none; +} +.spectrum-Rating-icon.is-currentValue:after { + border-radius: var(--mod-rating-indicator-border-radius, var(--spectrum-rating-indicator-border-radius)); + content: ""; + block-size: var(--mod-rating-indicator-height, var(--spectrum-rating-indicator-height)); + inline-size: var(--spectrum-rating-indicator-width); + inset-block-end: calc(var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap)) * 2 - 1px); + position: absolute; +} +.spectrum-Rating-starActive, +.spectrum-Rating-starInactive { + margin: 0 auto; +} +.spectrum-Rating-icon, +.spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); +} +.spectrum-Rating--emphasized.is-focused .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-emphasized-icon-color-key-focus, var(--mod-rating-emphasized-icon-color-key-focus, var(--spectrum-rating-emphasized-icon-color-key-focus))); +} +.spectrum-Rating--emphasized .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); +} +.spectrum-Rating--emphasized .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-emphasized-icon-color-default, var(--mod-rating-emphasized-icon-color-default, var(--spectrum-rating-emphasized-icon-color-default))); +} +@media (hover: hover) { + .spectrum-Rating:hover .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating:hover .spectrum-Rating-icon:hover { + color: var(--highcontrast-rating-icon-color-hover, var(--mod-rating-icon-color-hover, var(--spectrum-rating-icon-color-hover))); + } + .spectrum-Rating:hover .spectrum-Rating-icon:active { + color: var(--highcontrast-rating-icon-color-down, var(--mod-rating-icon-color-down, var(--spectrum-rating-icon-color-down))); + } + .spectrum-Rating:hover .spectrum-Rating-icon.is-currentValue:after { + background: currentColor; + } + .spectrum-Rating:hover .spectrum-Rating-starActive { + display: block; + } + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starActive, + .spectrum-Rating:hover .spectrum-Rating-starInactive { + display: none; + } + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starInactive { + display: block; + } + .spectrum-Rating--emphasized .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon, + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon { + color: var(--highcontrast-rating-emphasized-icon-color-default, var(--mod-rating-emphasized-icon-color-default, var(--spectrum-rating-emphasized-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover { + color: var(--highcontrast-rating-emphasized-icon-color-hover, var(--mod-rating-emphasized-icon-color-hover, var(--spectrum-rating-emphasized-icon-color-hover))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:active { + color: var(--highcontrast-rating-emphasized-icon-color-down, var(--mod-rating-emphasized-icon-color-down, var(--spectrum-rating-emphasized-icon-color-down))); + } +} +.spectrum-Rating.is-disabled .spectrum-Rating-icon, +.spectrum-Rating.is-disabled .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-disabled, var(--mod-rating-icon-color-disabled, var(--spectrum-rating-icon-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Rating { + --highcontrast-rating-icon-color-key-focus: CanvasText; + --highcontrast-rating-icon-color-disabled: GrayText; + --highcontrast-rating-emphasized-icon-color-default: Highlight; + --highcontrast-rating-emphasized-icon-color-hover: Highlight; + --highcontrast-rating-emphasized-icon-color-down: Highlight; + } + .spectrum-Rating.is-focused { + outline: 1px solid CanvasText; + } + @media (hover: hover) { + .spectrum-Rating:hover .spectrum-Rating-icon.is-currentValue:after { + background-color: var(--highcontrast-rating-icon-color-key-focus); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon.is-currentValue:after { + background-color: var(--highcontrast-rating-emphasized-icon-color-default); + } + } +} +.spectrum-Rating { + --spectrum-rating-icon-color-default: var(--system-spectrum-rating-icon-color-default); + --spectrum-rating-icon-color-hover: var(--system-spectrum-rating-icon-color-hover); + --spectrum-rating-icon-color-down: var(--system-spectrum-rating-icon-color-down); + --spectrum-rating-icon-color-key-focus: var(--system-spectrum-rating-icon-color-key-focus); +} +/*# sourceMappingURL=components/rating/index.css.map */ diff --git a/components/rating/index-theme.css b/components/rating/index-theme.css new file mode 100644 index 0000000000..7742225dae --- /dev/null +++ b/components/rating/index-theme.css @@ -0,0 +1,26 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); +} +.spectrum--express { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); +} +/*# sourceMappingURL=components/rating/themes/express.css.map */ diff --git a/components/rating/index-vars.css b/components/rating/index-vars.css new file mode 100644 index 0000000000..d6121eaf84 --- /dev/null +++ b/components/rating/index-vars.css @@ -0,0 +1,187 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); +} +.spectrum--express { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); +} +.spectrum-Rating { + --spectrum-rating-icon-height: var(--spectrum-workflow-icon-size-100); + --spectrum-rating-icon-width: var(--spectrum-workflow-icon-size-100); + --spectrum-rating-border-radius: var(--spectrum-corner-radius-100); + --spectrum-rating-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-rating-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-rating-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-rating-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-rating-indicator-border-radius: var(--spectrum-corner-radius-75); + --spectrum-rating-indicator-height: var(--spectrum-border-width-200); + --spectrum-rating-emphasized-icon-color-default: var(--spectrum-accent-content-color-default); + --spectrum-rating-emphasized-icon-color-hover: var(--spectrum-accent-content-color-hover); + --spectrum-rating-emphasized-icon-color-down: var(--spectrum-accent-content-color-down); + --spectrum-rating-emphasized-icon-color-key-focus: var(--spectrum-accent-content-color-key-focus); + --spectrum-rating-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-rating-icon-count: var(--spectrum-rating-icon-count); +} +.spectrum-Rating.is-focused { + box-shadow: 0 0 0 var(--mod-rating-focus-indicator-thickness, var(--spectrum-rating-focus-indicator-thickness)) var(--highcontrast-rating-focus-indicator-color, var(--mod-rating-focus-indicator-color, var(--spectrum-rating-focus-indicator-color))); +} +.spectrum-Rating.is-focused .spectrum-Rating-icon, +.spectrum-Rating.is-focused .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-key-focus, var(--mod-rating-icon-color-key-focus, var(--spectrum-rating-icon-color-key-focus))); +} +.spectrum-Rating { + position: relative; + display: inline-flex; + flex: 0 0 auto; + gap: var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing)); + inline-size: calc((var(--mod-rating-icon-width, var(--spectrum-rating-icon-width)) + var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing))) * var(--mod-rating-icon-count, var(--spectrum-rating-icon-count))); + border-radius: var(--mod-rating-border-radius, var(--spectrum-rating-border-radius)); + padding-inline: calc(var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing)) + var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap)) - 1.5px); + cursor: pointer; +} +.spectrum-Rating.is-disabled, +.spectrum-Rating.is-readOnly { + cursor: default; + pointer-events: none; +} +.spectrum-Rating-input { + position: absolute; + z-index: 0; + inline-size: 100%; + block-size: 100%; + margin: 0; + opacity: 0; + pointer-events: none; +} +.spectrum-Rating-icon { + position: relative; + background-size: contain; + background-repeat: no-repeat; + inline-size: var(--mod-rating-icon-width, var(--spectrum-rating-icon-width)); + block-size: var(--mod-rating-icon-height, var(--spectrum-rating-icon-height)); + padding-block: calc(var(--mod-rating-icon-spacing-vertical-top, var(--spectrum-rating-icon-spacing-vertical-top)) + var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap))); +} +.spectrum-Rating-icon .spectrum-Rating-starActive { + display: none; +} +.spectrum-Rating-icon .spectrum-Rating-starInactive, +.spectrum-Rating-icon.is-selected .spectrum-Rating-starActive { + display: block; +} +.spectrum-Rating-icon.is-selected .spectrum-Rating-starInactive { + display: none; +} +.spectrum-Rating-icon.is-currentValue:after { + border-radius: var(--mod-rating-indicator-border-radius, var(--spectrum-rating-indicator-border-radius)); + content: ""; + block-size: var(--mod-rating-indicator-height, var(--spectrum-rating-indicator-height)); + inline-size: var(--spectrum-rating-indicator-width); + inset-block-end: calc(var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap)) * 2 - 1px); + position: absolute; +} +.spectrum-Rating-starActive, +.spectrum-Rating-starInactive { + margin: 0 auto; +} +.spectrum-Rating-icon, +.spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); +} +.spectrum-Rating--emphasized.is-focused .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-emphasized-icon-color-key-focus, var(--mod-rating-emphasized-icon-color-key-focus, var(--spectrum-rating-emphasized-icon-color-key-focus))); +} +.spectrum-Rating--emphasized .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); +} +.spectrum-Rating--emphasized .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-emphasized-icon-color-default, var(--mod-rating-emphasized-icon-color-default, var(--spectrum-rating-emphasized-icon-color-default))); +} +@media (hover: hover) { + .spectrum-Rating:hover .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating:hover .spectrum-Rating-icon:hover { + color: var(--highcontrast-rating-icon-color-hover, var(--mod-rating-icon-color-hover, var(--spectrum-rating-icon-color-hover))); + } + .spectrum-Rating:hover .spectrum-Rating-icon:active { + color: var(--highcontrast-rating-icon-color-down, var(--mod-rating-icon-color-down, var(--spectrum-rating-icon-color-down))); + } + .spectrum-Rating:hover .spectrum-Rating-icon.is-currentValue:after { + background: currentColor; + } + .spectrum-Rating:hover .spectrum-Rating-starActive { + display: block; + } + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starActive, + .spectrum-Rating:hover .spectrum-Rating-starInactive { + display: none; + } + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starInactive { + display: block; + } + .spectrum-Rating--emphasized .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon, + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon { + color: var(--highcontrast-rating-emphasized-icon-color-default, var(--mod-rating-emphasized-icon-color-default, var(--spectrum-rating-emphasized-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover { + color: var(--highcontrast-rating-emphasized-icon-color-hover, var(--mod-rating-emphasized-icon-color-hover, var(--spectrum-rating-emphasized-icon-color-hover))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:active { + color: var(--highcontrast-rating-emphasized-icon-color-down, var(--mod-rating-emphasized-icon-color-down, var(--spectrum-rating-emphasized-icon-color-down))); + } +} +.spectrum-Rating.is-disabled .spectrum-Rating-icon, +.spectrum-Rating.is-disabled .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-disabled, var(--mod-rating-icon-color-disabled, var(--spectrum-rating-icon-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Rating { + --highcontrast-rating-icon-color-key-focus: CanvasText; + --highcontrast-rating-icon-color-disabled: GrayText; + --highcontrast-rating-emphasized-icon-color-default: Highlight; + --highcontrast-rating-emphasized-icon-color-hover: Highlight; + --highcontrast-rating-emphasized-icon-color-down: Highlight; + } + .spectrum-Rating.is-focused { + outline: 1px solid CanvasText; + } + @media (hover: hover) { + .spectrum-Rating:hover .spectrum-Rating-icon.is-currentValue:after { + background-color: var(--highcontrast-rating-icon-color-key-focus); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon.is-currentValue:after { + background-color: var(--highcontrast-rating-emphasized-icon-color-default); + } + } +} +.spectrum-Rating { + --spectrum-rating-icon-color-default: var(--system-spectrum-rating-icon-color-default); + --spectrum-rating-icon-color-hover: var(--system-spectrum-rating-icon-color-hover); + --spectrum-rating-icon-color-down: var(--system-spectrum-rating-icon-color-down); + --spectrum-rating-icon-color-key-focus: var(--system-spectrum-rating-icon-color-key-focus); +} +/*# sourceMappingURL=components/rating/index.css.map */ diff --git a/components/rating/index.css b/components/rating/index.css new file mode 100644 index 0000000000..d6121eaf84 --- /dev/null +++ b/components/rating/index.css @@ -0,0 +1,187 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); +} +.spectrum--express { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); +} +.spectrum-Rating { + --spectrum-rating-icon-height: var(--spectrum-workflow-icon-size-100); + --spectrum-rating-icon-width: var(--spectrum-workflow-icon-size-100); + --spectrum-rating-border-radius: var(--spectrum-corner-radius-100); + --spectrum-rating-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-rating-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-rating-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-rating-icon-spacing-vertical-top: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-rating-indicator-border-radius: var(--spectrum-corner-radius-75); + --spectrum-rating-indicator-height: var(--spectrum-border-width-200); + --spectrum-rating-emphasized-icon-color-default: var(--spectrum-accent-content-color-default); + --spectrum-rating-emphasized-icon-color-hover: var(--spectrum-accent-content-color-hover); + --spectrum-rating-emphasized-icon-color-down: var(--spectrum-accent-content-color-down); + --spectrum-rating-emphasized-icon-color-key-focus: var(--spectrum-accent-content-color-key-focus); + --spectrum-rating-icon-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-rating-icon-count: var(--spectrum-rating-icon-count); +} +.spectrum-Rating.is-focused { + box-shadow: 0 0 0 var(--mod-rating-focus-indicator-thickness, var(--spectrum-rating-focus-indicator-thickness)) var(--highcontrast-rating-focus-indicator-color, var(--mod-rating-focus-indicator-color, var(--spectrum-rating-focus-indicator-color))); +} +.spectrum-Rating.is-focused .spectrum-Rating-icon, +.spectrum-Rating.is-focused .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-key-focus, var(--mod-rating-icon-color-key-focus, var(--spectrum-rating-icon-color-key-focus))); +} +.spectrum-Rating { + position: relative; + display: inline-flex; + flex: 0 0 auto; + gap: var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing)); + inline-size: calc((var(--mod-rating-icon-width, var(--spectrum-rating-icon-width)) + var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing))) * var(--mod-rating-icon-count, var(--spectrum-rating-icon-count))); + border-radius: var(--mod-rating-border-radius, var(--spectrum-rating-border-radius)); + padding-inline: calc(var(--mod-rating-icon-spacing, var(--spectrum-rating-icon-spacing)) + var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap)) - 1.5px); + cursor: pointer; +} +.spectrum-Rating.is-disabled, +.spectrum-Rating.is-readOnly { + cursor: default; + pointer-events: none; +} +.spectrum-Rating-input { + position: absolute; + z-index: 0; + inline-size: 100%; + block-size: 100%; + margin: 0; + opacity: 0; + pointer-events: none; +} +.spectrum-Rating-icon { + position: relative; + background-size: contain; + background-repeat: no-repeat; + inline-size: var(--mod-rating-icon-width, var(--spectrum-rating-icon-width)); + block-size: var(--mod-rating-icon-height, var(--spectrum-rating-icon-height)); + padding-block: calc(var(--mod-rating-icon-spacing-vertical-top, var(--spectrum-rating-icon-spacing-vertical-top)) + var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap))); +} +.spectrum-Rating-icon .spectrum-Rating-starActive { + display: none; +} +.spectrum-Rating-icon .spectrum-Rating-starInactive, +.spectrum-Rating-icon.is-selected .spectrum-Rating-starActive { + display: block; +} +.spectrum-Rating-icon.is-selected .spectrum-Rating-starInactive { + display: none; +} +.spectrum-Rating-icon.is-currentValue:after { + border-radius: var(--mod-rating-indicator-border-radius, var(--spectrum-rating-indicator-border-radius)); + content: ""; + block-size: var(--mod-rating-indicator-height, var(--spectrum-rating-indicator-height)); + inline-size: var(--spectrum-rating-indicator-width); + inset-block-end: calc(var(--mod-rating-focus-indicator-gap, var(--spectrum-rating-focus-indicator-gap)) * 2 - 1px); + position: absolute; +} +.spectrum-Rating-starActive, +.spectrum-Rating-starInactive { + margin: 0 auto; +} +.spectrum-Rating-icon, +.spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); +} +.spectrum-Rating--emphasized.is-focused .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-emphasized-icon-color-key-focus, var(--mod-rating-emphasized-icon-color-key-focus, var(--spectrum-rating-emphasized-icon-color-key-focus))); +} +.spectrum-Rating--emphasized .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); +} +.spectrum-Rating--emphasized .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-emphasized-icon-color-default, var(--mod-rating-emphasized-icon-color-default, var(--spectrum-rating-emphasized-icon-color-default))); +} +@media (hover: hover) { + .spectrum-Rating:hover .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating:hover .spectrum-Rating-icon:hover { + color: var(--highcontrast-rating-icon-color-hover, var(--mod-rating-icon-color-hover, var(--spectrum-rating-icon-color-hover))); + } + .spectrum-Rating:hover .spectrum-Rating-icon:active { + color: var(--highcontrast-rating-icon-color-down, var(--mod-rating-icon-color-down, var(--spectrum-rating-icon-color-down))); + } + .spectrum-Rating:hover .spectrum-Rating-icon.is-currentValue:after { + background: currentColor; + } + .spectrum-Rating:hover .spectrum-Rating-starActive { + display: block; + } + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starActive, + .spectrum-Rating:hover .spectrum-Rating-starInactive { + display: none; + } + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starInactive { + display: block; + } + .spectrum-Rating--emphasized .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon, + .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon { + color: var(--highcontrast-rating-emphasized-icon-color-default, var(--mod-rating-emphasized-icon-color-default, var(--spectrum-rating-emphasized-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover { + color: var(--highcontrast-rating-emphasized-icon-color-hover, var(--mod-rating-emphasized-icon-color-hover, var(--spectrum-rating-emphasized-icon-color-hover))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon { + color: var(--highcontrast-rating-icon-color-default, var(--mod-rating-icon-color-default, var(--spectrum-rating-icon-color-default))); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon:active { + color: var(--highcontrast-rating-emphasized-icon-color-down, var(--mod-rating-emphasized-icon-color-down, var(--spectrum-rating-emphasized-icon-color-down))); + } +} +.spectrum-Rating.is-disabled .spectrum-Rating-icon, +.spectrum-Rating.is-disabled .spectrum-Rating-icon.is-selected { + color: var(--highcontrast-rating-icon-color-disabled, var(--mod-rating-icon-color-disabled, var(--spectrum-rating-icon-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Rating { + --highcontrast-rating-icon-color-key-focus: CanvasText; + --highcontrast-rating-icon-color-disabled: GrayText; + --highcontrast-rating-emphasized-icon-color-default: Highlight; + --highcontrast-rating-emphasized-icon-color-hover: Highlight; + --highcontrast-rating-emphasized-icon-color-down: Highlight; + } + .spectrum-Rating.is-focused { + outline: 1px solid CanvasText; + } + @media (hover: hover) { + .spectrum-Rating:hover .spectrum-Rating-icon.is-currentValue:after { + background-color: var(--highcontrast-rating-icon-color-key-focus); + } + .spectrum-Rating--emphasized:hover .spectrum-Rating-icon.is-currentValue:after { + background-color: var(--highcontrast-rating-emphasized-icon-color-default); + } + } +} +.spectrum-Rating { + --spectrum-rating-icon-color-default: var(--system-spectrum-rating-icon-color-default); + --spectrum-rating-icon-color-hover: var(--system-spectrum-rating-icon-color-hover); + --spectrum-rating-icon-color-down: var(--system-spectrum-rating-icon-color-down); + --spectrum-rating-icon-color-key-focus: var(--system-spectrum-rating-icon-color-key-focus); +} +/*# sourceMappingURL=components/rating/index.css.map */ diff --git a/components/rating/metadata.json b/components/rating/metadata.json new file mode 100644 index 0000000000..713a6898d6 --- /dev/null +++ b/components/rating/metadata.json @@ -0,0 +1,119 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Rating", + ".spectrum-Rating--emphasized .spectrum-Rating-icon", + ".spectrum-Rating--emphasized .spectrum-Rating-icon.is-selected", + ".spectrum-Rating--emphasized .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon,\n\t.spectrum-Rating-icon:hover ~ .spectrum-Rating-icon", + ".spectrum-Rating--emphasized.is-focused .spectrum-Rating-icon.is-selected", + ".spectrum-Rating--emphasized:hover .spectrum-Rating-icon", + ".spectrum-Rating--emphasized:hover .spectrum-Rating-icon.is-currentValue:after", + ".spectrum-Rating--emphasized:hover .spectrum-Rating-icon:active", + ".spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover", + ".spectrum-Rating--emphasized:hover .spectrum-Rating-icon:hover ~ .spectrum-Rating-icon", + ".spectrum-Rating-icon", + ".spectrum-Rating-icon .spectrum-Rating-starActive", + ".spectrum-Rating-icon .spectrum-Rating-starInactive,\n.spectrum-Rating-icon.is-selected .spectrum-Rating-starActive", + ".spectrum-Rating-icon,\n.spectrum-Rating-icon.is-selected", + ".spectrum-Rating-icon.is-currentValue:after", + ".spectrum-Rating-icon.is-selected .spectrum-Rating-starInactive", + ".spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starActive,\n\t.spectrum-Rating:hover .spectrum-Rating-starInactive", + ".spectrum-Rating-icon:hover ~ .spectrum-Rating-icon .spectrum-Rating-starInactive", + ".spectrum-Rating-input", + ".spectrum-Rating-starActive,\n.spectrum-Rating-starInactive", + ".spectrum-Rating.is-disabled .spectrum-Rating-icon,\n.spectrum-Rating.is-disabled .spectrum-Rating-icon.is-selected", + ".spectrum-Rating.is-disabled,\n.spectrum-Rating.is-readOnly", + ".spectrum-Rating.is-focused", + ".spectrum-Rating.is-focused .spectrum-Rating-icon,\n.spectrum-Rating.is-focused .spectrum-Rating-icon.is-selected", + ".spectrum-Rating:hover .spectrum-Rating-icon", + ".spectrum-Rating:hover .spectrum-Rating-icon.is-currentValue:after", + ".spectrum-Rating:hover .spectrum-Rating-icon:active", + ".spectrum-Rating:hover .spectrum-Rating-icon:hover", + ".spectrum-Rating:hover .spectrum-Rating-starActive" + ], + "mods": [ + "--mod-rating-border-radius", + "--mod-rating-emphasized-icon-color-default", + "--mod-rating-emphasized-icon-color-down", + "--mod-rating-emphasized-icon-color-hover", + "--mod-rating-emphasized-icon-color-key-focus", + "--mod-rating-focus-indicator-color", + "--mod-rating-focus-indicator-gap", + "--mod-rating-focus-indicator-thickness", + "--mod-rating-icon-color-default", + "--mod-rating-icon-color-disabled", + "--mod-rating-icon-color-down", + "--mod-rating-icon-color-hover", + "--mod-rating-icon-color-key-focus", + "--mod-rating-icon-count", + "--mod-rating-icon-height", + "--mod-rating-icon-spacing", + "--mod-rating-icon-spacing-vertical-top", + "--mod-rating-icon-width", + "--mod-rating-indicator-border-radius", + "--mod-rating-indicator-height" + ], + "spectrum": [ + "--spectrum-accent-content-color-default", + "--spectrum-accent-content-color-down", + "--spectrum-accent-content-color-hover", + "--spectrum-accent-content-color-key-focus", + "--spectrum-border-width-200", + "--spectrum-component-top-to-workflow-icon-100", + "--spectrum-corner-radius-100", + "--spectrum-corner-radius-75", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-neutral-subdued-content-color-down", + "--spectrum-neutral-subdued-content-color-hover", + "--spectrum-neutral-subdued-content-color-key-focus", + "--spectrum-rating-border-radius", + "--spectrum-rating-emphasized-icon-color-default", + "--spectrum-rating-emphasized-icon-color-down", + "--spectrum-rating-emphasized-icon-color-hover", + "--spectrum-rating-emphasized-icon-color-key-focus", + "--spectrum-rating-focus-indicator-color", + "--spectrum-rating-focus-indicator-gap", + "--spectrum-rating-focus-indicator-thickness", + "--spectrum-rating-icon-color-default", + "--spectrum-rating-icon-color-disabled", + "--spectrum-rating-icon-color-down", + "--spectrum-rating-icon-color-hover", + "--spectrum-rating-icon-color-key-focus", + "--spectrum-rating-icon-count", + "--spectrum-rating-icon-height", + "--spectrum-rating-icon-spacing", + "--spectrum-rating-icon-spacing-vertical-top", + "--spectrum-rating-icon-width", + "--spectrum-rating-indicator-border-radius", + "--spectrum-rating-indicator-height", + "--spectrum-rating-indicator-width", + "--spectrum-workflow-icon-size-100" + ], + "system": [ + "--system-spectrum-rating-icon-color-default", + "--system-spectrum-rating-icon-color-down", + "--system-spectrum-rating-icon-color-hover", + "--system-spectrum-rating-icon-color-key-focus" + ], + "a11y": [ + "--highcontrast-rating-emphasized-icon-color-default", + "--highcontrast-rating-emphasized-icon-color-down", + "--highcontrast-rating-emphasized-icon-color-hover", + "--highcontrast-rating-emphasized-icon-color-key-focus", + "--highcontrast-rating-focus-indicator-color", + "--highcontrast-rating-icon-color-default", + "--highcontrast-rating-icon-color-disabled", + "--highcontrast-rating-icon-color-down", + "--highcontrast-rating-icon-color-hover", + "--highcontrast-rating-icon-color-key-focus" + ] +} diff --git a/components/rating/package.json b/components/rating/package.json new file mode 100644 index 0000000000..0ce134ca7c --- /dev/null +++ b/components/rating/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/rating", + "version": "5.1.1", + "description": "The Spectrum CSS rating component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/rating", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/rating" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/rating/template.js b/components/rating/template.js new file mode 100644 index 0000000000..30d54b838b --- /dev/null +++ b/components/rating/template.js @@ -0,0 +1,89 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Rating", + max = 5, + value = 0, + isReadOnly = false, + isFocused = false, + isDisabled = true, + isEmphasized = false, + customClasses = [], + id, +} = {}, context = {}) => { + const { updateArgs } = context; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + @focusin=${() => { + updateArgs({ isFocused: true }); + }} + @focusout=${() => { + updateArgs({ isFocused: false }); + }} + > + { + const rating = e.target.closest(`.${rootClass}`); + if (!rating) return; + + const input = rating.closest(`.${rootClass}-input`); + if (!input) return; + if (!isReadOnly && !isDisabled) { + updateArgs({ value: parseInt(input.value, 10) }); + } + }} + /> + ${repeat( + Array(max).fill(0), + (_, idx) => html` + { + updateArgs({ value: idx + 1, isFocused: true }); + }} + > + ${Icon({ + iconName: "Star", + customClasses: [`${rootClass}-starActive`], + }, context)} + ${Icon({ + iconName: "StarOutline", + customClasses: [`${rootClass}-starInactive`], + }, context)} + + ` + )} +
    + `; +}; diff --git a/components/rating/themes/express.css b/components/rating/themes/express.css new file mode 100644 index 0000000000..9e6d1df36b --- /dev/null +++ b/components/rating/themes/express.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-content-color-key-focus); +} +/*# sourceMappingURL=components/rating/themes/express.css.map */ diff --git a/components/rating/themes/spectrum.css b/components/rating/themes/spectrum.css new file mode 100644 index 0000000000..5949e4a921 --- /dev/null +++ b/components/rating/themes/spectrum.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-rating-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-rating-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-rating-icon-color-down: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-rating-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); +} +/*# sourceMappingURL=components/rating/themes/spectrum.css.map */ diff --git a/components/search/index-base.css b/components/search/index-base.css new file mode 100644 index 0000000000..96b26f75dc --- /dev/null +++ b/components/search/index-base.css @@ -0,0 +1,206 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Search { + --spectrum-search-inline-size: var(--spectrum-field-width); + --spectrum-search-block-size: var(--spectrum-component-height-100); + --spectrum-search-button-inline-size: var(--spectrum-search-block-size); + --spectrum-search-min-inline-size: calc(var(--spectrum-search-field-minimum-width-multiplier) * var(--spectrum-search-block-size)); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-search-to-help-text: var(--spectrum-help-text-to-component); + --spectrum-search-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-search-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-search-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-search-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-search-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-search-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-search-font-weight: var(--spectrum-regular-font-weight); + --spectrum-search-font-style: var(--spectrum-default-font-style); + --spectrum-search-line-height: var(--spectrum-line-height-100); + --spectrum-search-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-search-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-search-color-focus: var(--spectrum-neutral-content-color-focus); + --spectrum-search-color-focus-hover: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-search-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-search-border-width: var(--spectrum-border-width-100); + --spectrum-search-background-color: var(--spectrum-gray-50); + --spectrum-search-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-search-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-search-border-color-disabled: var(--spectrum-disabled-background-color); + --mod-textfield-font-family: var(--mod-search-font-family, var(--spectrum-search-font-family)); + --mod-textfield-font-weight: var(--mod-search-font-weight, var(--spectrum-search-font-weight)); + --mod-textfield-corner-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); + --mod-textfield-border-width: var(--mod-search-border-width, var(--spectrum-search-border-width)); + --mod-textfield-focus-indicator-gap: var(--mod-search-focus-indicator-gap, var(--spectrum-search-focus-indicator-gap)); + --mod-textfield-focus-indicator-width: var(--mod-search-focus-indicator-thickness, var(--spectrum-search-focus-indicator-thickness)); + --mod-textfield-focus-indicator-color: var(--mod-search-focus-indicator-color, var(--spectrum-search-focus-indicator-color)); + --mod-textfield-text-color-default: var(--mod-search-color-default, var(--spectrum-search-color-default)); + --mod-textfield-text-color-hover: var(--mod-search-color-hover, var(--spectrum-search-color-hover)); + --mod-textfield-text-color-focus: var(--mod-search-color-focus, var(--spectrum-search-color-focus)); + --mod-textfield-text-color-focus-hover: var(--mod-search-color-focus-hover, var(--spectrum-search-color-focus-hover)); + --mod-textfield-text-color-keyboard-focus: var(--mod-search-color-key-focus, var(--spectrum-search-color-key-focus)); + --mod-textfield-text-color-disabled: var(--mod-search-color-disabled, var(--spectrum-search-color-disabled)); + --mod-textfield-border-color: var(--mod-search-border-color-default, var(--spectrum-search-border-color-default)); + --mod-textfield-border-color-hover: var(--mod-search-border-color-hover, var(--spectrum-search-border-color-hover)); + --mod-textfield-border-color-focus: var(--mod-search-border-color-focus, var(--spectrum-search-border-color-focus)); + --mod-textfield-border-color-focus-hover: var(--mod-search-border-color-focus-hover, var(--spectrum-search-border-color-focus-hover)); + --mod-textfield-border-color-keyboard-focus: var(--mod-search-border-color-key-focus, var(--spectrum-search-border-color-key-focus)); + --mod-textfield-border-color-disabled: var(--mod-search-border-color-disabled, var(--spectrum-search-border-color-disabled)); + --mod-textfield-background-color: var(--mod-search-background-color, var(--spectrum-search-background-color)); + --mod-textfield-background-color-disabled: var(--mod-search-background-color-disabled, var(--spectrum-search-background-color-disabled)); +} +.spectrum-Search--sizeS { + --spectrum-search-block-size: var(--spectrum-component-height-75); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-75); +} +.spectrum-Search--sizeL { + --spectrum-search-block-size: var(--spectrum-component-height-200); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-200); +} +.spectrum-Search--sizeXL { + --spectrum-search-block-size: var(--spectrum-component-height-300); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-300); +} +.spectrum-Search--quiet { + --spectrum-search-quiet-button-offset: calc(var(--mod-search-block-size, var(--spectrum-search-block-size)) / 2 - var(--mod-workflow-icon-size-100, var(--spectrum-workflow-icon-size-100)) / 2); + --spectrum-search-background-color: transparent; + --spectrum-search-background-color-disabled: transparent; + --spectrum-search-border-color-disabled: var(--spectrum-disabled-border-color); +} +.spectrum-Search--quiet.spectrum-Search { + --spectrum-search-border-radius: 0; + --spectrum-search-edge-to-visual: var(--spectrum-field-edge-to-visual-quiet); +} +@media (forced-colors: active) { + .spectrum-Search .spectrum-Search-textfield, + .spectrum-Search .spectrum-Search-textfield .spectrum-Search-input { + --highcontrast-search-color-default: CanvasText; + --highcontrast-search-color-hover: CanvasText; + --highcontrast-search-color-focus: CanvasText; + --highcontrast-search-color-disabled: GrayText; + } + .spectrum-Search .spectrum-Search-clearButton .spectrum-ClearButton-fill { + forced-color-adjust: none; + background-color: initial; + } +} +.spectrum-Search { + display: inline-block; + position: relative; + inline-size: var(--mod-search-inline-size, var(--spectrum-search-inline-size)); + min-inline-size: var(--mod-search-min-inline-size, var(--spectrum-search-min-inline-size)); +} +.spectrum-Search .spectrum-HelpText { + margin-block-start: var(--mod-search-to-help-text, var(--spectrum-search-to-help-text)); +} +.spectrum-Search-clearButton { + position: absolute; + inset-inline-end: 0; + inset-block-start: 0; +} +.spectrum-Search-clearButton, +.spectrum-Search-clearButton .spectrum-ClearButton-fill { + border-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); +} +.spectrum-Search.is-disabled .spectrum-Search-clearButton { + display: none; +} +.spectrum-Search-textfield { + inline-size: 100%; +} +.spectrum-Search-icon { + display: block; + position: absolute; + inset-block: 0; + margin-block: auto; + --spectrum-search-color: var(--highcontrast-search-color-default, var(--mod-search-color-default, var(--spectrum-search-color-default))); + color: var(--spectrum-search-color); +} +.spectrum-Search-textfield.is-focused .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-focus, var(--spectrum-search-color-focus))); +} +.spectrum-Search-textfield.is-keyboardFocused .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-key-focus, var(--spectrum-search-color-key-focus))); +} +.spectrum-Search-textfield.is-disabled .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-disabled, var(--mod-search-color-disabled, var(--spectrum-search-color-disabled))); +} +@media (hover: hover) { + .spectrum-Search-textfield:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-hover, var(--mod-search-color-hover, var(--spectrum-search-color-hover))); + } + .spectrum-Search-textfield.is-focused:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-focus-hover, var(--spectrum-search-color-focus-hover))); + } + .spectrum-Search-textfield.is-disabled:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-disabled, var(--mod-search-color-disabled, var(--spectrum-search-color-disabled))); + } +} +.spectrum-Search-input { + appearance: none; + block-size: var(--mod-search-block-size, var(--spectrum-search-block-size)); + padding-block-start: calc(var(--mod-search-top-to-text, var(--spectrum-search-top-to-text)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); + padding-block-end: calc(var(--mod-search-bottom-to-text, var(--spectrum-search-bottom-to-text)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); + font-style: var(--mod-search-font-style, var(--spectrum-search-font-style)); + line-height: var(--mod-search-line-height, var(--spectrum-search-line-height)); +} +.spectrum-Search-input::-webkit-search-cancel-button, +.spectrum-Search-input::-webkit-search-decoration { + appearance: none; +} +.spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-icon { + inset-inline-start: var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)); +} +.spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-input { + padding-inline-start: calc(var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)) - var(--mod-search-border-width, var(--spectrum-search-border-width)) + var(--mod-search-icon-size, var(--spectrum-search-icon-size)) + var(--mod-search-text-to-icon, var(--spectrum-search-text-to-icon))); + padding-inline-end: calc(var(--mod-search-button-inline-size, var(--spectrum-search-button-inline-size)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); +} +.spectrum-Search--quiet .spectrum-Search-clearButton { + transform: translateX(var(--mod-search-quiet-button-offset, var(--spectrum-search-quiet-button-offset))); +} +.spectrum-Search--quiet.spectrum-Search .spectrum-Search-input { + border-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); + padding-inline-start: calc(var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)) + var(--mod-search-icon-size, var(--spectrum-search-icon-size)) + var(--mod-search-text-to-icon, var(--spectrum-search-text-to-icon))); + padding-inline-end: calc(var(--mod-search-button-inline-size, var(--spectrum-search-button-inline-size)) - var(--mod-search-quiet-button-offset, var(--spectrum-search-quiet-button-offset))); + padding-block-start: var(--mod-search-top-to-text, var(--spectrum-search-top-to-text)); +} +.spectrum-Search { + --spectrum-search-border-radius: var(--system-spectrum-search-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-edge-to-visual); + --spectrum-search-border-color-default: var(--system-spectrum-search-border-color-default); + --spectrum-search-border-color-hover: var(--system-spectrum-search-border-color-hover); + --spectrum-search-border-color-focus: var(--system-spectrum-search-border-color-focus); + --spectrum-search-border-color-focus-hover: var(--system-spectrum-search-border-color-focus-hover); + --spectrum-search-border-color-key-focus: var(--system-spectrum-search-border-color-key-focus); +} +.spectrum-Search--sizeS { + --spectrum-search-border-radius: var(--system-spectrum-search-sizes-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizes-edge-to-visual); +} +.spectrum-Search--sizeM { + --spectrum-search-border-radius: var(--system-spectrum-search-sizem-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizem-edge-to-visual); +} +.spectrum-Search--sizeL { + --spectrum-search-border-radius: var(--system-spectrum-search-sizel-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizel-edge-to-visual); +} +.spectrum-Search--sizeXL { + --spectrum-search-border-radius: var(--system-spectrum-search-sizexl-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizexl-edge-to-visual); +} +/*# sourceMappingURL=components/search/index.css.map */ diff --git a/components/search/index-theme.css b/components/search/index-theme.css new file mode 100644 index 0000000000..d9fe4419ba --- /dev/null +++ b/components/search/index-theme.css @@ -0,0 +1,48 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-search-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-500); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-edge-to-visual-300); +} +.spectrum--express { + --system-spectrum-search-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-400); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: calc(var(--spectrum-component-height-75) / 2); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: calc(var(--spectrum-component-height-200) / 2); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: calc(var(--spectrum-component-height-300) / 2); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-300); +} +/*# sourceMappingURL=components/search/themes/express.css.map */ diff --git a/components/search/index-vars.css b/components/search/index-vars.css new file mode 100644 index 0000000000..ddfb9374d9 --- /dev/null +++ b/components/search/index-vars.css @@ -0,0 +1,240 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-search-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-500); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-edge-to-visual-300); +} +.spectrum--express { + --system-spectrum-search-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-400); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: calc(var(--spectrum-component-height-75) / 2); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: calc(var(--spectrum-component-height-200) / 2); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: calc(var(--spectrum-component-height-300) / 2); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-300); +} +.spectrum-Search { + --spectrum-search-inline-size: var(--spectrum-field-width); + --spectrum-search-block-size: var(--spectrum-component-height-100); + --spectrum-search-button-inline-size: var(--spectrum-search-block-size); + --spectrum-search-min-inline-size: calc(var(--spectrum-search-field-minimum-width-multiplier) * var(--spectrum-search-block-size)); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-search-to-help-text: var(--spectrum-help-text-to-component); + --spectrum-search-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-search-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-search-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-search-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-search-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-search-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-search-font-weight: var(--spectrum-regular-font-weight); + --spectrum-search-font-style: var(--spectrum-default-font-style); + --spectrum-search-line-height: var(--spectrum-line-height-100); + --spectrum-search-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-search-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-search-color-focus: var(--spectrum-neutral-content-color-focus); + --spectrum-search-color-focus-hover: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-search-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-search-border-width: var(--spectrum-border-width-100); + --spectrum-search-background-color: var(--spectrum-gray-50); + --spectrum-search-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-search-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-search-border-color-disabled: var(--spectrum-disabled-background-color); + --mod-textfield-font-family: var(--mod-search-font-family, var(--spectrum-search-font-family)); + --mod-textfield-font-weight: var(--mod-search-font-weight, var(--spectrum-search-font-weight)); + --mod-textfield-corner-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); + --mod-textfield-border-width: var(--mod-search-border-width, var(--spectrum-search-border-width)); + --mod-textfield-focus-indicator-gap: var(--mod-search-focus-indicator-gap, var(--spectrum-search-focus-indicator-gap)); + --mod-textfield-focus-indicator-width: var(--mod-search-focus-indicator-thickness, var(--spectrum-search-focus-indicator-thickness)); + --mod-textfield-focus-indicator-color: var(--mod-search-focus-indicator-color, var(--spectrum-search-focus-indicator-color)); + --mod-textfield-text-color-default: var(--mod-search-color-default, var(--spectrum-search-color-default)); + --mod-textfield-text-color-hover: var(--mod-search-color-hover, var(--spectrum-search-color-hover)); + --mod-textfield-text-color-focus: var(--mod-search-color-focus, var(--spectrum-search-color-focus)); + --mod-textfield-text-color-focus-hover: var(--mod-search-color-focus-hover, var(--spectrum-search-color-focus-hover)); + --mod-textfield-text-color-keyboard-focus: var(--mod-search-color-key-focus, var(--spectrum-search-color-key-focus)); + --mod-textfield-text-color-disabled: var(--mod-search-color-disabled, var(--spectrum-search-color-disabled)); + --mod-textfield-border-color: var(--mod-search-border-color-default, var(--spectrum-search-border-color-default)); + --mod-textfield-border-color-hover: var(--mod-search-border-color-hover, var(--spectrum-search-border-color-hover)); + --mod-textfield-border-color-focus: var(--mod-search-border-color-focus, var(--spectrum-search-border-color-focus)); + --mod-textfield-border-color-focus-hover: var(--mod-search-border-color-focus-hover, var(--spectrum-search-border-color-focus-hover)); + --mod-textfield-border-color-keyboard-focus: var(--mod-search-border-color-key-focus, var(--spectrum-search-border-color-key-focus)); + --mod-textfield-border-color-disabled: var(--mod-search-border-color-disabled, var(--spectrum-search-border-color-disabled)); + --mod-textfield-background-color: var(--mod-search-background-color, var(--spectrum-search-background-color)); + --mod-textfield-background-color-disabled: var(--mod-search-background-color-disabled, var(--spectrum-search-background-color-disabled)); +} +.spectrum-Search--sizeS { + --spectrum-search-block-size: var(--spectrum-component-height-75); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-75); +} +.spectrum-Search--sizeL { + --spectrum-search-block-size: var(--spectrum-component-height-200); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-200); +} +.spectrum-Search--sizeXL { + --spectrum-search-block-size: var(--spectrum-component-height-300); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-300); +} +.spectrum-Search--quiet { + --spectrum-search-quiet-button-offset: calc(var(--mod-search-block-size, var(--spectrum-search-block-size)) / 2 - var(--mod-workflow-icon-size-100, var(--spectrum-workflow-icon-size-100)) / 2); + --spectrum-search-background-color: transparent; + --spectrum-search-background-color-disabled: transparent; + --spectrum-search-border-color-disabled: var(--spectrum-disabled-border-color); +} +.spectrum-Search--quiet.spectrum-Search { + --spectrum-search-border-radius: 0; + --spectrum-search-edge-to-visual: var(--spectrum-field-edge-to-visual-quiet); +} +@media (forced-colors: active) { + .spectrum-Search .spectrum-Search-textfield, + .spectrum-Search .spectrum-Search-textfield .spectrum-Search-input { + --highcontrast-search-color-default: CanvasText; + --highcontrast-search-color-hover: CanvasText; + --highcontrast-search-color-focus: CanvasText; + --highcontrast-search-color-disabled: GrayText; + } + .spectrum-Search .spectrum-Search-clearButton .spectrum-ClearButton-fill { + forced-color-adjust: none; + background-color: initial; + } +} +.spectrum-Search { + display: inline-block; + position: relative; + inline-size: var(--mod-search-inline-size, var(--spectrum-search-inline-size)); + min-inline-size: var(--mod-search-min-inline-size, var(--spectrum-search-min-inline-size)); +} +.spectrum-Search .spectrum-HelpText { + margin-block-start: var(--mod-search-to-help-text, var(--spectrum-search-to-help-text)); +} +.spectrum-Search-clearButton { + position: absolute; + inset-inline-end: 0; + inset-block-start: 0; +} +.spectrum-Search-clearButton, +.spectrum-Search-clearButton .spectrum-ClearButton-fill { + border-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); +} +.spectrum-Search.is-disabled .spectrum-Search-clearButton { + display: none; +} +.spectrum-Search-textfield { + inline-size: 100%; +} +.spectrum-Search-icon { + display: block; + position: absolute; + inset-block: 0; + margin-block: auto; + --spectrum-search-color: var(--highcontrast-search-color-default, var(--mod-search-color-default, var(--spectrum-search-color-default))); + color: var(--spectrum-search-color); +} +.spectrum-Search-textfield.is-focused .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-focus, var(--spectrum-search-color-focus))); +} +.spectrum-Search-textfield.is-keyboardFocused .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-key-focus, var(--spectrum-search-color-key-focus))); +} +.spectrum-Search-textfield.is-disabled .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-disabled, var(--mod-search-color-disabled, var(--spectrum-search-color-disabled))); +} +@media (hover: hover) { + .spectrum-Search-textfield:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-hover, var(--mod-search-color-hover, var(--spectrum-search-color-hover))); + } + .spectrum-Search-textfield.is-focused:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-focus-hover, var(--spectrum-search-color-focus-hover))); + } + .spectrum-Search-textfield.is-disabled:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-disabled, var(--mod-search-color-disabled, var(--spectrum-search-color-disabled))); + } +} +.spectrum-Search-input { + appearance: none; + block-size: var(--mod-search-block-size, var(--spectrum-search-block-size)); + padding-block-start: calc(var(--mod-search-top-to-text, var(--spectrum-search-top-to-text)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); + padding-block-end: calc(var(--mod-search-bottom-to-text, var(--spectrum-search-bottom-to-text)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); + font-style: var(--mod-search-font-style, var(--spectrum-search-font-style)); + line-height: var(--mod-search-line-height, var(--spectrum-search-line-height)); +} +.spectrum-Search-input::-webkit-search-cancel-button, +.spectrum-Search-input::-webkit-search-decoration { + appearance: none; +} +.spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-icon { + inset-inline-start: var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)); +} +.spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-input { + padding-inline-start: calc(var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)) - var(--mod-search-border-width, var(--spectrum-search-border-width)) + var(--mod-search-icon-size, var(--spectrum-search-icon-size)) + var(--mod-search-text-to-icon, var(--spectrum-search-text-to-icon))); + padding-inline-end: calc(var(--mod-search-button-inline-size, var(--spectrum-search-button-inline-size)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); +} +.spectrum-Search--quiet .spectrum-Search-clearButton { + transform: translateX(var(--mod-search-quiet-button-offset, var(--spectrum-search-quiet-button-offset))); +} +.spectrum-Search--quiet.spectrum-Search .spectrum-Search-input { + border-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); + padding-inline-start: calc(var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)) + var(--mod-search-icon-size, var(--spectrum-search-icon-size)) + var(--mod-search-text-to-icon, var(--spectrum-search-text-to-icon))); + padding-inline-end: calc(var(--mod-search-button-inline-size, var(--spectrum-search-button-inline-size)) - var(--mod-search-quiet-button-offset, var(--spectrum-search-quiet-button-offset))); + padding-block-start: var(--mod-search-top-to-text, var(--spectrum-search-top-to-text)); +} +.spectrum-Search { + --spectrum-search-border-radius: var(--system-spectrum-search-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-edge-to-visual); + --spectrum-search-border-color-default: var(--system-spectrum-search-border-color-default); + --spectrum-search-border-color-hover: var(--system-spectrum-search-border-color-hover); + --spectrum-search-border-color-focus: var(--system-spectrum-search-border-color-focus); + --spectrum-search-border-color-focus-hover: var(--system-spectrum-search-border-color-focus-hover); + --spectrum-search-border-color-key-focus: var(--system-spectrum-search-border-color-key-focus); +} +.spectrum-Search--sizeS { + --spectrum-search-border-radius: var(--system-spectrum-search-sizes-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizes-edge-to-visual); +} +.spectrum-Search--sizeM { + --spectrum-search-border-radius: var(--system-spectrum-search-sizem-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizem-edge-to-visual); +} +.spectrum-Search--sizeL { + --spectrum-search-border-radius: var(--system-spectrum-search-sizel-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizel-edge-to-visual); +} +.spectrum-Search--sizeXL { + --spectrum-search-border-radius: var(--system-spectrum-search-sizexl-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizexl-edge-to-visual); +} +/*# sourceMappingURL=components/search/index.css.map */ diff --git a/components/search/index.css b/components/search/index.css new file mode 100644 index 0000000000..ddfb9374d9 --- /dev/null +++ b/components/search/index.css @@ -0,0 +1,240 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-search-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-500); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-edge-to-visual-300); +} +.spectrum--express { + --system-spectrum-search-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-400); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: calc(var(--spectrum-component-height-75) / 2); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: calc(var(--spectrum-component-height-200) / 2); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: calc(var(--spectrum-component-height-300) / 2); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-300); +} +.spectrum-Search { + --spectrum-search-inline-size: var(--spectrum-field-width); + --spectrum-search-block-size: var(--spectrum-component-height-100); + --spectrum-search-button-inline-size: var(--spectrum-search-block-size); + --spectrum-search-min-inline-size: calc(var(--spectrum-search-field-minimum-width-multiplier) * var(--spectrum-search-block-size)); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-100); + --spectrum-search-to-help-text: var(--spectrum-help-text-to-component); + --spectrum-search-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-search-bottom-to-text: var(--spectrum-component-bottom-to-text-100); + --spectrum-search-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-search-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-search-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-search-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-search-font-weight: var(--spectrum-regular-font-weight); + --spectrum-search-font-style: var(--spectrum-default-font-style); + --spectrum-search-line-height: var(--spectrum-line-height-100); + --spectrum-search-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-search-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-search-color-focus: var(--spectrum-neutral-content-color-focus); + --spectrum-search-color-focus-hover: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-search-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-search-border-width: var(--spectrum-border-width-100); + --spectrum-search-background-color: var(--spectrum-gray-50); + --spectrum-search-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-search-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-search-border-color-disabled: var(--spectrum-disabled-background-color); + --mod-textfield-font-family: var(--mod-search-font-family, var(--spectrum-search-font-family)); + --mod-textfield-font-weight: var(--mod-search-font-weight, var(--spectrum-search-font-weight)); + --mod-textfield-corner-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); + --mod-textfield-border-width: var(--mod-search-border-width, var(--spectrum-search-border-width)); + --mod-textfield-focus-indicator-gap: var(--mod-search-focus-indicator-gap, var(--spectrum-search-focus-indicator-gap)); + --mod-textfield-focus-indicator-width: var(--mod-search-focus-indicator-thickness, var(--spectrum-search-focus-indicator-thickness)); + --mod-textfield-focus-indicator-color: var(--mod-search-focus-indicator-color, var(--spectrum-search-focus-indicator-color)); + --mod-textfield-text-color-default: var(--mod-search-color-default, var(--spectrum-search-color-default)); + --mod-textfield-text-color-hover: var(--mod-search-color-hover, var(--spectrum-search-color-hover)); + --mod-textfield-text-color-focus: var(--mod-search-color-focus, var(--spectrum-search-color-focus)); + --mod-textfield-text-color-focus-hover: var(--mod-search-color-focus-hover, var(--spectrum-search-color-focus-hover)); + --mod-textfield-text-color-keyboard-focus: var(--mod-search-color-key-focus, var(--spectrum-search-color-key-focus)); + --mod-textfield-text-color-disabled: var(--mod-search-color-disabled, var(--spectrum-search-color-disabled)); + --mod-textfield-border-color: var(--mod-search-border-color-default, var(--spectrum-search-border-color-default)); + --mod-textfield-border-color-hover: var(--mod-search-border-color-hover, var(--spectrum-search-border-color-hover)); + --mod-textfield-border-color-focus: var(--mod-search-border-color-focus, var(--spectrum-search-border-color-focus)); + --mod-textfield-border-color-focus-hover: var(--mod-search-border-color-focus-hover, var(--spectrum-search-border-color-focus-hover)); + --mod-textfield-border-color-keyboard-focus: var(--mod-search-border-color-key-focus, var(--spectrum-search-border-color-key-focus)); + --mod-textfield-border-color-disabled: var(--mod-search-border-color-disabled, var(--spectrum-search-border-color-disabled)); + --mod-textfield-background-color: var(--mod-search-background-color, var(--spectrum-search-background-color)); + --mod-textfield-background-color-disabled: var(--mod-search-background-color-disabled, var(--spectrum-search-background-color-disabled)); +} +.spectrum-Search--sizeS { + --spectrum-search-block-size: var(--spectrum-component-height-75); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-75); +} +.spectrum-Search--sizeL { + --spectrum-search-block-size: var(--spectrum-component-height-200); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-200); +} +.spectrum-Search--sizeXL { + --spectrum-search-block-size: var(--spectrum-component-height-300); + --spectrum-search-icon-size: var(--spectrum-workflow-icon-size-300); + --spectrum-search-text-to-icon: var(--spectrum-text-to-visual-300); +} +.spectrum-Search--quiet { + --spectrum-search-quiet-button-offset: calc(var(--mod-search-block-size, var(--spectrum-search-block-size)) / 2 - var(--mod-workflow-icon-size-100, var(--spectrum-workflow-icon-size-100)) / 2); + --spectrum-search-background-color: transparent; + --spectrum-search-background-color-disabled: transparent; + --spectrum-search-border-color-disabled: var(--spectrum-disabled-border-color); +} +.spectrum-Search--quiet.spectrum-Search { + --spectrum-search-border-radius: 0; + --spectrum-search-edge-to-visual: var(--spectrum-field-edge-to-visual-quiet); +} +@media (forced-colors: active) { + .spectrum-Search .spectrum-Search-textfield, + .spectrum-Search .spectrum-Search-textfield .spectrum-Search-input { + --highcontrast-search-color-default: CanvasText; + --highcontrast-search-color-hover: CanvasText; + --highcontrast-search-color-focus: CanvasText; + --highcontrast-search-color-disabled: GrayText; + } + .spectrum-Search .spectrum-Search-clearButton .spectrum-ClearButton-fill { + forced-color-adjust: none; + background-color: initial; + } +} +.spectrum-Search { + display: inline-block; + position: relative; + inline-size: var(--mod-search-inline-size, var(--spectrum-search-inline-size)); + min-inline-size: var(--mod-search-min-inline-size, var(--spectrum-search-min-inline-size)); +} +.spectrum-Search .spectrum-HelpText { + margin-block-start: var(--mod-search-to-help-text, var(--spectrum-search-to-help-text)); +} +.spectrum-Search-clearButton { + position: absolute; + inset-inline-end: 0; + inset-block-start: 0; +} +.spectrum-Search-clearButton, +.spectrum-Search-clearButton .spectrum-ClearButton-fill { + border-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); +} +.spectrum-Search.is-disabled .spectrum-Search-clearButton { + display: none; +} +.spectrum-Search-textfield { + inline-size: 100%; +} +.spectrum-Search-icon { + display: block; + position: absolute; + inset-block: 0; + margin-block: auto; + --spectrum-search-color: var(--highcontrast-search-color-default, var(--mod-search-color-default, var(--spectrum-search-color-default))); + color: var(--spectrum-search-color); +} +.spectrum-Search-textfield.is-focused .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-focus, var(--spectrum-search-color-focus))); +} +.spectrum-Search-textfield.is-keyboardFocused .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-key-focus, var(--spectrum-search-color-key-focus))); +} +.spectrum-Search-textfield.is-disabled .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-disabled, var(--mod-search-color-disabled, var(--spectrum-search-color-disabled))); +} +@media (hover: hover) { + .spectrum-Search-textfield:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-hover, var(--mod-search-color-hover, var(--spectrum-search-color-hover))); + } + .spectrum-Search-textfield.is-focused:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-focus, var(--mod-search-color-focus-hover, var(--spectrum-search-color-focus-hover))); + } + .spectrum-Search-textfield.is-disabled:hover .spectrum-Search-icon { + --spectrum-search-color: var(--highcontrast-search-color-disabled, var(--mod-search-color-disabled, var(--spectrum-search-color-disabled))); + } +} +.spectrum-Search-input { + appearance: none; + block-size: var(--mod-search-block-size, var(--spectrum-search-block-size)); + padding-block-start: calc(var(--mod-search-top-to-text, var(--spectrum-search-top-to-text)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); + padding-block-end: calc(var(--mod-search-bottom-to-text, var(--spectrum-search-bottom-to-text)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); + font-style: var(--mod-search-font-style, var(--spectrum-search-font-style)); + line-height: var(--mod-search-line-height, var(--spectrum-search-line-height)); +} +.spectrum-Search-input::-webkit-search-cancel-button, +.spectrum-Search-input::-webkit-search-decoration { + appearance: none; +} +.spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-icon { + inset-inline-start: var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)); +} +.spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-input { + padding-inline-start: calc(var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)) - var(--mod-search-border-width, var(--spectrum-search-border-width)) + var(--mod-search-icon-size, var(--spectrum-search-icon-size)) + var(--mod-search-text-to-icon, var(--spectrum-search-text-to-icon))); + padding-inline-end: calc(var(--mod-search-button-inline-size, var(--spectrum-search-button-inline-size)) - var(--mod-search-border-width, var(--spectrum-search-border-width))); +} +.spectrum-Search--quiet .spectrum-Search-clearButton { + transform: translateX(var(--mod-search-quiet-button-offset, var(--spectrum-search-quiet-button-offset))); +} +.spectrum-Search--quiet.spectrum-Search .spectrum-Search-input { + border-radius: var(--mod-search-border-radius, var(--spectrum-search-border-radius)); + padding-inline-start: calc(var(--mod-search-edge-to-visual, var(--spectrum-search-edge-to-visual)) + var(--mod-search-icon-size, var(--spectrum-search-icon-size)) + var(--mod-search-text-to-icon, var(--spectrum-search-text-to-icon))); + padding-inline-end: calc(var(--mod-search-button-inline-size, var(--spectrum-search-button-inline-size)) - var(--mod-search-quiet-button-offset, var(--spectrum-search-quiet-button-offset))); + padding-block-start: var(--mod-search-top-to-text, var(--spectrum-search-top-to-text)); +} +.spectrum-Search { + --spectrum-search-border-radius: var(--system-spectrum-search-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-edge-to-visual); + --spectrum-search-border-color-default: var(--system-spectrum-search-border-color-default); + --spectrum-search-border-color-hover: var(--system-spectrum-search-border-color-hover); + --spectrum-search-border-color-focus: var(--system-spectrum-search-border-color-focus); + --spectrum-search-border-color-focus-hover: var(--system-spectrum-search-border-color-focus-hover); + --spectrum-search-border-color-key-focus: var(--system-spectrum-search-border-color-key-focus); +} +.spectrum-Search--sizeS { + --spectrum-search-border-radius: var(--system-spectrum-search-sizes-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizes-edge-to-visual); +} +.spectrum-Search--sizeM { + --spectrum-search-border-radius: var(--system-spectrum-search-sizem-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizem-edge-to-visual); +} +.spectrum-Search--sizeL { + --spectrum-search-border-radius: var(--system-spectrum-search-sizel-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizel-edge-to-visual); +} +.spectrum-Search--sizeXL { + --spectrum-search-border-radius: var(--system-spectrum-search-sizexl-border-radius); + --spectrum-search-edge-to-visual: var(--system-spectrum-search-sizexl-edge-to-visual); +} +/*# sourceMappingURL=components/search/index.css.map */ diff --git a/components/search/metadata.json b/components/search/metadata.json new file mode 100644 index 0000000000..5022f4abe6 --- /dev/null +++ b/components/search/metadata.json @@ -0,0 +1,179 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Search", + ".spectrum-Search .spectrum-HelpText", + ".spectrum-Search .spectrum-Search-clearButton .spectrum-ClearButton-fill", + ".spectrum-Search .spectrum-Search-textfield,\n\t.spectrum-Search .spectrum-Search-textfield .spectrum-Search-input", + ".spectrum-Search--quiet", + ".spectrum-Search--quiet .spectrum-Search-clearButton", + ".spectrum-Search--quiet.spectrum-Search", + ".spectrum-Search--quiet.spectrum-Search .spectrum-Search-input", + ".spectrum-Search--sizeL", + ".spectrum-Search--sizeM", + ".spectrum-Search--sizeS", + ".spectrum-Search--sizeXL", + ".spectrum-Search-clearButton", + ".spectrum-Search-clearButton,\n.spectrum-Search-clearButton .spectrum-ClearButton-fill", + ".spectrum-Search-icon", + ".spectrum-Search-input", + ".spectrum-Search-input::-webkit-search-cancel-button,\n.spectrum-Search-input::-webkit-search-decoration", + ".spectrum-Search-textfield", + ".spectrum-Search-textfield.is-disabled .spectrum-Search-icon", + ".spectrum-Search-textfield.is-disabled:hover .spectrum-Search-icon", + ".spectrum-Search-textfield.is-focused .spectrum-Search-icon", + ".spectrum-Search-textfield.is-focused:hover .spectrum-Search-icon", + ".spectrum-Search-textfield.is-keyboardFocused .spectrum-Search-icon", + ".spectrum-Search-textfield:hover .spectrum-Search-icon", + ".spectrum-Search.is-disabled .spectrum-Search-clearButton", + ".spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-icon", + ".spectrum-Search:not(.spectrum-Search--quiet) .spectrum-Search-input" + ], + "mods": [ + "--mod-search-background-color", + "--mod-search-background-color-disabled", + "--mod-search-block-size", + "--mod-search-border-color-default", + "--mod-search-border-color-disabled", + "--mod-search-border-color-focus", + "--mod-search-border-color-focus-hover", + "--mod-search-border-color-hover", + "--mod-search-border-color-key-focus", + "--mod-search-border-radius", + "--mod-search-border-width", + "--mod-search-bottom-to-text", + "--mod-search-button-inline-size", + "--mod-search-color-default", + "--mod-search-color-disabled", + "--mod-search-color-focus", + "--mod-search-color-focus-hover", + "--mod-search-color-hover", + "--mod-search-color-key-focus", + "--mod-search-edge-to-visual", + "--mod-search-focus-indicator-color", + "--mod-search-focus-indicator-gap", + "--mod-search-focus-indicator-thickness", + "--mod-search-font-family", + "--mod-search-font-style", + "--mod-search-font-weight", + "--mod-search-icon-size", + "--mod-search-inline-size", + "--mod-search-line-height", + "--mod-search-min-inline-size", + "--mod-search-quiet-button-offset", + "--mod-search-text-to-icon", + "--mod-search-to-help-text", + "--mod-search-top-to-text", + "--mod-workflow-icon-size-100" + ], + "spectrum": [ + "--spectrum-border-width-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-edge-to-visual-100", + "--spectrum-component-edge-to-visual-200", + "--spectrum-component-edge-to-visual-300", + "--spectrum-component-edge-to-visual-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-pill-edge-to-visual-100", + "--spectrum-component-pill-edge-to-visual-200", + "--spectrum-component-pill-edge-to-visual-300", + "--spectrum-component-pill-edge-to-visual-75", + "--spectrum-component-top-to-text-100", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-disabled-background-color", + "--spectrum-disabled-border-color", + "--spectrum-disabled-content-color", + "--spectrum-field-edge-to-visual-quiet", + "--spectrum-field-width", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-help-text-to-component", + "--spectrum-line-height-100", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-focus", + "--spectrum-neutral-content-color-focus-hover", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-regular-font-weight", + "--spectrum-sans-font-family-stack", + "--spectrum-search-background-color", + "--spectrum-search-background-color-disabled", + "--spectrum-search-block-size", + "--spectrum-search-border-color-default", + "--spectrum-search-border-color-disabled", + "--spectrum-search-border-color-focus", + "--spectrum-search-border-color-focus-hover", + "--spectrum-search-border-color-hover", + "--spectrum-search-border-color-key-focus", + "--spectrum-search-border-radius", + "--spectrum-search-border-width", + "--spectrum-search-bottom-to-text", + "--spectrum-search-button-inline-size", + "--spectrum-search-color", + "--spectrum-search-color-default", + "--spectrum-search-color-disabled", + "--spectrum-search-color-focus", + "--spectrum-search-color-focus-hover", + "--spectrum-search-color-hover", + "--spectrum-search-color-key-focus", + "--spectrum-search-edge-to-visual", + "--spectrum-search-field-minimum-width-multiplier", + "--spectrum-search-focus-indicator-color", + "--spectrum-search-focus-indicator-gap", + "--spectrum-search-focus-indicator-thickness", + "--spectrum-search-font-family", + "--spectrum-search-font-style", + "--spectrum-search-font-weight", + "--spectrum-search-icon-size", + "--spectrum-search-inline-size", + "--spectrum-search-line-height", + "--spectrum-search-min-inline-size", + "--spectrum-search-quiet-button-offset", + "--spectrum-search-text-to-icon", + "--spectrum-search-to-help-text", + "--spectrum-search-top-to-text", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-75", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-75" + ], + "system": [ + "--system-spectrum-search-border-color-default", + "--system-spectrum-search-border-color-focus", + "--system-spectrum-search-border-color-focus-hover", + "--system-spectrum-search-border-color-hover", + "--system-spectrum-search-border-color-key-focus", + "--system-spectrum-search-border-radius", + "--system-spectrum-search-edge-to-visual", + "--system-spectrum-search-sizel-border-radius", + "--system-spectrum-search-sizel-edge-to-visual", + "--system-spectrum-search-sizem-border-radius", + "--system-spectrum-search-sizem-edge-to-visual", + "--system-spectrum-search-sizes-border-radius", + "--system-spectrum-search-sizes-edge-to-visual", + "--system-spectrum-search-sizexl-border-radius", + "--system-spectrum-search-sizexl-edge-to-visual" + ], + "a11y": [ + "--highcontrast-search-color-default", + "--highcontrast-search-color-disabled", + "--highcontrast-search-color-focus", + "--highcontrast-search-color-hover" + ] +} diff --git a/components/search/package.json b/components/search/package.json new file mode 100644 index 0000000000..baae08b8a8 --- /dev/null +++ b/components/search/package.json @@ -0,0 +1,45 @@ +{ + "name": "@spectrum-css/search", + "version": "7.1.2", + "description": "The Spectrum CSS search component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/search", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/search" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/clearbutton": ">=6", + "@spectrum-css/icon": ">=7", + "@spectrum-css/textfield": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/clearbutton": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/textfield": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/search/template.js b/components/search/template.js new file mode 100644 index 0000000000..bdf59a8779 --- /dev/null +++ b/components/search/template.js @@ -0,0 +1,46 @@ +import { Template as ClearButton } from "@spectrum-css/clearbutton/stories/template.js"; +import { Template as TextField } from "@spectrum-css/textfield/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Search", + customClasses = [], + isDisabled = false, + isQuiet = false, + size, +} = {}, context = {}) => { + return html` +
    ({ ...a, [c]: true }), {}), + })} + > + ${TextField({ + isDisabled, + isQuiet, + size, + customClasses: [`${rootClass}-textfield`], + iconName: "Magnify", + type: "search", + placeholder: "Search", + name: "search", + customInputClasses: [`${rootClass}-input`], + customIconClasses: [`${rootClass}-icon`], + autocomplete: false, + }, context)} + ${ClearButton({ + isDisabled, + size, + customClasses: [`${rootClass}-clearButton`], + }, context)} +
    + `; +}; diff --git a/components/search/themes/express.css b/components/search/themes/express.css new file mode 100644 index 0000000000..797a45067d --- /dev/null +++ b/components/search/themes/express.css @@ -0,0 +1,31 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-search-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-400); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: calc(var(--spectrum-component-height-75) / 2); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: calc(var(--spectrum-component-height-100) / 2); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: calc(var(--spectrum-component-height-200) / 2); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: calc(var(--spectrum-component-height-300) / 2); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-pill-edge-to-visual-300); +} +/*# sourceMappingURL=components/search/themes/express.css.map */ diff --git a/components/search/themes/spectrum.css b/components/search/themes/spectrum.css new file mode 100644 index 0000000000..8e130066da --- /dev/null +++ b/components/search/themes/spectrum.css @@ -0,0 +1,31 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-search-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-border-color-default: var(--spectrum-gray-500); + --system-spectrum-search-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-search-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-search-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-search-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-search-sizes-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizes-edge-to-visual: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-search-sizem-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizem-edge-to-visual: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-search-sizel-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizel-edge-to-visual: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-search-sizexl-border-radius: var(--spectrum-corner-radius-100); + --system-spectrum-search-sizexl-edge-to-visual: var(--spectrum-component-edge-to-visual-300); +} +/*# sourceMappingURL=components/search/themes/spectrum.css.map */ diff --git a/components/sidenav/index-base.css b/components/sidenav/index-base.css new file mode 100644 index 0000000000..e6c4a072f9 --- /dev/null +++ b/components/sidenav/index-base.css @@ -0,0 +1,220 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SideNav { + --spectrum-sidenav-focus-ring-size: var(--spectrum-focus-indicator-thickness); + --spectrum-sidenav-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-sidenav-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-sidenav-min-height: var(--spectrum-component-height-100); + --spectrum-sidenav-width: 100%; + --spectrum-sidenav-min-width: var(--spectrum-side-navigation-minimum-width); + --spectrum-sidenav-max-width: var(--spectrum-side-navigation-maximum-width); + --spectrum-sidenav-border-radius: var(--spectrum-corner-radius-100); + --spectrum-sidenav-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-sidenav-icon-spacing: var(--spectrum-text-to-visual-100); + --spectrum-sidenav-inline-padding: var(--spectrum-component-edge-to-text-100); + --spectrum-sidenav-gap: var(--spectrum-side-navigation-item-to-item); + --spectrum-sidenav-top-to-icon: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-sidenav-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-sidenav-bottom-to-label: var(--spectrum-side-navigation-bottom-to-text); + --spectrum-sidenav-start-to-content-second-level: var(--spectrum-side-navigation-second-level-edge-to-text); + --spectrum-sidenav-start-to-content-third-level: var(--spectrum-side-navigation-third-level-edge-to-text); + --spectrum-sidenav-start-to-content-with-icon-second-level: var(--spectrum-side-navigation-with-icon-second-level-edge-to-text); + --spectrum-sidenav-start-to-content-with-icon-third-level: var(--spectrum-side-navigation-with-icon-third-level-edge-to-text); + --spectrum-sidenav-heading-top-margin: var(--spectrum-side-navigation-item-to-header); + --spectrum-sidenav-heading-bottom-margin: var(--spectrum-side-navigation-header-to-item); + --spectrum-sidenav-background-disabled: transparent; + --spectrum-sidenav-background-default: transparent; + --spectrum-sidenav-background-hover: var(--spectrum-gray-200); + --spectrum-sidenav-item-background-down: var(--spectrum-gray-300); + --spectrum-sidenav-background-key-focus: var(--spectrum-gray-200); + --spectrum-sidenav-item-background-default-selected: var(--spectrum-gray-200); + --spectrum-sidenav-background-hover-selected: var(--spectrum-gray-300); + --spectrum-sidenav-item-background-down-selected: var(--spectrum-gray-300); + --spectrum-sidenav-background-key-focus-selected: var(--spectrum-gray-200); + --spectrum-sidenav-header-color: var(--spectrum-gray-600); + --spectrum-sidenav-content-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-sidenav-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-sidenav-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-sidenav-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-sidenav-content-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-sidenav-content-color-default-selected: var(--spectrum-neutral-content-color-default); + --spectrum-sidenav-content-color-hover-selected: var(--spectrum-neutral-content-color-hover); + --spectrum-sidenav-content-color-down-selected: var(--spectrum-neutral-content-color-down); + --spectrum-sidenav-content-color-key-focus-selected: var(--spectrum-neutral-content-color-key-focus); + --spectrum-sidenav-text-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-text-font-weight: var(--spectrum-regular-font-weight); + --spectrum-sidenav-text-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-text-font-size: var(--spectrum-font-size-100); + --spectrum-sidenav-text-line-height: var(--spectrum-line-height-100); + --spectrum-sidenav-top-level-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-top-level-font-weight: var(--spectrum-bold-font-weight); + --spectrum-sidenav-top-level-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-top-level-font-size: var(--spectrum-font-size-100); + --spectrum-sidenav-top-level-line-height: var(--spectrum-line-height-100); + --spectrum-sidenav-header-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-header-font-weight: var(--spectrum-medium-font-weight); + --spectrum-sidenav-header-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-header-font-size: var(--spectrum-font-size-75); + --spectrum-sidenav-header-line-height: var(--spectrum-line-height-100); +} +.spectrum-SideNav:lang(ja), +.spectrum-SideNav:lang(ko), +.spectrum-SideNav:lang(zh) { + --spectrum-sidenav-text-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-sidenav-top-level-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-sidenav-header-line-height: var(--spectrum-cjk-line-height-100); +} +.spectrum-SideNav { + display: flex; + flex-direction: column; + list-style-type: none; + margin: 0; + padding: 0; +} +.spectrum-SideNav-item { + list-style-type: none; + margin-inline: 0; +} +.spectrum-SideNav-item.is-disabled .spectrum-SideNav-itemLink { + background-color: var(--highcontrast-sidenav-background-disabled, var(--mod-sidenav-background-disabled, var(--spectrum-sidenav-background-disabled))); + color: var(--highcontrast-sidenav-content-disabled-color, var(--mod-sidenav-content-disabled-color, var(--spectrum-sidenav-content-disabled-color))); + cursor: default; + pointer-events: none; +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink { + background-color: var(--highcontrast-sidenav-item-background-default-selected, var(--mod-sidenav-item-background-default-selected, var(--spectrum-sidenav-item-background-default-selected))); + color: var(--highcontrast-sidenav-content-color-default-selected, var(--mod-sidenav-content-color-default-selected, var(--spectrum-sidenav-content-color-default-selected))); +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:active { + background-color: var(--highcontrast-sidenav-item-background-down-selected, var(--mod-sidenav-item-background-down-selected, var(--spectrum-sidenav-item-background-down-selected))); + color: var(--mod-sidenav-content-color-down-selected, var(--spectrum-sidenav-content-color-down-selected)); +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink.is-keyboardFocused, +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:focus-visible { + background-color: var(--highcontrast-sidenav-background-key-focus-selected, var(--mod-sidenav-background-key-focus-selected, var(--spectrum-sidenav-background-key-focus-selected))); + color: var(--mod-sidenav-content-color-key-focus-selected, var(--spectrum-sidenav-content-color-key-focus-selected)); +} +.spectrum-SideNav-itemLink { + padding-inline: var(--mod-sidenav-inline-padding, var(--spectrum-sidenav-inline-padding)); + margin-block-end: var(--mod-sidenav-gap, var(--spectrum-sidenav-gap)); + position: relative; + display: inline-flex; + justify-content: start; + box-sizing: border-box; + word-break: break-word; + hyphens: auto; + cursor: pointer; + transition: + background-color var(--spectrum-animation-duration-100) ease-out, + color var(--spectrum-animation-duration-100) ease-out; + border-radius: var(--mod-sidenav-border-radius, var(--spectrum-sidenav-border-radius)); + background-color: var(--highcontrast-sidenav-background-default, var(--mod-sidenav-background-default, var(--spectrum-sidenav-background-default))); + color: var(--highcontrast-sidenav-content-color-default, var(--mod-sidenav-content-color-default, var(--spectrum-sidenav-content-color-default))); + inline-size: var(--mod-sidenav-width, var(--spectrum-sidenav-width)); + min-inline-size: var(--mod-sidenav-min-width, var(--spectrum-sidenav-min-width)); + max-inline-size: var(--mod-sidenav-max-width, var(--spectrum-sidenav-max-width)); + min-block-size: var(--mod-sidenav-min-height, var(--spectrum-sidenav-min-height)); + font-family: var(--mod-sidenav-text-font-family, var(--spectrum-sidenav-text-font-family)); + font-size: var(--mod-sidenav-text-font-size, var(--spectrum-sidenav-text-font-size)); + font-weight: var(--mod-sidenav-text-font-weight, var(--spectrum-sidenav-text-font-weight)); + font-style: var(--mod-sidenav-text-font-style, var(--spectrum-sidenav-text-font-style)); + -webkit-text-decoration: none; + text-decoration: none; + line-height: var(--mod-sidenav-text-line-height, var(--spectrum-sidenav-text-line-height)); +} +.spectrum-SideNav-itemLink .spectrum-SideNav-link-text { + margin-block-start: var(--mod-sidenav-top-to-label, var(--spectrum-sidenav-top-to-label)); + margin-block-end: var(--mod-sidenav-bottom-to-label, var(--spectrum-sidenav-bottom-to-label)); +} +.spectrum-SideNav-itemLink .spectrum-Icon { + inline-size: var(--mod-sidenav-icon-size, var(--spectrum-sidenav-icon-size)); + block-size: var(--mod-sidenav-icon-size, var(--spectrum-sidenav-icon-size)); + margin-inline-end: var(--mod-sidenav-icon-spacing, var(--spectrum-sidenav-icon-spacing)); + margin-block-start: var(--mod-sidenav-top-to-icon, var(--spectrum-sidenav-top-to-icon)); + flex-shrink: 0; +} +@media (hover: hover) { + .spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:hover { + background-color: var(--highcontrast-sidenav-background-hover-selected, var(--mod-sidenav-background-hover-selected, var(--spectrum-sidenav-background-hover-selected))); + color: var(--mod-sidenav-content-color-hover-selected, var(--spectrum-sidenav-content-color-hover-selected)); + } + .spectrum-SideNav-itemLink:hover { + background-color: var(--highcontrast-sidenav-background-hover, var(--mod-sidenav-background-hover, var(--spectrum-sidenav-background-hover))); + color: var(--highcontrast-sidenav-content-color-hover, var(--mod-sidenav-content-color-hover, var(--spectrum-sidenav-content-color-hover))); + } +} +.spectrum-SideNav-itemLink:active { + background-color: var(--highcontrast-sidenav-item-background-down, var(--mod-sidenav-item-background-down, var(--spectrum-sidenav-item-background-down))); + color: var(--highcontrast-sidenav-content-color-down, var(--mod-sidenav-content-color-down, var(--spectrum-sidenav-content-color-down))); +} +.spectrum-SideNav-itemLink.is-keyboardFocused, +.spectrum-SideNav-itemLink:focus-visible { + outline: var(--highcontrast-sidenav-focus-ring-color, var(--mod-sidenav-focus-ring-color, var(--spectrum-sidenav-focus-ring-color))) solid var(--mod-sidenav-focus-ring-size, var(--spectrum-sidenav-focus-ring-size)); + outline-offset: var(--mod-sidenav-focus-ring-gap, var(--spectrum-sidenav-focus-ring-gap)); + background-color: var(--highcontrast-sidenav-background-key-focus, var(--mod-sidenav-background-key-focus, var(--spectrum-sidenav-background-key-focus))); + color: var(--highcontrast-sidenav-content-color-key-focus, var(--mod-sidenav-content-color-key-focus, var(--spectrum-sidenav-content-color-key-focus))); +} +.spectrum-SideNav-heading { + margin-block-start: calc(var(--mod-sidenav-heading-top-margin, var(--spectrum-sidenav-heading-top-margin)) - var(--mod-sidenav-gap, var(--spectrum-sidenav-gap))); + margin-block-end: var(--mod-sidenav-heading-bottom-margin, var(--spectrum-sidenav-heading-bottom-margin)); + padding-inline: var(--mod-sidenav-inline-padding, var(--spectrum-sidenav-inline-padding)); + color: var(--mod-sidenav-header-color, var(--spectrum-sidenav-header-color)); + font-size: var(--mod-sidenav-header-font-size, var(--spectrum-sidenav-header-font-size)); + font-weight: var(--mod-sidenav-header-font-weight, var(--spectrum-sidenav-header-font-weight)); + font-style: var(--mod-sidenav-header-font-style, var(--spectrum-sidenav-header-font-style)); + line-height: var(--mod-sidenav-header-line-height, var(--spectrum-sidenav-header-line-height)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav-itemLink { + font-family: var(--mod-sidenav-top-level-font-family, var(--spectrum-sidenav-top-level-font-family)); + font-weight: var(--mod-sidenav-top-level-font-weight, var(--spectrum-sidenav-top-level-font-weight)); + font-style: var(--mod-sidenav-top-level-font-style, var(--spectrum-sidenav-top-level-font-style)); + font-size: var(--mod-sidenav-top-level-font-size, var(--spectrum-sidenav-top-level-font-size)); + line-height: var(--mod-sidenav-top-level-line-height, var(--spectrum-sidenav-top-level-line-height)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink { + font-weight: var(--mod-sidenav-text-font-weight, var(--spectrum-sidenav-text-font-weight)); + padding-inline-start: var(--mod-sidenav-start-to-content-second-level, var(--spectrum-sidenav-start-to-content-second-level)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-third-level, var(--spectrum-sidenav-start-to-content-third-level)); +} +.spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-with-icon-second-level, var(--spectrum-sidenav-start-to-content-with-icon-second-level)); +} +.spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-with-icon-third-level, var(--spectrum-sidenav-start-to-content-with-icon-third-level)); +} +@media (forced-colors: active) { + .spectrum-SideNav .spectrum-Icon { + forced-color-adjust: preserve-parent-color; + } + .spectrum-SideNav-item { + forced-color-adjust: none; + --highcontrast-sidenav-content-disabled-color: GrayText; + --highcontrast-sidenav-focus-ring-color: Highlight; + --highcontrast-sidenav-content-color-default-selected: SelectedItemText; + --highcontrast-sidenav-item-background-default-selected: SelectedItem; + --highcontrast-sidenav-background-key-focus-selected: Highlight; + --highcontrast-sidenav-background-hover-selected: Highlight; + --highcontrast-sidenav-item-background-down-selected: Highlight; + --highcontrast-sidenav-item-background-down: Highlight; + --highcontrast-sidenav-background-hover: Highlight; + --highcontrast-sidenav-content-color-hover: HighlightText; + --highcontrast-sidenav-background-key-focus: Highlight; + --highcontrast-sidenav-top-level-font-color: ButtonText; + --highcontrast-sidenav-content-color-default: ButtonText; + --highcontrast-sidenav-content-color-down: HighlightText; + } +} +/*# sourceMappingURL=components/sidenav/index.css.map */ diff --git a/components/sidenav/index-vars.css b/components/sidenav/index-vars.css new file mode 100644 index 0000000000..e6c4a072f9 --- /dev/null +++ b/components/sidenav/index-vars.css @@ -0,0 +1,220 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SideNav { + --spectrum-sidenav-focus-ring-size: var(--spectrum-focus-indicator-thickness); + --spectrum-sidenav-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-sidenav-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-sidenav-min-height: var(--spectrum-component-height-100); + --spectrum-sidenav-width: 100%; + --spectrum-sidenav-min-width: var(--spectrum-side-navigation-minimum-width); + --spectrum-sidenav-max-width: var(--spectrum-side-navigation-maximum-width); + --spectrum-sidenav-border-radius: var(--spectrum-corner-radius-100); + --spectrum-sidenav-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-sidenav-icon-spacing: var(--spectrum-text-to-visual-100); + --spectrum-sidenav-inline-padding: var(--spectrum-component-edge-to-text-100); + --spectrum-sidenav-gap: var(--spectrum-side-navigation-item-to-item); + --spectrum-sidenav-top-to-icon: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-sidenav-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-sidenav-bottom-to-label: var(--spectrum-side-navigation-bottom-to-text); + --spectrum-sidenav-start-to-content-second-level: var(--spectrum-side-navigation-second-level-edge-to-text); + --spectrum-sidenav-start-to-content-third-level: var(--spectrum-side-navigation-third-level-edge-to-text); + --spectrum-sidenav-start-to-content-with-icon-second-level: var(--spectrum-side-navigation-with-icon-second-level-edge-to-text); + --spectrum-sidenav-start-to-content-with-icon-third-level: var(--spectrum-side-navigation-with-icon-third-level-edge-to-text); + --spectrum-sidenav-heading-top-margin: var(--spectrum-side-navigation-item-to-header); + --spectrum-sidenav-heading-bottom-margin: var(--spectrum-side-navigation-header-to-item); + --spectrum-sidenav-background-disabled: transparent; + --spectrum-sidenav-background-default: transparent; + --spectrum-sidenav-background-hover: var(--spectrum-gray-200); + --spectrum-sidenav-item-background-down: var(--spectrum-gray-300); + --spectrum-sidenav-background-key-focus: var(--spectrum-gray-200); + --spectrum-sidenav-item-background-default-selected: var(--spectrum-gray-200); + --spectrum-sidenav-background-hover-selected: var(--spectrum-gray-300); + --spectrum-sidenav-item-background-down-selected: var(--spectrum-gray-300); + --spectrum-sidenav-background-key-focus-selected: var(--spectrum-gray-200); + --spectrum-sidenav-header-color: var(--spectrum-gray-600); + --spectrum-sidenav-content-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-sidenav-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-sidenav-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-sidenav-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-sidenav-content-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-sidenav-content-color-default-selected: var(--spectrum-neutral-content-color-default); + --spectrum-sidenav-content-color-hover-selected: var(--spectrum-neutral-content-color-hover); + --spectrum-sidenav-content-color-down-selected: var(--spectrum-neutral-content-color-down); + --spectrum-sidenav-content-color-key-focus-selected: var(--spectrum-neutral-content-color-key-focus); + --spectrum-sidenav-text-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-text-font-weight: var(--spectrum-regular-font-weight); + --spectrum-sidenav-text-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-text-font-size: var(--spectrum-font-size-100); + --spectrum-sidenav-text-line-height: var(--spectrum-line-height-100); + --spectrum-sidenav-top-level-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-top-level-font-weight: var(--spectrum-bold-font-weight); + --spectrum-sidenav-top-level-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-top-level-font-size: var(--spectrum-font-size-100); + --spectrum-sidenav-top-level-line-height: var(--spectrum-line-height-100); + --spectrum-sidenav-header-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-header-font-weight: var(--spectrum-medium-font-weight); + --spectrum-sidenav-header-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-header-font-size: var(--spectrum-font-size-75); + --spectrum-sidenav-header-line-height: var(--spectrum-line-height-100); +} +.spectrum-SideNav:lang(ja), +.spectrum-SideNav:lang(ko), +.spectrum-SideNav:lang(zh) { + --spectrum-sidenav-text-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-sidenav-top-level-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-sidenav-header-line-height: var(--spectrum-cjk-line-height-100); +} +.spectrum-SideNav { + display: flex; + flex-direction: column; + list-style-type: none; + margin: 0; + padding: 0; +} +.spectrum-SideNav-item { + list-style-type: none; + margin-inline: 0; +} +.spectrum-SideNav-item.is-disabled .spectrum-SideNav-itemLink { + background-color: var(--highcontrast-sidenav-background-disabled, var(--mod-sidenav-background-disabled, var(--spectrum-sidenav-background-disabled))); + color: var(--highcontrast-sidenav-content-disabled-color, var(--mod-sidenav-content-disabled-color, var(--spectrum-sidenav-content-disabled-color))); + cursor: default; + pointer-events: none; +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink { + background-color: var(--highcontrast-sidenav-item-background-default-selected, var(--mod-sidenav-item-background-default-selected, var(--spectrum-sidenav-item-background-default-selected))); + color: var(--highcontrast-sidenav-content-color-default-selected, var(--mod-sidenav-content-color-default-selected, var(--spectrum-sidenav-content-color-default-selected))); +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:active { + background-color: var(--highcontrast-sidenav-item-background-down-selected, var(--mod-sidenav-item-background-down-selected, var(--spectrum-sidenav-item-background-down-selected))); + color: var(--mod-sidenav-content-color-down-selected, var(--spectrum-sidenav-content-color-down-selected)); +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink.is-keyboardFocused, +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:focus-visible { + background-color: var(--highcontrast-sidenav-background-key-focus-selected, var(--mod-sidenav-background-key-focus-selected, var(--spectrum-sidenav-background-key-focus-selected))); + color: var(--mod-sidenav-content-color-key-focus-selected, var(--spectrum-sidenav-content-color-key-focus-selected)); +} +.spectrum-SideNav-itemLink { + padding-inline: var(--mod-sidenav-inline-padding, var(--spectrum-sidenav-inline-padding)); + margin-block-end: var(--mod-sidenav-gap, var(--spectrum-sidenav-gap)); + position: relative; + display: inline-flex; + justify-content: start; + box-sizing: border-box; + word-break: break-word; + hyphens: auto; + cursor: pointer; + transition: + background-color var(--spectrum-animation-duration-100) ease-out, + color var(--spectrum-animation-duration-100) ease-out; + border-radius: var(--mod-sidenav-border-radius, var(--spectrum-sidenav-border-radius)); + background-color: var(--highcontrast-sidenav-background-default, var(--mod-sidenav-background-default, var(--spectrum-sidenav-background-default))); + color: var(--highcontrast-sidenav-content-color-default, var(--mod-sidenav-content-color-default, var(--spectrum-sidenav-content-color-default))); + inline-size: var(--mod-sidenav-width, var(--spectrum-sidenav-width)); + min-inline-size: var(--mod-sidenav-min-width, var(--spectrum-sidenav-min-width)); + max-inline-size: var(--mod-sidenav-max-width, var(--spectrum-sidenav-max-width)); + min-block-size: var(--mod-sidenav-min-height, var(--spectrum-sidenav-min-height)); + font-family: var(--mod-sidenav-text-font-family, var(--spectrum-sidenav-text-font-family)); + font-size: var(--mod-sidenav-text-font-size, var(--spectrum-sidenav-text-font-size)); + font-weight: var(--mod-sidenav-text-font-weight, var(--spectrum-sidenav-text-font-weight)); + font-style: var(--mod-sidenav-text-font-style, var(--spectrum-sidenav-text-font-style)); + -webkit-text-decoration: none; + text-decoration: none; + line-height: var(--mod-sidenav-text-line-height, var(--spectrum-sidenav-text-line-height)); +} +.spectrum-SideNav-itemLink .spectrum-SideNav-link-text { + margin-block-start: var(--mod-sidenav-top-to-label, var(--spectrum-sidenav-top-to-label)); + margin-block-end: var(--mod-sidenav-bottom-to-label, var(--spectrum-sidenav-bottom-to-label)); +} +.spectrum-SideNav-itemLink .spectrum-Icon { + inline-size: var(--mod-sidenav-icon-size, var(--spectrum-sidenav-icon-size)); + block-size: var(--mod-sidenav-icon-size, var(--spectrum-sidenav-icon-size)); + margin-inline-end: var(--mod-sidenav-icon-spacing, var(--spectrum-sidenav-icon-spacing)); + margin-block-start: var(--mod-sidenav-top-to-icon, var(--spectrum-sidenav-top-to-icon)); + flex-shrink: 0; +} +@media (hover: hover) { + .spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:hover { + background-color: var(--highcontrast-sidenav-background-hover-selected, var(--mod-sidenav-background-hover-selected, var(--spectrum-sidenav-background-hover-selected))); + color: var(--mod-sidenav-content-color-hover-selected, var(--spectrum-sidenav-content-color-hover-selected)); + } + .spectrum-SideNav-itemLink:hover { + background-color: var(--highcontrast-sidenav-background-hover, var(--mod-sidenav-background-hover, var(--spectrum-sidenav-background-hover))); + color: var(--highcontrast-sidenav-content-color-hover, var(--mod-sidenav-content-color-hover, var(--spectrum-sidenav-content-color-hover))); + } +} +.spectrum-SideNav-itemLink:active { + background-color: var(--highcontrast-sidenav-item-background-down, var(--mod-sidenav-item-background-down, var(--spectrum-sidenav-item-background-down))); + color: var(--highcontrast-sidenav-content-color-down, var(--mod-sidenav-content-color-down, var(--spectrum-sidenav-content-color-down))); +} +.spectrum-SideNav-itemLink.is-keyboardFocused, +.spectrum-SideNav-itemLink:focus-visible { + outline: var(--highcontrast-sidenav-focus-ring-color, var(--mod-sidenav-focus-ring-color, var(--spectrum-sidenav-focus-ring-color))) solid var(--mod-sidenav-focus-ring-size, var(--spectrum-sidenav-focus-ring-size)); + outline-offset: var(--mod-sidenav-focus-ring-gap, var(--spectrum-sidenav-focus-ring-gap)); + background-color: var(--highcontrast-sidenav-background-key-focus, var(--mod-sidenav-background-key-focus, var(--spectrum-sidenav-background-key-focus))); + color: var(--highcontrast-sidenav-content-color-key-focus, var(--mod-sidenav-content-color-key-focus, var(--spectrum-sidenav-content-color-key-focus))); +} +.spectrum-SideNav-heading { + margin-block-start: calc(var(--mod-sidenav-heading-top-margin, var(--spectrum-sidenav-heading-top-margin)) - var(--mod-sidenav-gap, var(--spectrum-sidenav-gap))); + margin-block-end: var(--mod-sidenav-heading-bottom-margin, var(--spectrum-sidenav-heading-bottom-margin)); + padding-inline: var(--mod-sidenav-inline-padding, var(--spectrum-sidenav-inline-padding)); + color: var(--mod-sidenav-header-color, var(--spectrum-sidenav-header-color)); + font-size: var(--mod-sidenav-header-font-size, var(--spectrum-sidenav-header-font-size)); + font-weight: var(--mod-sidenav-header-font-weight, var(--spectrum-sidenav-header-font-weight)); + font-style: var(--mod-sidenav-header-font-style, var(--spectrum-sidenav-header-font-style)); + line-height: var(--mod-sidenav-header-line-height, var(--spectrum-sidenav-header-line-height)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav-itemLink { + font-family: var(--mod-sidenav-top-level-font-family, var(--spectrum-sidenav-top-level-font-family)); + font-weight: var(--mod-sidenav-top-level-font-weight, var(--spectrum-sidenav-top-level-font-weight)); + font-style: var(--mod-sidenav-top-level-font-style, var(--spectrum-sidenav-top-level-font-style)); + font-size: var(--mod-sidenav-top-level-font-size, var(--spectrum-sidenav-top-level-font-size)); + line-height: var(--mod-sidenav-top-level-line-height, var(--spectrum-sidenav-top-level-line-height)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink { + font-weight: var(--mod-sidenav-text-font-weight, var(--spectrum-sidenav-text-font-weight)); + padding-inline-start: var(--mod-sidenav-start-to-content-second-level, var(--spectrum-sidenav-start-to-content-second-level)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-third-level, var(--spectrum-sidenav-start-to-content-third-level)); +} +.spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-with-icon-second-level, var(--spectrum-sidenav-start-to-content-with-icon-second-level)); +} +.spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-with-icon-third-level, var(--spectrum-sidenav-start-to-content-with-icon-third-level)); +} +@media (forced-colors: active) { + .spectrum-SideNav .spectrum-Icon { + forced-color-adjust: preserve-parent-color; + } + .spectrum-SideNav-item { + forced-color-adjust: none; + --highcontrast-sidenav-content-disabled-color: GrayText; + --highcontrast-sidenav-focus-ring-color: Highlight; + --highcontrast-sidenav-content-color-default-selected: SelectedItemText; + --highcontrast-sidenav-item-background-default-selected: SelectedItem; + --highcontrast-sidenav-background-key-focus-selected: Highlight; + --highcontrast-sidenav-background-hover-selected: Highlight; + --highcontrast-sidenav-item-background-down-selected: Highlight; + --highcontrast-sidenav-item-background-down: Highlight; + --highcontrast-sidenav-background-hover: Highlight; + --highcontrast-sidenav-content-color-hover: HighlightText; + --highcontrast-sidenav-background-key-focus: Highlight; + --highcontrast-sidenav-top-level-font-color: ButtonText; + --highcontrast-sidenav-content-color-default: ButtonText; + --highcontrast-sidenav-content-color-down: HighlightText; + } +} +/*# sourceMappingURL=components/sidenav/index.css.map */ diff --git a/components/sidenav/index.css b/components/sidenav/index.css new file mode 100644 index 0000000000..e6c4a072f9 --- /dev/null +++ b/components/sidenav/index.css @@ -0,0 +1,220 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SideNav { + --spectrum-sidenav-focus-ring-size: var(--spectrum-focus-indicator-thickness); + --spectrum-sidenav-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-sidenav-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-sidenav-min-height: var(--spectrum-component-height-100); + --spectrum-sidenav-width: 100%; + --spectrum-sidenav-min-width: var(--spectrum-side-navigation-minimum-width); + --spectrum-sidenav-max-width: var(--spectrum-side-navigation-maximum-width); + --spectrum-sidenav-border-radius: var(--spectrum-corner-radius-100); + --spectrum-sidenav-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-sidenav-icon-spacing: var(--spectrum-text-to-visual-100); + --spectrum-sidenav-inline-padding: var(--spectrum-component-edge-to-text-100); + --spectrum-sidenav-gap: var(--spectrum-side-navigation-item-to-item); + --spectrum-sidenav-top-to-icon: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-sidenav-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-sidenav-bottom-to-label: var(--spectrum-side-navigation-bottom-to-text); + --spectrum-sidenav-start-to-content-second-level: var(--spectrum-side-navigation-second-level-edge-to-text); + --spectrum-sidenav-start-to-content-third-level: var(--spectrum-side-navigation-third-level-edge-to-text); + --spectrum-sidenav-start-to-content-with-icon-second-level: var(--spectrum-side-navigation-with-icon-second-level-edge-to-text); + --spectrum-sidenav-start-to-content-with-icon-third-level: var(--spectrum-side-navigation-with-icon-third-level-edge-to-text); + --spectrum-sidenav-heading-top-margin: var(--spectrum-side-navigation-item-to-header); + --spectrum-sidenav-heading-bottom-margin: var(--spectrum-side-navigation-header-to-item); + --spectrum-sidenav-background-disabled: transparent; + --spectrum-sidenav-background-default: transparent; + --spectrum-sidenav-background-hover: var(--spectrum-gray-200); + --spectrum-sidenav-item-background-down: var(--spectrum-gray-300); + --spectrum-sidenav-background-key-focus: var(--spectrum-gray-200); + --spectrum-sidenav-item-background-default-selected: var(--spectrum-gray-200); + --spectrum-sidenav-background-hover-selected: var(--spectrum-gray-300); + --spectrum-sidenav-item-background-down-selected: var(--spectrum-gray-300); + --spectrum-sidenav-background-key-focus-selected: var(--spectrum-gray-200); + --spectrum-sidenav-header-color: var(--spectrum-gray-600); + --spectrum-sidenav-content-disabled-color: var(--spectrum-disabled-content-color); + --spectrum-sidenav-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-sidenav-content-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-sidenav-content-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-sidenav-content-color-key-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-sidenav-content-color-default-selected: var(--spectrum-neutral-content-color-default); + --spectrum-sidenav-content-color-hover-selected: var(--spectrum-neutral-content-color-hover); + --spectrum-sidenav-content-color-down-selected: var(--spectrum-neutral-content-color-down); + --spectrum-sidenav-content-color-key-focus-selected: var(--spectrum-neutral-content-color-key-focus); + --spectrum-sidenav-text-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-text-font-weight: var(--spectrum-regular-font-weight); + --spectrum-sidenav-text-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-text-font-size: var(--spectrum-font-size-100); + --spectrum-sidenav-text-line-height: var(--spectrum-line-height-100); + --spectrum-sidenav-top-level-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-top-level-font-weight: var(--spectrum-bold-font-weight); + --spectrum-sidenav-top-level-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-top-level-font-size: var(--spectrum-font-size-100); + --spectrum-sidenav-top-level-line-height: var(--spectrum-line-height-100); + --spectrum-sidenav-header-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-sidenav-header-font-weight: var(--spectrum-medium-font-weight); + --spectrum-sidenav-header-font-style: var(--spectrum-default-font-style); + --spectrum-sidenav-header-font-size: var(--spectrum-font-size-75); + --spectrum-sidenav-header-line-height: var(--spectrum-line-height-100); +} +.spectrum-SideNav:lang(ja), +.spectrum-SideNav:lang(ko), +.spectrum-SideNav:lang(zh) { + --spectrum-sidenav-text-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-sidenav-top-level-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-sidenav-header-line-height: var(--spectrum-cjk-line-height-100); +} +.spectrum-SideNav { + display: flex; + flex-direction: column; + list-style-type: none; + margin: 0; + padding: 0; +} +.spectrum-SideNav-item { + list-style-type: none; + margin-inline: 0; +} +.spectrum-SideNav-item.is-disabled .spectrum-SideNav-itemLink { + background-color: var(--highcontrast-sidenav-background-disabled, var(--mod-sidenav-background-disabled, var(--spectrum-sidenav-background-disabled))); + color: var(--highcontrast-sidenav-content-disabled-color, var(--mod-sidenav-content-disabled-color, var(--spectrum-sidenav-content-disabled-color))); + cursor: default; + pointer-events: none; +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink { + background-color: var(--highcontrast-sidenav-item-background-default-selected, var(--mod-sidenav-item-background-default-selected, var(--spectrum-sidenav-item-background-default-selected))); + color: var(--highcontrast-sidenav-content-color-default-selected, var(--mod-sidenav-content-color-default-selected, var(--spectrum-sidenav-content-color-default-selected))); +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:active { + background-color: var(--highcontrast-sidenav-item-background-down-selected, var(--mod-sidenav-item-background-down-selected, var(--spectrum-sidenav-item-background-down-selected))); + color: var(--mod-sidenav-content-color-down-selected, var(--spectrum-sidenav-content-color-down-selected)); +} +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink.is-keyboardFocused, +.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:focus-visible { + background-color: var(--highcontrast-sidenav-background-key-focus-selected, var(--mod-sidenav-background-key-focus-selected, var(--spectrum-sidenav-background-key-focus-selected))); + color: var(--mod-sidenav-content-color-key-focus-selected, var(--spectrum-sidenav-content-color-key-focus-selected)); +} +.spectrum-SideNav-itemLink { + padding-inline: var(--mod-sidenav-inline-padding, var(--spectrum-sidenav-inline-padding)); + margin-block-end: var(--mod-sidenav-gap, var(--spectrum-sidenav-gap)); + position: relative; + display: inline-flex; + justify-content: start; + box-sizing: border-box; + word-break: break-word; + hyphens: auto; + cursor: pointer; + transition: + background-color var(--spectrum-animation-duration-100) ease-out, + color var(--spectrum-animation-duration-100) ease-out; + border-radius: var(--mod-sidenav-border-radius, var(--spectrum-sidenav-border-radius)); + background-color: var(--highcontrast-sidenav-background-default, var(--mod-sidenav-background-default, var(--spectrum-sidenav-background-default))); + color: var(--highcontrast-sidenav-content-color-default, var(--mod-sidenav-content-color-default, var(--spectrum-sidenav-content-color-default))); + inline-size: var(--mod-sidenav-width, var(--spectrum-sidenav-width)); + min-inline-size: var(--mod-sidenav-min-width, var(--spectrum-sidenav-min-width)); + max-inline-size: var(--mod-sidenav-max-width, var(--spectrum-sidenav-max-width)); + min-block-size: var(--mod-sidenav-min-height, var(--spectrum-sidenav-min-height)); + font-family: var(--mod-sidenav-text-font-family, var(--spectrum-sidenav-text-font-family)); + font-size: var(--mod-sidenav-text-font-size, var(--spectrum-sidenav-text-font-size)); + font-weight: var(--mod-sidenav-text-font-weight, var(--spectrum-sidenav-text-font-weight)); + font-style: var(--mod-sidenav-text-font-style, var(--spectrum-sidenav-text-font-style)); + -webkit-text-decoration: none; + text-decoration: none; + line-height: var(--mod-sidenav-text-line-height, var(--spectrum-sidenav-text-line-height)); +} +.spectrum-SideNav-itemLink .spectrum-SideNav-link-text { + margin-block-start: var(--mod-sidenav-top-to-label, var(--spectrum-sidenav-top-to-label)); + margin-block-end: var(--mod-sidenav-bottom-to-label, var(--spectrum-sidenav-bottom-to-label)); +} +.spectrum-SideNav-itemLink .spectrum-Icon { + inline-size: var(--mod-sidenav-icon-size, var(--spectrum-sidenav-icon-size)); + block-size: var(--mod-sidenav-icon-size, var(--spectrum-sidenav-icon-size)); + margin-inline-end: var(--mod-sidenav-icon-spacing, var(--spectrum-sidenav-icon-spacing)); + margin-block-start: var(--mod-sidenav-top-to-icon, var(--spectrum-sidenav-top-to-icon)); + flex-shrink: 0; +} +@media (hover: hover) { + .spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:hover { + background-color: var(--highcontrast-sidenav-background-hover-selected, var(--mod-sidenav-background-hover-selected, var(--spectrum-sidenav-background-hover-selected))); + color: var(--mod-sidenav-content-color-hover-selected, var(--spectrum-sidenav-content-color-hover-selected)); + } + .spectrum-SideNav-itemLink:hover { + background-color: var(--highcontrast-sidenav-background-hover, var(--mod-sidenav-background-hover, var(--spectrum-sidenav-background-hover))); + color: var(--highcontrast-sidenav-content-color-hover, var(--mod-sidenav-content-color-hover, var(--spectrum-sidenav-content-color-hover))); + } +} +.spectrum-SideNav-itemLink:active { + background-color: var(--highcontrast-sidenav-item-background-down, var(--mod-sidenav-item-background-down, var(--spectrum-sidenav-item-background-down))); + color: var(--highcontrast-sidenav-content-color-down, var(--mod-sidenav-content-color-down, var(--spectrum-sidenav-content-color-down))); +} +.spectrum-SideNav-itemLink.is-keyboardFocused, +.spectrum-SideNav-itemLink:focus-visible { + outline: var(--highcontrast-sidenav-focus-ring-color, var(--mod-sidenav-focus-ring-color, var(--spectrum-sidenav-focus-ring-color))) solid var(--mod-sidenav-focus-ring-size, var(--spectrum-sidenav-focus-ring-size)); + outline-offset: var(--mod-sidenav-focus-ring-gap, var(--spectrum-sidenav-focus-ring-gap)); + background-color: var(--highcontrast-sidenav-background-key-focus, var(--mod-sidenav-background-key-focus, var(--spectrum-sidenav-background-key-focus))); + color: var(--highcontrast-sidenav-content-color-key-focus, var(--mod-sidenav-content-color-key-focus, var(--spectrum-sidenav-content-color-key-focus))); +} +.spectrum-SideNav-heading { + margin-block-start: calc(var(--mod-sidenav-heading-top-margin, var(--spectrum-sidenav-heading-top-margin)) - var(--mod-sidenav-gap, var(--spectrum-sidenav-gap))); + margin-block-end: var(--mod-sidenav-heading-bottom-margin, var(--spectrum-sidenav-heading-bottom-margin)); + padding-inline: var(--mod-sidenav-inline-padding, var(--spectrum-sidenav-inline-padding)); + color: var(--mod-sidenav-header-color, var(--spectrum-sidenav-header-color)); + font-size: var(--mod-sidenav-header-font-size, var(--spectrum-sidenav-header-font-size)); + font-weight: var(--mod-sidenav-header-font-weight, var(--spectrum-sidenav-header-font-weight)); + font-style: var(--mod-sidenav-header-font-style, var(--spectrum-sidenav-header-font-style)); + line-height: var(--mod-sidenav-header-line-height, var(--spectrum-sidenav-header-line-height)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav-itemLink { + font-family: var(--mod-sidenav-top-level-font-family, var(--spectrum-sidenav-top-level-font-family)); + font-weight: var(--mod-sidenav-top-level-font-weight, var(--spectrum-sidenav-top-level-font-weight)); + font-style: var(--mod-sidenav-top-level-font-style, var(--spectrum-sidenav-top-level-font-style)); + font-size: var(--mod-sidenav-top-level-font-size, var(--spectrum-sidenav-top-level-font-size)); + line-height: var(--mod-sidenav-top-level-line-height, var(--spectrum-sidenav-top-level-line-height)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink { + font-weight: var(--mod-sidenav-text-font-weight, var(--spectrum-sidenav-text-font-weight)); + padding-inline-start: var(--mod-sidenav-start-to-content-second-level, var(--spectrum-sidenav-start-to-content-second-level)); +} +.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-third-level, var(--spectrum-sidenav-start-to-content-third-level)); +} +.spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-with-icon-second-level, var(--spectrum-sidenav-start-to-content-with-icon-second-level)); +} +.spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink { + padding-inline-start: var(--mod-sidenav-start-to-content-with-icon-third-level, var(--spectrum-sidenav-start-to-content-with-icon-third-level)); +} +@media (forced-colors: active) { + .spectrum-SideNav .spectrum-Icon { + forced-color-adjust: preserve-parent-color; + } + .spectrum-SideNav-item { + forced-color-adjust: none; + --highcontrast-sidenav-content-disabled-color: GrayText; + --highcontrast-sidenav-focus-ring-color: Highlight; + --highcontrast-sidenav-content-color-default-selected: SelectedItemText; + --highcontrast-sidenav-item-background-default-selected: SelectedItem; + --highcontrast-sidenav-background-key-focus-selected: Highlight; + --highcontrast-sidenav-background-hover-selected: Highlight; + --highcontrast-sidenav-item-background-down-selected: Highlight; + --highcontrast-sidenav-item-background-down: Highlight; + --highcontrast-sidenav-background-hover: Highlight; + --highcontrast-sidenav-content-color-hover: HighlightText; + --highcontrast-sidenav-background-key-focus: Highlight; + --highcontrast-sidenav-top-level-font-color: ButtonText; + --highcontrast-sidenav-content-color-default: ButtonText; + --highcontrast-sidenav-content-color-down: HighlightText; + } +} +/*# sourceMappingURL=components/sidenav/index.css.map */ diff --git a/components/sidenav/metadata.json b/components/sidenav/metadata.json new file mode 100644 index 0000000000..c1507d6264 --- /dev/null +++ b/components/sidenav/metadata.json @@ -0,0 +1,194 @@ +{ + "selectors": [ + ".spectrum-SideNav", + ".spectrum-SideNav .spectrum-Icon", + ".spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink", + ".spectrum-SideNav--hasIcon.spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink", + ".spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav .spectrum-SideNav-itemLink", + ".spectrum-SideNav--multiLevel .spectrum-SideNav .spectrum-SideNav-itemLink", + ".spectrum-SideNav--multiLevel .spectrum-SideNav-itemLink", + ".spectrum-SideNav-heading", + ".spectrum-SideNav-item", + ".spectrum-SideNav-item.is-disabled .spectrum-SideNav-itemLink", + ".spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink", + ".spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink.is-keyboardFocused,\n.spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:focus-visible", + ".spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:active", + ".spectrum-SideNav-item.is-selected .spectrum-SideNav-itemLink:hover", + ".spectrum-SideNav-itemLink", + ".spectrum-SideNav-itemLink .spectrum-Icon", + ".spectrum-SideNav-itemLink .spectrum-SideNav-link-text", + ".spectrum-SideNav-itemLink.is-keyboardFocused,\n.spectrum-SideNav-itemLink:focus-visible", + ".spectrum-SideNav-itemLink:active", + ".spectrum-SideNav-itemLink:hover", + ".spectrum-SideNav:lang(ja),\n.spectrum-SideNav:lang(ko),\n.spectrum-SideNav:lang(zh)" + ], + "mods": [ + "--mod-sidenav-background-default", + "--mod-sidenav-background-disabled", + "--mod-sidenav-background-hover", + "--mod-sidenav-background-hover-selected", + "--mod-sidenav-background-key-focus", + "--mod-sidenav-background-key-focus-selected", + "--mod-sidenav-border-radius", + "--mod-sidenav-bottom-to-label", + "--mod-sidenav-content-color-default", + "--mod-sidenav-content-color-default-selected", + "--mod-sidenav-content-color-down", + "--mod-sidenav-content-color-down-selected", + "--mod-sidenav-content-color-hover", + "--mod-sidenav-content-color-hover-selected", + "--mod-sidenav-content-color-key-focus", + "--mod-sidenav-content-color-key-focus-selected", + "--mod-sidenav-content-disabled-color", + "--mod-sidenav-focus-ring-color", + "--mod-sidenav-focus-ring-gap", + "--mod-sidenav-focus-ring-size", + "--mod-sidenav-gap", + "--mod-sidenav-header-color", + "--mod-sidenav-header-font-size", + "--mod-sidenav-header-font-style", + "--mod-sidenav-header-font-weight", + "--mod-sidenav-header-line-height", + "--mod-sidenav-heading-bottom-margin", + "--mod-sidenav-heading-top-margin", + "--mod-sidenav-icon-size", + "--mod-sidenav-icon-spacing", + "--mod-sidenav-inline-padding", + "--mod-sidenav-item-background-default-selected", + "--mod-sidenav-item-background-down", + "--mod-sidenav-item-background-down-selected", + "--mod-sidenav-max-width", + "--mod-sidenav-min-height", + "--mod-sidenav-min-width", + "--mod-sidenav-start-to-content-second-level", + "--mod-sidenav-start-to-content-third-level", + "--mod-sidenav-start-to-content-with-icon-second-level", + "--mod-sidenav-start-to-content-with-icon-third-level", + "--mod-sidenav-text-font-family", + "--mod-sidenav-text-font-size", + "--mod-sidenav-text-font-style", + "--mod-sidenav-text-font-weight", + "--mod-sidenav-text-line-height", + "--mod-sidenav-top-level-font-family", + "--mod-sidenav-top-level-font-size", + "--mod-sidenav-top-level-font-style", + "--mod-sidenav-top-level-font-weight", + "--mod-sidenav-top-level-line-height", + "--mod-sidenav-top-to-icon", + "--mod-sidenav-top-to-label", + "--mod-sidenav-width" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-bold-font-weight", + "--spectrum-cjk-line-height-100", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-height-100", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-workflow-icon-100", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-75", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-600", + "--spectrum-line-height-100", + "--spectrum-medium-font-weight", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-regular-font-weight", + "--spectrum-sans-font-family-stack", + "--spectrum-side-navigation-bottom-to-text", + "--spectrum-side-navigation-header-to-item", + "--spectrum-side-navigation-item-to-header", + "--spectrum-side-navigation-item-to-item", + "--spectrum-side-navigation-maximum-width", + "--spectrum-side-navigation-minimum-width", + "--spectrum-side-navigation-second-level-edge-to-text", + "--spectrum-side-navigation-third-level-edge-to-text", + "--spectrum-side-navigation-with-icon-second-level-edge-to-text", + "--spectrum-side-navigation-with-icon-third-level-edge-to-text", + "--spectrum-sidenav-background-default", + "--spectrum-sidenav-background-disabled", + "--spectrum-sidenav-background-hover", + "--spectrum-sidenav-background-hover-selected", + "--spectrum-sidenav-background-key-focus", + "--spectrum-sidenav-background-key-focus-selected", + "--spectrum-sidenav-border-radius", + "--spectrum-sidenav-bottom-to-label", + "--spectrum-sidenav-content-color-default", + "--spectrum-sidenav-content-color-default-selected", + "--spectrum-sidenav-content-color-down", + "--spectrum-sidenav-content-color-down-selected", + "--spectrum-sidenav-content-color-hover", + "--spectrum-sidenav-content-color-hover-selected", + "--spectrum-sidenav-content-color-key-focus", + "--spectrum-sidenav-content-color-key-focus-selected", + "--spectrum-sidenav-content-disabled-color", + "--spectrum-sidenav-focus-ring-color", + "--spectrum-sidenav-focus-ring-gap", + "--spectrum-sidenav-focus-ring-size", + "--spectrum-sidenav-gap", + "--spectrum-sidenav-header-color", + "--spectrum-sidenav-header-font-size", + "--spectrum-sidenav-header-font-style", + "--spectrum-sidenav-header-font-weight", + "--spectrum-sidenav-header-line-height", + "--spectrum-sidenav-heading-bottom-margin", + "--spectrum-sidenav-heading-top-margin", + "--spectrum-sidenav-icon-size", + "--spectrum-sidenav-icon-spacing", + "--spectrum-sidenav-inline-padding", + "--spectrum-sidenav-item-background-default-selected", + "--spectrum-sidenav-item-background-down", + "--spectrum-sidenav-item-background-down-selected", + "--spectrum-sidenav-max-width", + "--spectrum-sidenav-min-height", + "--spectrum-sidenav-min-width", + "--spectrum-sidenav-start-to-content-second-level", + "--spectrum-sidenav-start-to-content-third-level", + "--spectrum-sidenav-start-to-content-with-icon-second-level", + "--spectrum-sidenav-start-to-content-with-icon-third-level", + "--spectrum-sidenav-text-font-family", + "--spectrum-sidenav-text-font-size", + "--spectrum-sidenav-text-font-style", + "--spectrum-sidenav-text-font-weight", + "--spectrum-sidenav-text-line-height", + "--spectrum-sidenav-top-level-font-family", + "--spectrum-sidenav-top-level-font-size", + "--spectrum-sidenav-top-level-font-style", + "--spectrum-sidenav-top-level-font-weight", + "--spectrum-sidenav-top-level-line-height", + "--spectrum-sidenav-top-to-icon", + "--spectrum-sidenav-top-to-label", + "--spectrum-sidenav-width", + "--spectrum-text-to-visual-100", + "--spectrum-workflow-icon-size-100" + ], + "system": [], + "a11y": [ + "--highcontrast-sidenav-background-default", + "--highcontrast-sidenav-background-disabled", + "--highcontrast-sidenav-background-hover", + "--highcontrast-sidenav-background-hover-selected", + "--highcontrast-sidenav-background-key-focus", + "--highcontrast-sidenav-background-key-focus-selected", + "--highcontrast-sidenav-content-color-default", + "--highcontrast-sidenav-content-color-default-selected", + "--highcontrast-sidenav-content-color-down", + "--highcontrast-sidenav-content-color-hover", + "--highcontrast-sidenav-content-color-key-focus", + "--highcontrast-sidenav-content-disabled-color", + "--highcontrast-sidenav-focus-ring-color", + "--highcontrast-sidenav-item-background-default-selected", + "--highcontrast-sidenav-item-background-down", + "--highcontrast-sidenav-item-background-down-selected" + ] +} diff --git a/components/sidenav/package.json b/components/sidenav/package.json new file mode 100644 index 0000000000..19778ebd19 --- /dev/null +++ b/components/sidenav/package.json @@ -0,0 +1,46 @@ +{ + "name": "@spectrum-css/sidenav", + "version": "5.1.1", + "description": "The Spectrum CSS sidenav component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/sidenav", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/sidenav" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/sidenav/template.js b/components/sidenav/template.js new file mode 100644 index 0000000000..3a45a88417 --- /dev/null +++ b/components/sidenav/template.js @@ -0,0 +1,118 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-SideNav", + customClasses = [], + variant, + hasIcon, + iconName, + items = [], +}, context) => html` + +`; + +export const SideNavItem = ({ + rootClass = "spectrum-SideNav", + variant, + levelThreeItems, + link, + title, + isSelected, + isDisabled, + id, + hasIcon, + iconName, + customClasses = [], +} = {}, context = {}) => { + return html` +
  • ({ ...a, [c]: true }), {}), + })} + > + + ${when(!hasIcon & variant !== "multiLevel", () => Icon({ iconName }, context))} + + ${title} + + + ${when(levelThreeItems, () => html` +
      + ${repeat(levelThreeItems, (item) => item.id, (item) => SideNavItem(item, context))} +
    ` + )} +
  • + `; +}; diff --git a/components/site/index-base.css b/components/site/index-base.css new file mode 100644 index 0000000000..e55a68cb2c --- /dev/null +++ b/components/site/index-base.css @@ -0,0 +1,533 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Site { + display: flex; + flex-direction: column; + block-size: 100%; + color: var(--spectrum-body-color); + background-color: var(--spectrum-gray-50); +} +.spectrum-Site-content { + display: flex; + flex-direction: row; + inline-size: 100vw; + block-size: 100vh; +} +.spectrum-Site-header { + display: none; + box-sizing: border-box; + block-size: var(--spectrum-component-height-300); + padding: var(--spectrum-component-to-menu-extra-large); + border-block-end-color: var(--spectrum-gray-300); + border-block-end-style: solid; + border-block-end-width: var(--spectrum-divider-thickness-small); +} +.spectrum-Site-header .spectrum-Site-sideBarHeader { + padding-block: 0; +} +.spectrum-Site-header, +.spectrum-Site-mainContent, +.spectrum-Site-sideBar { + color: var(--spectrum-body-color); + background-color: var(--spectrum-gray-75); +} +.spectrum-Site-sideBar { + display: flex; + flex-direction: column; + flex-grow: 0; + max-inline-size: 100%; + transition: none; +} +.spectrum-Site-sideBarHeader { + display: flex; + flex-direction: row; + flex-grow: 0; + flex-shrink: 0; + align-items: center; + padding: var(--spectrum-spacing-400); + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Site-sideBarHeader:focus { + outline: none; +} +.spectrum-Site-sideBarHeader:focus h2 { + -webkit-text-decoration: underline; + text-decoration: underline; +} +.spectrum-Site-search { + padding: var(--spectrum-spacing-300); + padding-block-start: 0; +} +.spectrum-Site-searchResults { + position: absolute; + z-index: 5; + inset-block-start: -100%; + inset-inline-start: -100%; + overflow-y: auto; + max-block-size: calc(90vh - 120px); +} +.spectrum-Site-noSearchResults { + padding: var(--spectrum-spacing-400); +} +.spectrum-Site-logo { + --spectrum-icon-size: 32px; + --mod-icon-color: #fa0f00; + margin-inline-end: var(--spectrum-spacing-200); +} +.spectrum--large .spectrum-Site-logo { + --spectrum-icon-size: 40px; +} +.spectrum-Site-nav { + flex-grow: 1; + padding: 0 var(--spectrum-spacing-400) var(--spectrum-spacing-600); +} +.spectrum-Site-bottomNav { + margin-block-start: var(--spectrum-spacing-900); +} +.spectrum-Site-page { + box-sizing: border-box; + padding: var(--spectrum-spacing-600) 52px var(--spectrum-spacing-400); +} +.spectrum-Site-hero, +.spectrum-Site-page { + inline-size: min(1080px, 100%); + margin: auto; +} +.spectrum-Site-heroHeading { + margin-block-end: var(--spectrum-spacing-300); +} +.spectrum-Site-heroHeading .spectrum-Heading { + margin-block-start: 0 !important; +} +.spectrum-Site-heroImage { + display: block; + max-inline-size: 100%; + margin-block-start: var(--spectrum-spacing-700); + margin-block-end: var(--spectrum-spacing-700); + margin-inline-start: auto; + margin-inline-end: auto; + border-radius: 4px; +} +.spectrum-Site-mainContent { + overflow-y: auto; + flex-grow: 1; + border-block: none; +} +.spectrum-Site-footerContainer { + inline-size: min(1080px, 100%); + margin: var(--spectrum-spacing-400) auto; + padding: 0 var(--spectrum-spacing-600); +} +.spectrum-Site-overlay { + pointer-events: none; + position: fixed; + z-index: 3; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + overflow: hidden; + display: none; + opacity: 0; + background-color: var(--spectrum-transparent-black-300); +} +.spectrum-HomeCards { + display: grid; + grid-gap: 1rem; + grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); + margin: var(--spectrum-spacing-700) 0; +} +.spectrum-HomeCard { + display: flex; + align-items: flex-start; + margin-block-end: var(--spectrum-spacing-300); + padding: 0 var(--spectrum-spacing-200); +} +.spectrum-HomeCard-image { + flex: 0 0 auto; + inline-size: var(--spectrum-spacing-1000); + margin-inline-end: 20px; +} +.spectrum-HomeCard-image .spectrum-Icon { + --spectrum-icon-size: 200px; +} +.spectrum-HomeCard-content { + flex: 1 1 auto; +} +.spectrum-CSSComponent { + box-sizing: border-box; + inline-size: min(1080px, 100%); + margin: var(--spectrum-spacing-600) auto; + padding: 0 56px; +} +.spectrum-CSSComponent-heading { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + margin-block-end: var(--spectrum-spacing-600); +} +.spectrum-CSSComponent-link { + display: flex; + align-items: center; + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; + outline: none; +} +.spectrum-CSSComponent-link:focus-visible { + -webkit-text-decoration: underline; + text-decoration: underline; +} +.spectrum-CSSComponent-statusContainer { + display: flex; + flex-flow: row nowrap; + flex-grow: 1; + gap: 80px; + align-self: center; +} +.spectrum-CSSComponent-statusContainer > * { + flex-basis: min(370px, 50%); +} +.spectrum-CSSComponent-detailsTable { + --mod-table-cursor-row-default: default; + --mod-table-row-background-color-hover: transparent; + --mod-table-divider-color: transparent; + --mod-table-border-color: transparent; + --mod-table-row-line-height: 1.6; + border-spacing: 0; + margin-block-start: var(--spectrum-spacing-600); + margin-block-end: 36px; +} +.spectrum-CSSComponent-detailsTable th { + block-size: var(--spectrum-spacing-300); + padding-inline-end: var(--spectrum-spacing-400); + font-weight: var(--spectrum-regular-font-weight); + text-align: start; +} +.spectrum-CSSComponent-sectionHeading { + margin-block-start: var(--spectrum-spacing-700); + margin-block-end: var(--spectrum-spacing-500); +} +.spectrum-CSSComponent-status, +.spectrum-CSSExample-status { + min-block-size: 0 !important; + padding: 0 !important; +} +.spectrum-CSSComponent-status:before { + margin-inline-start: 0 !important; +} +.spectrum-CSSExample-status { + margin-inline-start: var(--spectrum-spacing-200); +} +.spectrum-CSSComponent-version { + flex-grow: 1; + text-align: end; +} +.spectrum-CSSComponent-description { + margin-block-start: var(--spectrum-spacing-400); + margin-block-end: var(--spectrum-spacing-700); +} +.spectrum-CSSComponent-resources { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin-block-end: var(--spectrum-spacing-500); +} +.spectrum-CSSComponent-resources .spectrum-Card { + margin-block-end: var(--spectrum-spacing-300); + margin-inline-end: var(--spectrum-spacing-300); +} +.spectrum-CSSComponent-resource--adobe, +.spectrum-CSSComponent-resources a[href*="spectrum.adobe.com"] .spectrum-Card-preview { + color: rgb(250, 15, 0); + background-color: var(--spectrum-gray-100); +} +.spectrum-CSSComponent-resource--github, +.spectrum-CSSComponent-resources a[href*="github.com"] .spectrum-Card-preview { + color: var(--spectrum-black); + background-color: var(--spectrum-transparent-black-200); +} +.spectrum-CSSComponent-resource--npm, +.spectrum-CSSComponent-resources a[href*="npmjs.com"] .spectrum-Card-preview { + background-color: rgba(203, 56, 55, 0.1); +} +.spectrum-CSSComponent-cardImage { + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-CSSComponent-switcher { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: var(--spectrum-spacing-500); + justify-content: flex-end; +} +.spectrum-CSS-switcherContainer { + margin-inline-start: var(--spectrum-spacing-300); + white-space: nowrap; +} +.spectrum-CSSExample { + margin-block-end: 64px; +} +.spectrum-CSSExample-container { + position: relative; + display: flex; + flex-direction: column; + border-radius: var(--spectrum-corner-radius-100); +} +.spectrum-CSSExample-heading { + display: flex; + flex-direction: row; + align-items: center; + margin-block-end: var(--spectrum-spacing-100) !important; +} +.spectrum-CSSExample-example, +.spectrum-CSSExample-markup { + box-sizing: border-box; +} +:root { + --spectrum-docs-static-white-background-color: var(--spectrum-seafoam-900); + --spectrum-docs-static-black-background-color: var(--spectrum-seafoam-100); +} +.spectrum-CSSExample-example { + flex: 1 0 auto; + min-block-size: 0; + padding: var(--spectrum-spacing-500) var(--spectrum-spacing-600); + border-radius: var(--spectrum-corner-radius-100) var(--spectrum-corner-radius-100) 0 0; +} +.spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticWhite) { + background-color: var(--spectrum-docs-static-white-background-color); + border-color: var(--spectrum-docs-static-white-background-color); +} +.spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticBlack) { + background-color: var(--spectrum-docs-static-black-background-color); + border-color: var(--spectrum-docs-static-black-background-color); +} +.spectrum-CSSExample-markup { + position: relative; + overflow: hidden; + max-inline-size: 100%; + max-block-size: 192px; + padding: 10px 18px; + border-radius: 0 0 var(--spectrum-corner-radius-100) var(--spectrum-corner-radius-100); +} +.spectrum-CSSExample-markup.is-open { + max-block-size: 100%; + padding-block-end: var(--spectrum-spacing-700); +} +.spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle:before { + display: none; +} +.spectrum-CSSExample-markupToggle + pre { + padding-block-end: var(--spectrum-spacing-100); +} +.spectrum-CSSExample-example--spacious { + position: relative; + block-size: 150px; +} +.spectrum-CSSExample-example--overlay { + position: relative; + min-block-size: var(--spectrum-spacing-800); +} +.spectrum-CSSExample-dialog { + position: relative !important; + z-index: 1 !important; + inset-block-start: 0; + inset-inline-start: 0; + transform: none !important; + inline-size: auto !important; + block-size: auto !important; + margin-inline-start: auto; + margin-inline-end: auto; + transition: none; +} +.spectrum-CSSExample-modal { + z-index: 2 !important; +} +.spectrum-Examples, +.spectrum-Examples-itemGroup { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: var(--spectrum-spacing-100); + justify-content: space-between; +} +.spectrum-Examples--vertical { + flex-direction: column; +} +.spectrum-Examples-item .spectrum-Examples-itemHeading { + margin-block-end: var(--spectrum-spacing-100); +} +.spectrum-Button.spectrum-CSSExample-overlayShowButton { + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + transform: translate(-50%, -50%); +} +.spectrum-CSSExample-markup pre code { + white-space: pre-wrap; +} +.spectrum-CSSExample-markupToggle { + position: absolute; + z-index: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + box-sizing: border-box; + padding: var(--spectrum-spacing-400); + font-size: var(--spectrum-font-size-50); + text-align: start; +} +.spectrum-CenteredImage { + display: block; + inline-size: max(720px, 100%); + margin: auto; +} +.spectrum-CodeBlock { + margin: var(--spectrum-spacing-200) 0; + padding: var(--spectrum-spacing-100) var(--spectrum-spacing-200); + border-style: solid; + border-width: var(--spectrum-border-width-100); + border-radius: var(--spectrum-spacing-50); +} +.spectrum-CSSExample-example { + background-color: var(--spectrum-background-layer-1-color, var(--spectrum-gray-100)); +} +.spectrum-CSSExample-markup { + background-color: var(--spectrum-gray-75); + border-block-start: 1px solid var(--spectrum-gray-100); +} +.spectrum-CSSExample-markupToggle { + z-index: 1; + background-color: var(--spectrum-gray-75); +} +.spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle { + background-color: initial; +} +.spectrum-CSSExample-example--overlay { + color: var(--spectrum-transparent-black-400); + background-color: var(--spectrum-transparent-black-400); +} +.spectrum-CSSExample-oldAPI { + color: var(--spectrum-negative-color-800); +} +.spectrum-CodeBlock { + background-color: var(--spectrum-gray-75); + border-color: var(--spectrum-gray-400); +} +@media screen and (width <= 960px) { + .spectrum-Site-content { + max-block-size: calc(100% - var(--spectrum-spacing-700)); + } + .spectrum-Site-overlay { + opacity: 0; + transition: opacity var(--spectrum-animation-duration-200) ease-out 0ms; + } + .spectrum-Site-overlay.is-open { + pointer-events: auto; + display: block; + opacity: 1; + transition: opacity var(--spectrum-animation-duration-200) ease-in 0ms; + } + .spectrum-Site-sideBar { + position: fixed; + z-index: 4; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-end: 100%; + transform: translateX(0); + block-size: 100vh; + transition: transform var(--spectrum-animation-duration-200) ease-in-out; + } + .spectrum-Site-sideBar.is-open { + transform: translateX(100%); + } + .spectrum-Site-header { + display: block; + } + .spectrum-Site-page { + padding-inline-start: var(--spectrum-spacing-300); + padding-inline-end: var(--spectrum-spacing-300); + } + .spectrum-Site-hero { + max-inline-size: 100%; + } + .spectrum-Site-heroHeading h1.spectrum-Heading1--display { + font-size: var(--spectrum-font-size-800); + } + .spectrum-Site-mainContainer { + padding-inline: var(--spectrum-spacing-400); + } + .spectrum-CSSComponent { + margin-block: var(--spectrum-spacing-100); + margin-inline: auto; + padding-inline: 0 var(--spectrum-spacing-600); + } + .spectrum-CSSComponent-description, + .spectrum-CSSExample { + margin-block-end: var(--spectrum-spacing-200); + } + .spectrum-CSSExample-example { + padding: var(--spectrum-spacing-200); + } + .spectrum-CSSComponent-header { + margin-block-end: var(--spectrum-spacing-200); + } + .spectrum-CSSComponent-statusContainer, + .spectrum-CSSComponent-version { + display: none; + } + .spectrum-CSSComponent-title { + font-size: var(--spectrum-font-size-500); + } +} +.is-scrollable, +.u-scrollable { + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.is-scrollable::-webkit-scrollbar, +.u-scrollable::-webkit-scrollbar { + inline-size: 10px; + block-size: 10px; +} +.is-scrollable::-webkit-scrollbar-thumb, +.u-scrollable::-webkit-scrollbar-thumb { + inline-size: 8px; + block-size: 8px; + background-color: var(--spectrum-gray-75); + background-clip: padding-box; + border-block: 2px solid rgba(0, 0, 0, 0); + border-radius: 8px; +} +.is-scrollable::-webkit-scrollbar-track, +.is-scrollable::-webkit-scrollbar-track-piece, +.u-scrollable::-webkit-scrollbar-track, +.u-scrollable::-webkit-scrollbar-track-piece { + background-color: var(--spectrum-gray-75); +} +@media (hover: hover) { + .spectrum-CSSComponent-link:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } + .is-scrollable:hover::-webkit-scrollbar-thumb, + .u-scrollable:hover::-webkit-scrollbar-thumb { + background-color: var(--spectrum-gray-400); + } +} +/*# sourceMappingURL=components/site/index.css.map */ diff --git a/components/site/index-vars.css b/components/site/index-vars.css new file mode 100644 index 0000000000..e55a68cb2c --- /dev/null +++ b/components/site/index-vars.css @@ -0,0 +1,533 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Site { + display: flex; + flex-direction: column; + block-size: 100%; + color: var(--spectrum-body-color); + background-color: var(--spectrum-gray-50); +} +.spectrum-Site-content { + display: flex; + flex-direction: row; + inline-size: 100vw; + block-size: 100vh; +} +.spectrum-Site-header { + display: none; + box-sizing: border-box; + block-size: var(--spectrum-component-height-300); + padding: var(--spectrum-component-to-menu-extra-large); + border-block-end-color: var(--spectrum-gray-300); + border-block-end-style: solid; + border-block-end-width: var(--spectrum-divider-thickness-small); +} +.spectrum-Site-header .spectrum-Site-sideBarHeader { + padding-block: 0; +} +.spectrum-Site-header, +.spectrum-Site-mainContent, +.spectrum-Site-sideBar { + color: var(--spectrum-body-color); + background-color: var(--spectrum-gray-75); +} +.spectrum-Site-sideBar { + display: flex; + flex-direction: column; + flex-grow: 0; + max-inline-size: 100%; + transition: none; +} +.spectrum-Site-sideBarHeader { + display: flex; + flex-direction: row; + flex-grow: 0; + flex-shrink: 0; + align-items: center; + padding: var(--spectrum-spacing-400); + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Site-sideBarHeader:focus { + outline: none; +} +.spectrum-Site-sideBarHeader:focus h2 { + -webkit-text-decoration: underline; + text-decoration: underline; +} +.spectrum-Site-search { + padding: var(--spectrum-spacing-300); + padding-block-start: 0; +} +.spectrum-Site-searchResults { + position: absolute; + z-index: 5; + inset-block-start: -100%; + inset-inline-start: -100%; + overflow-y: auto; + max-block-size: calc(90vh - 120px); +} +.spectrum-Site-noSearchResults { + padding: var(--spectrum-spacing-400); +} +.spectrum-Site-logo { + --spectrum-icon-size: 32px; + --mod-icon-color: #fa0f00; + margin-inline-end: var(--spectrum-spacing-200); +} +.spectrum--large .spectrum-Site-logo { + --spectrum-icon-size: 40px; +} +.spectrum-Site-nav { + flex-grow: 1; + padding: 0 var(--spectrum-spacing-400) var(--spectrum-spacing-600); +} +.spectrum-Site-bottomNav { + margin-block-start: var(--spectrum-spacing-900); +} +.spectrum-Site-page { + box-sizing: border-box; + padding: var(--spectrum-spacing-600) 52px var(--spectrum-spacing-400); +} +.spectrum-Site-hero, +.spectrum-Site-page { + inline-size: min(1080px, 100%); + margin: auto; +} +.spectrum-Site-heroHeading { + margin-block-end: var(--spectrum-spacing-300); +} +.spectrum-Site-heroHeading .spectrum-Heading { + margin-block-start: 0 !important; +} +.spectrum-Site-heroImage { + display: block; + max-inline-size: 100%; + margin-block-start: var(--spectrum-spacing-700); + margin-block-end: var(--spectrum-spacing-700); + margin-inline-start: auto; + margin-inline-end: auto; + border-radius: 4px; +} +.spectrum-Site-mainContent { + overflow-y: auto; + flex-grow: 1; + border-block: none; +} +.spectrum-Site-footerContainer { + inline-size: min(1080px, 100%); + margin: var(--spectrum-spacing-400) auto; + padding: 0 var(--spectrum-spacing-600); +} +.spectrum-Site-overlay { + pointer-events: none; + position: fixed; + z-index: 3; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + overflow: hidden; + display: none; + opacity: 0; + background-color: var(--spectrum-transparent-black-300); +} +.spectrum-HomeCards { + display: grid; + grid-gap: 1rem; + grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); + margin: var(--spectrum-spacing-700) 0; +} +.spectrum-HomeCard { + display: flex; + align-items: flex-start; + margin-block-end: var(--spectrum-spacing-300); + padding: 0 var(--spectrum-spacing-200); +} +.spectrum-HomeCard-image { + flex: 0 0 auto; + inline-size: var(--spectrum-spacing-1000); + margin-inline-end: 20px; +} +.spectrum-HomeCard-image .spectrum-Icon { + --spectrum-icon-size: 200px; +} +.spectrum-HomeCard-content { + flex: 1 1 auto; +} +.spectrum-CSSComponent { + box-sizing: border-box; + inline-size: min(1080px, 100%); + margin: var(--spectrum-spacing-600) auto; + padding: 0 56px; +} +.spectrum-CSSComponent-heading { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + margin-block-end: var(--spectrum-spacing-600); +} +.spectrum-CSSComponent-link { + display: flex; + align-items: center; + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; + outline: none; +} +.spectrum-CSSComponent-link:focus-visible { + -webkit-text-decoration: underline; + text-decoration: underline; +} +.spectrum-CSSComponent-statusContainer { + display: flex; + flex-flow: row nowrap; + flex-grow: 1; + gap: 80px; + align-self: center; +} +.spectrum-CSSComponent-statusContainer > * { + flex-basis: min(370px, 50%); +} +.spectrum-CSSComponent-detailsTable { + --mod-table-cursor-row-default: default; + --mod-table-row-background-color-hover: transparent; + --mod-table-divider-color: transparent; + --mod-table-border-color: transparent; + --mod-table-row-line-height: 1.6; + border-spacing: 0; + margin-block-start: var(--spectrum-spacing-600); + margin-block-end: 36px; +} +.spectrum-CSSComponent-detailsTable th { + block-size: var(--spectrum-spacing-300); + padding-inline-end: var(--spectrum-spacing-400); + font-weight: var(--spectrum-regular-font-weight); + text-align: start; +} +.spectrum-CSSComponent-sectionHeading { + margin-block-start: var(--spectrum-spacing-700); + margin-block-end: var(--spectrum-spacing-500); +} +.spectrum-CSSComponent-status, +.spectrum-CSSExample-status { + min-block-size: 0 !important; + padding: 0 !important; +} +.spectrum-CSSComponent-status:before { + margin-inline-start: 0 !important; +} +.spectrum-CSSExample-status { + margin-inline-start: var(--spectrum-spacing-200); +} +.spectrum-CSSComponent-version { + flex-grow: 1; + text-align: end; +} +.spectrum-CSSComponent-description { + margin-block-start: var(--spectrum-spacing-400); + margin-block-end: var(--spectrum-spacing-700); +} +.spectrum-CSSComponent-resources { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin-block-end: var(--spectrum-spacing-500); +} +.spectrum-CSSComponent-resources .spectrum-Card { + margin-block-end: var(--spectrum-spacing-300); + margin-inline-end: var(--spectrum-spacing-300); +} +.spectrum-CSSComponent-resource--adobe, +.spectrum-CSSComponent-resources a[href*="spectrum.adobe.com"] .spectrum-Card-preview { + color: rgb(250, 15, 0); + background-color: var(--spectrum-gray-100); +} +.spectrum-CSSComponent-resource--github, +.spectrum-CSSComponent-resources a[href*="github.com"] .spectrum-Card-preview { + color: var(--spectrum-black); + background-color: var(--spectrum-transparent-black-200); +} +.spectrum-CSSComponent-resource--npm, +.spectrum-CSSComponent-resources a[href*="npmjs.com"] .spectrum-Card-preview { + background-color: rgba(203, 56, 55, 0.1); +} +.spectrum-CSSComponent-cardImage { + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-CSSComponent-switcher { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: var(--spectrum-spacing-500); + justify-content: flex-end; +} +.spectrum-CSS-switcherContainer { + margin-inline-start: var(--spectrum-spacing-300); + white-space: nowrap; +} +.spectrum-CSSExample { + margin-block-end: 64px; +} +.spectrum-CSSExample-container { + position: relative; + display: flex; + flex-direction: column; + border-radius: var(--spectrum-corner-radius-100); +} +.spectrum-CSSExample-heading { + display: flex; + flex-direction: row; + align-items: center; + margin-block-end: var(--spectrum-spacing-100) !important; +} +.spectrum-CSSExample-example, +.spectrum-CSSExample-markup { + box-sizing: border-box; +} +:root { + --spectrum-docs-static-white-background-color: var(--spectrum-seafoam-900); + --spectrum-docs-static-black-background-color: var(--spectrum-seafoam-100); +} +.spectrum-CSSExample-example { + flex: 1 0 auto; + min-block-size: 0; + padding: var(--spectrum-spacing-500) var(--spectrum-spacing-600); + border-radius: var(--spectrum-corner-radius-100) var(--spectrum-corner-radius-100) 0 0; +} +.spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticWhite) { + background-color: var(--spectrum-docs-static-white-background-color); + border-color: var(--spectrum-docs-static-white-background-color); +} +.spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticBlack) { + background-color: var(--spectrum-docs-static-black-background-color); + border-color: var(--spectrum-docs-static-black-background-color); +} +.spectrum-CSSExample-markup { + position: relative; + overflow: hidden; + max-inline-size: 100%; + max-block-size: 192px; + padding: 10px 18px; + border-radius: 0 0 var(--spectrum-corner-radius-100) var(--spectrum-corner-radius-100); +} +.spectrum-CSSExample-markup.is-open { + max-block-size: 100%; + padding-block-end: var(--spectrum-spacing-700); +} +.spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle:before { + display: none; +} +.spectrum-CSSExample-markupToggle + pre { + padding-block-end: var(--spectrum-spacing-100); +} +.spectrum-CSSExample-example--spacious { + position: relative; + block-size: 150px; +} +.spectrum-CSSExample-example--overlay { + position: relative; + min-block-size: var(--spectrum-spacing-800); +} +.spectrum-CSSExample-dialog { + position: relative !important; + z-index: 1 !important; + inset-block-start: 0; + inset-inline-start: 0; + transform: none !important; + inline-size: auto !important; + block-size: auto !important; + margin-inline-start: auto; + margin-inline-end: auto; + transition: none; +} +.spectrum-CSSExample-modal { + z-index: 2 !important; +} +.spectrum-Examples, +.spectrum-Examples-itemGroup { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: var(--spectrum-spacing-100); + justify-content: space-between; +} +.spectrum-Examples--vertical { + flex-direction: column; +} +.spectrum-Examples-item .spectrum-Examples-itemHeading { + margin-block-end: var(--spectrum-spacing-100); +} +.spectrum-Button.spectrum-CSSExample-overlayShowButton { + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + transform: translate(-50%, -50%); +} +.spectrum-CSSExample-markup pre code { + white-space: pre-wrap; +} +.spectrum-CSSExample-markupToggle { + position: absolute; + z-index: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + box-sizing: border-box; + padding: var(--spectrum-spacing-400); + font-size: var(--spectrum-font-size-50); + text-align: start; +} +.spectrum-CenteredImage { + display: block; + inline-size: max(720px, 100%); + margin: auto; +} +.spectrum-CodeBlock { + margin: var(--spectrum-spacing-200) 0; + padding: var(--spectrum-spacing-100) var(--spectrum-spacing-200); + border-style: solid; + border-width: var(--spectrum-border-width-100); + border-radius: var(--spectrum-spacing-50); +} +.spectrum-CSSExample-example { + background-color: var(--spectrum-background-layer-1-color, var(--spectrum-gray-100)); +} +.spectrum-CSSExample-markup { + background-color: var(--spectrum-gray-75); + border-block-start: 1px solid var(--spectrum-gray-100); +} +.spectrum-CSSExample-markupToggle { + z-index: 1; + background-color: var(--spectrum-gray-75); +} +.spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle { + background-color: initial; +} +.spectrum-CSSExample-example--overlay { + color: var(--spectrum-transparent-black-400); + background-color: var(--spectrum-transparent-black-400); +} +.spectrum-CSSExample-oldAPI { + color: var(--spectrum-negative-color-800); +} +.spectrum-CodeBlock { + background-color: var(--spectrum-gray-75); + border-color: var(--spectrum-gray-400); +} +@media screen and (width <= 960px) { + .spectrum-Site-content { + max-block-size: calc(100% - var(--spectrum-spacing-700)); + } + .spectrum-Site-overlay { + opacity: 0; + transition: opacity var(--spectrum-animation-duration-200) ease-out 0ms; + } + .spectrum-Site-overlay.is-open { + pointer-events: auto; + display: block; + opacity: 1; + transition: opacity var(--spectrum-animation-duration-200) ease-in 0ms; + } + .spectrum-Site-sideBar { + position: fixed; + z-index: 4; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-end: 100%; + transform: translateX(0); + block-size: 100vh; + transition: transform var(--spectrum-animation-duration-200) ease-in-out; + } + .spectrum-Site-sideBar.is-open { + transform: translateX(100%); + } + .spectrum-Site-header { + display: block; + } + .spectrum-Site-page { + padding-inline-start: var(--spectrum-spacing-300); + padding-inline-end: var(--spectrum-spacing-300); + } + .spectrum-Site-hero { + max-inline-size: 100%; + } + .spectrum-Site-heroHeading h1.spectrum-Heading1--display { + font-size: var(--spectrum-font-size-800); + } + .spectrum-Site-mainContainer { + padding-inline: var(--spectrum-spacing-400); + } + .spectrum-CSSComponent { + margin-block: var(--spectrum-spacing-100); + margin-inline: auto; + padding-inline: 0 var(--spectrum-spacing-600); + } + .spectrum-CSSComponent-description, + .spectrum-CSSExample { + margin-block-end: var(--spectrum-spacing-200); + } + .spectrum-CSSExample-example { + padding: var(--spectrum-spacing-200); + } + .spectrum-CSSComponent-header { + margin-block-end: var(--spectrum-spacing-200); + } + .spectrum-CSSComponent-statusContainer, + .spectrum-CSSComponent-version { + display: none; + } + .spectrum-CSSComponent-title { + font-size: var(--spectrum-font-size-500); + } +} +.is-scrollable, +.u-scrollable { + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.is-scrollable::-webkit-scrollbar, +.u-scrollable::-webkit-scrollbar { + inline-size: 10px; + block-size: 10px; +} +.is-scrollable::-webkit-scrollbar-thumb, +.u-scrollable::-webkit-scrollbar-thumb { + inline-size: 8px; + block-size: 8px; + background-color: var(--spectrum-gray-75); + background-clip: padding-box; + border-block: 2px solid rgba(0, 0, 0, 0); + border-radius: 8px; +} +.is-scrollable::-webkit-scrollbar-track, +.is-scrollable::-webkit-scrollbar-track-piece, +.u-scrollable::-webkit-scrollbar-track, +.u-scrollable::-webkit-scrollbar-track-piece { + background-color: var(--spectrum-gray-75); +} +@media (hover: hover) { + .spectrum-CSSComponent-link:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } + .is-scrollable:hover::-webkit-scrollbar-thumb, + .u-scrollable:hover::-webkit-scrollbar-thumb { + background-color: var(--spectrum-gray-400); + } +} +/*# sourceMappingURL=components/site/index.css.map */ diff --git a/components/site/index.css b/components/site/index.css new file mode 100644 index 0000000000..e55a68cb2c --- /dev/null +++ b/components/site/index.css @@ -0,0 +1,533 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Site { + display: flex; + flex-direction: column; + block-size: 100%; + color: var(--spectrum-body-color); + background-color: var(--spectrum-gray-50); +} +.spectrum-Site-content { + display: flex; + flex-direction: row; + inline-size: 100vw; + block-size: 100vh; +} +.spectrum-Site-header { + display: none; + box-sizing: border-box; + block-size: var(--spectrum-component-height-300); + padding: var(--spectrum-component-to-menu-extra-large); + border-block-end-color: var(--spectrum-gray-300); + border-block-end-style: solid; + border-block-end-width: var(--spectrum-divider-thickness-small); +} +.spectrum-Site-header .spectrum-Site-sideBarHeader { + padding-block: 0; +} +.spectrum-Site-header, +.spectrum-Site-mainContent, +.spectrum-Site-sideBar { + color: var(--spectrum-body-color); + background-color: var(--spectrum-gray-75); +} +.spectrum-Site-sideBar { + display: flex; + flex-direction: column; + flex-grow: 0; + max-inline-size: 100%; + transition: none; +} +.spectrum-Site-sideBarHeader { + display: flex; + flex-direction: row; + flex-grow: 0; + flex-shrink: 0; + align-items: center; + padding: var(--spectrum-spacing-400); + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Site-sideBarHeader:focus { + outline: none; +} +.spectrum-Site-sideBarHeader:focus h2 { + -webkit-text-decoration: underline; + text-decoration: underline; +} +.spectrum-Site-search { + padding: var(--spectrum-spacing-300); + padding-block-start: 0; +} +.spectrum-Site-searchResults { + position: absolute; + z-index: 5; + inset-block-start: -100%; + inset-inline-start: -100%; + overflow-y: auto; + max-block-size: calc(90vh - 120px); +} +.spectrum-Site-noSearchResults { + padding: var(--spectrum-spacing-400); +} +.spectrum-Site-logo { + --spectrum-icon-size: 32px; + --mod-icon-color: #fa0f00; + margin-inline-end: var(--spectrum-spacing-200); +} +.spectrum--large .spectrum-Site-logo { + --spectrum-icon-size: 40px; +} +.spectrum-Site-nav { + flex-grow: 1; + padding: 0 var(--spectrum-spacing-400) var(--spectrum-spacing-600); +} +.spectrum-Site-bottomNav { + margin-block-start: var(--spectrum-spacing-900); +} +.spectrum-Site-page { + box-sizing: border-box; + padding: var(--spectrum-spacing-600) 52px var(--spectrum-spacing-400); +} +.spectrum-Site-hero, +.spectrum-Site-page { + inline-size: min(1080px, 100%); + margin: auto; +} +.spectrum-Site-heroHeading { + margin-block-end: var(--spectrum-spacing-300); +} +.spectrum-Site-heroHeading .spectrum-Heading { + margin-block-start: 0 !important; +} +.spectrum-Site-heroImage { + display: block; + max-inline-size: 100%; + margin-block-start: var(--spectrum-spacing-700); + margin-block-end: var(--spectrum-spacing-700); + margin-inline-start: auto; + margin-inline-end: auto; + border-radius: 4px; +} +.spectrum-Site-mainContent { + overflow-y: auto; + flex-grow: 1; + border-block: none; +} +.spectrum-Site-footerContainer { + inline-size: min(1080px, 100%); + margin: var(--spectrum-spacing-400) auto; + padding: 0 var(--spectrum-spacing-600); +} +.spectrum-Site-overlay { + pointer-events: none; + position: fixed; + z-index: 3; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + overflow: hidden; + display: none; + opacity: 0; + background-color: var(--spectrum-transparent-black-300); +} +.spectrum-HomeCards { + display: grid; + grid-gap: 1rem; + grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); + margin: var(--spectrum-spacing-700) 0; +} +.spectrum-HomeCard { + display: flex; + align-items: flex-start; + margin-block-end: var(--spectrum-spacing-300); + padding: 0 var(--spectrum-spacing-200); +} +.spectrum-HomeCard-image { + flex: 0 0 auto; + inline-size: var(--spectrum-spacing-1000); + margin-inline-end: 20px; +} +.spectrum-HomeCard-image .spectrum-Icon { + --spectrum-icon-size: 200px; +} +.spectrum-HomeCard-content { + flex: 1 1 auto; +} +.spectrum-CSSComponent { + box-sizing: border-box; + inline-size: min(1080px, 100%); + margin: var(--spectrum-spacing-600) auto; + padding: 0 56px; +} +.spectrum-CSSComponent-heading { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + margin-block-end: var(--spectrum-spacing-600); +} +.spectrum-CSSComponent-link { + display: flex; + align-items: center; + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; + outline: none; +} +.spectrum-CSSComponent-link:focus-visible { + -webkit-text-decoration: underline; + text-decoration: underline; +} +.spectrum-CSSComponent-statusContainer { + display: flex; + flex-flow: row nowrap; + flex-grow: 1; + gap: 80px; + align-self: center; +} +.spectrum-CSSComponent-statusContainer > * { + flex-basis: min(370px, 50%); +} +.spectrum-CSSComponent-detailsTable { + --mod-table-cursor-row-default: default; + --mod-table-row-background-color-hover: transparent; + --mod-table-divider-color: transparent; + --mod-table-border-color: transparent; + --mod-table-row-line-height: 1.6; + border-spacing: 0; + margin-block-start: var(--spectrum-spacing-600); + margin-block-end: 36px; +} +.spectrum-CSSComponent-detailsTable th { + block-size: var(--spectrum-spacing-300); + padding-inline-end: var(--spectrum-spacing-400); + font-weight: var(--spectrum-regular-font-weight); + text-align: start; +} +.spectrum-CSSComponent-sectionHeading { + margin-block-start: var(--spectrum-spacing-700); + margin-block-end: var(--spectrum-spacing-500); +} +.spectrum-CSSComponent-status, +.spectrum-CSSExample-status { + min-block-size: 0 !important; + padding: 0 !important; +} +.spectrum-CSSComponent-status:before { + margin-inline-start: 0 !important; +} +.spectrum-CSSExample-status { + margin-inline-start: var(--spectrum-spacing-200); +} +.spectrum-CSSComponent-version { + flex-grow: 1; + text-align: end; +} +.spectrum-CSSComponent-description { + margin-block-start: var(--spectrum-spacing-400); + margin-block-end: var(--spectrum-spacing-700); +} +.spectrum-CSSComponent-resources { + display: flex; + flex-direction: row; + flex-wrap: wrap; + margin-block-end: var(--spectrum-spacing-500); +} +.spectrum-CSSComponent-resources .spectrum-Card { + margin-block-end: var(--spectrum-spacing-300); + margin-inline-end: var(--spectrum-spacing-300); +} +.spectrum-CSSComponent-resource--adobe, +.spectrum-CSSComponent-resources a[href*="spectrum.adobe.com"] .spectrum-Card-preview { + color: rgb(250, 15, 0); + background-color: var(--spectrum-gray-100); +} +.spectrum-CSSComponent-resource--github, +.spectrum-CSSComponent-resources a[href*="github.com"] .spectrum-Card-preview { + color: var(--spectrum-black); + background-color: var(--spectrum-transparent-black-200); +} +.spectrum-CSSComponent-resource--npm, +.spectrum-CSSComponent-resources a[href*="npmjs.com"] .spectrum-Card-preview { + background-color: rgba(203, 56, 55, 0.1); +} +.spectrum-CSSComponent-cardImage { + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-CSSComponent-switcher { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: var(--spectrum-spacing-500); + justify-content: flex-end; +} +.spectrum-CSS-switcherContainer { + margin-inline-start: var(--spectrum-spacing-300); + white-space: nowrap; +} +.spectrum-CSSExample { + margin-block-end: 64px; +} +.spectrum-CSSExample-container { + position: relative; + display: flex; + flex-direction: column; + border-radius: var(--spectrum-corner-radius-100); +} +.spectrum-CSSExample-heading { + display: flex; + flex-direction: row; + align-items: center; + margin-block-end: var(--spectrum-spacing-100) !important; +} +.spectrum-CSSExample-example, +.spectrum-CSSExample-markup { + box-sizing: border-box; +} +:root { + --spectrum-docs-static-white-background-color: var(--spectrum-seafoam-900); + --spectrum-docs-static-black-background-color: var(--spectrum-seafoam-100); +} +.spectrum-CSSExample-example { + flex: 1 0 auto; + min-block-size: 0; + padding: var(--spectrum-spacing-500) var(--spectrum-spacing-600); + border-radius: var(--spectrum-corner-radius-100) var(--spectrum-corner-radius-100) 0 0; +} +.spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticWhite) { + background-color: var(--spectrum-docs-static-white-background-color); + border-color: var(--spectrum-docs-static-white-background-color); +} +.spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticBlack) { + background-color: var(--spectrum-docs-static-black-background-color); + border-color: var(--spectrum-docs-static-black-background-color); +} +.spectrum-CSSExample-markup { + position: relative; + overflow: hidden; + max-inline-size: 100%; + max-block-size: 192px; + padding: 10px 18px; + border-radius: 0 0 var(--spectrum-corner-radius-100) var(--spectrum-corner-radius-100); +} +.spectrum-CSSExample-markup.is-open { + max-block-size: 100%; + padding-block-end: var(--spectrum-spacing-700); +} +.spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle:before { + display: none; +} +.spectrum-CSSExample-markupToggle + pre { + padding-block-end: var(--spectrum-spacing-100); +} +.spectrum-CSSExample-example--spacious { + position: relative; + block-size: 150px; +} +.spectrum-CSSExample-example--overlay { + position: relative; + min-block-size: var(--spectrum-spacing-800); +} +.spectrum-CSSExample-dialog { + position: relative !important; + z-index: 1 !important; + inset-block-start: 0; + inset-inline-start: 0; + transform: none !important; + inline-size: auto !important; + block-size: auto !important; + margin-inline-start: auto; + margin-inline-end: auto; + transition: none; +} +.spectrum-CSSExample-modal { + z-index: 2 !important; +} +.spectrum-Examples, +.spectrum-Examples-itemGroup { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: var(--spectrum-spacing-100); + justify-content: space-between; +} +.spectrum-Examples--vertical { + flex-direction: column; +} +.spectrum-Examples-item .spectrum-Examples-itemHeading { + margin-block-end: var(--spectrum-spacing-100); +} +.spectrum-Button.spectrum-CSSExample-overlayShowButton { + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + transform: translate(-50%, -50%); +} +.spectrum-CSSExample-markup pre code { + white-space: pre-wrap; +} +.spectrum-CSSExample-markupToggle { + position: absolute; + z-index: 0; + inset-block-end: 0; + inset-inline-start: 0; + inset-inline-end: 0; + box-sizing: border-box; + padding: var(--spectrum-spacing-400); + font-size: var(--spectrum-font-size-50); + text-align: start; +} +.spectrum-CenteredImage { + display: block; + inline-size: max(720px, 100%); + margin: auto; +} +.spectrum-CodeBlock { + margin: var(--spectrum-spacing-200) 0; + padding: var(--spectrum-spacing-100) var(--spectrum-spacing-200); + border-style: solid; + border-width: var(--spectrum-border-width-100); + border-radius: var(--spectrum-spacing-50); +} +.spectrum-CSSExample-example { + background-color: var(--spectrum-background-layer-1-color, var(--spectrum-gray-100)); +} +.spectrum-CSSExample-markup { + background-color: var(--spectrum-gray-75); + border-block-start: 1px solid var(--spectrum-gray-100); +} +.spectrum-CSSExample-markupToggle { + z-index: 1; + background-color: var(--spectrum-gray-75); +} +.spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle { + background-color: initial; +} +.spectrum-CSSExample-example--overlay { + color: var(--spectrum-transparent-black-400); + background-color: var(--spectrum-transparent-black-400); +} +.spectrum-CSSExample-oldAPI { + color: var(--spectrum-negative-color-800); +} +.spectrum-CodeBlock { + background-color: var(--spectrum-gray-75); + border-color: var(--spectrum-gray-400); +} +@media screen and (width <= 960px) { + .spectrum-Site-content { + max-block-size: calc(100% - var(--spectrum-spacing-700)); + } + .spectrum-Site-overlay { + opacity: 0; + transition: opacity var(--spectrum-animation-duration-200) ease-out 0ms; + } + .spectrum-Site-overlay.is-open { + pointer-events: auto; + display: block; + opacity: 1; + transition: opacity var(--spectrum-animation-duration-200) ease-in 0ms; + } + .spectrum-Site-sideBar { + position: fixed; + z-index: 4; + inset-block-start: 0; + inset-block-end: 0; + inset-inline-end: 100%; + transform: translateX(0); + block-size: 100vh; + transition: transform var(--spectrum-animation-duration-200) ease-in-out; + } + .spectrum-Site-sideBar.is-open { + transform: translateX(100%); + } + .spectrum-Site-header { + display: block; + } + .spectrum-Site-page { + padding-inline-start: var(--spectrum-spacing-300); + padding-inline-end: var(--spectrum-spacing-300); + } + .spectrum-Site-hero { + max-inline-size: 100%; + } + .spectrum-Site-heroHeading h1.spectrum-Heading1--display { + font-size: var(--spectrum-font-size-800); + } + .spectrum-Site-mainContainer { + padding-inline: var(--spectrum-spacing-400); + } + .spectrum-CSSComponent { + margin-block: var(--spectrum-spacing-100); + margin-inline: auto; + padding-inline: 0 var(--spectrum-spacing-600); + } + .spectrum-CSSComponent-description, + .spectrum-CSSExample { + margin-block-end: var(--spectrum-spacing-200); + } + .spectrum-CSSExample-example { + padding: var(--spectrum-spacing-200); + } + .spectrum-CSSComponent-header { + margin-block-end: var(--spectrum-spacing-200); + } + .spectrum-CSSComponent-statusContainer, + .spectrum-CSSComponent-version { + display: none; + } + .spectrum-CSSComponent-title { + font-size: var(--spectrum-font-size-500); + } +} +.is-scrollable, +.u-scrollable { + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.is-scrollable::-webkit-scrollbar, +.u-scrollable::-webkit-scrollbar { + inline-size: 10px; + block-size: 10px; +} +.is-scrollable::-webkit-scrollbar-thumb, +.u-scrollable::-webkit-scrollbar-thumb { + inline-size: 8px; + block-size: 8px; + background-color: var(--spectrum-gray-75); + background-clip: padding-box; + border-block: 2px solid rgba(0, 0, 0, 0); + border-radius: 8px; +} +.is-scrollable::-webkit-scrollbar-track, +.is-scrollable::-webkit-scrollbar-track-piece, +.u-scrollable::-webkit-scrollbar-track, +.u-scrollable::-webkit-scrollbar-track-piece { + background-color: var(--spectrum-gray-75); +} +@media (hover: hover) { + .spectrum-CSSComponent-link:hover { + -webkit-text-decoration: underline; + text-decoration: underline; + } + .is-scrollable:hover::-webkit-scrollbar-thumb, + .u-scrollable:hover::-webkit-scrollbar-thumb { + background-color: var(--spectrum-gray-400); + } +} +/*# sourceMappingURL=components/site/index.css.map */ diff --git a/components/site/metadata.json b/components/site/metadata.json new file mode 100644 index 0000000000..ff7b6c3aaa --- /dev/null +++ b/components/site/metadata.json @@ -0,0 +1,138 @@ +{ + "selectors": [ + ".is-scrollable,\n.u-scrollable", + ".is-scrollable::-webkit-scrollbar,\n.u-scrollable::-webkit-scrollbar", + ".is-scrollable::-webkit-scrollbar-thumb,\n.u-scrollable::-webkit-scrollbar-thumb", + ".is-scrollable::-webkit-scrollbar-track,\n.is-scrollable::-webkit-scrollbar-track-piece,\n.u-scrollable::-webkit-scrollbar-track,\n.u-scrollable::-webkit-scrollbar-track-piece", + ".is-scrollable:hover::-webkit-scrollbar-thumb,\n\t.u-scrollable:hover::-webkit-scrollbar-thumb", + ".spectrum--large .spectrum-Site-logo", + ".spectrum-Button.spectrum-CSSExample-overlayShowButton", + ".spectrum-CSS-switcherContainer", + ".spectrum-CSSComponent", + ".spectrum-CSSComponent-cardImage", + ".spectrum-CSSComponent-description", + ".spectrum-CSSComponent-description,\n\t.spectrum-CSSExample", + ".spectrum-CSSComponent-detailsTable", + ".spectrum-CSSComponent-detailsTable th", + ".spectrum-CSSComponent-header", + ".spectrum-CSSComponent-heading", + ".spectrum-CSSComponent-link", + ".spectrum-CSSComponent-link:focus-visible", + ".spectrum-CSSComponent-link:hover", + ".spectrum-CSSComponent-resource--adobe,\n.spectrum-CSSComponent-resources a[href*=\"spectrum.adobe.com\"] .spectrum-Card-preview", + ".spectrum-CSSComponent-resource--github,\n.spectrum-CSSComponent-resources a[href*=\"github.com\"] .spectrum-Card-preview", + ".spectrum-CSSComponent-resource--npm,\n.spectrum-CSSComponent-resources a[href*=\"npmjs.com\"] .spectrum-Card-preview", + ".spectrum-CSSComponent-resources", + ".spectrum-CSSComponent-resources .spectrum-Card", + ".spectrum-CSSComponent-sectionHeading", + ".spectrum-CSSComponent-status,\n.spectrum-CSSExample-status", + ".spectrum-CSSComponent-status:before", + ".spectrum-CSSComponent-statusContainer", + ".spectrum-CSSComponent-statusContainer > *", + ".spectrum-CSSComponent-statusContainer,\n\t.spectrum-CSSComponent-version", + ".spectrum-CSSComponent-switcher", + ".spectrum-CSSComponent-title", + ".spectrum-CSSComponent-version", + ".spectrum-CSSExample", + ".spectrum-CSSExample-container", + ".spectrum-CSSExample-dialog", + ".spectrum-CSSExample-example", + ".spectrum-CSSExample-example,\n.spectrum-CSSExample-markup", + ".spectrum-CSSExample-example--overlay", + ".spectrum-CSSExample-example--spacious", + ".spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticBlack)", + ".spectrum-CSSExample-example:has(> .spectrum-CSSExample-example-staticWhite)", + ".spectrum-CSSExample-heading", + ".spectrum-CSSExample-markup", + ".spectrum-CSSExample-markup pre code", + ".spectrum-CSSExample-markup.is-open", + ".spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle", + ".spectrum-CSSExample-markup.is-open .spectrum-CSSExample-markupToggle:before", + ".spectrum-CSSExample-markupToggle", + ".spectrum-CSSExample-markupToggle + pre", + ".spectrum-CSSExample-modal", + ".spectrum-CSSExample-oldAPI", + ".spectrum-CSSExample-status", + ".spectrum-CenteredImage", + ".spectrum-CodeBlock", + ".spectrum-Examples,\n.spectrum-Examples-itemGroup", + ".spectrum-Examples--vertical", + ".spectrum-Examples-item .spectrum-Examples-itemHeading", + ".spectrum-HomeCard", + ".spectrum-HomeCard-content", + ".spectrum-HomeCard-image", + ".spectrum-HomeCard-image .spectrum-Icon", + ".spectrum-HomeCards", + ".spectrum-Site", + ".spectrum-Site-bottomNav", + ".spectrum-Site-content", + ".spectrum-Site-footerContainer", + ".spectrum-Site-header", + ".spectrum-Site-header .spectrum-Site-sideBarHeader", + ".spectrum-Site-header,\n.spectrum-Site-mainContent,\n.spectrum-Site-sideBar", + ".spectrum-Site-hero", + ".spectrum-Site-hero,\n.spectrum-Site-page", + ".spectrum-Site-heroHeading", + ".spectrum-Site-heroHeading .spectrum-Heading", + ".spectrum-Site-heroHeading h1.spectrum-Heading1--display", + ".spectrum-Site-heroImage", + ".spectrum-Site-logo", + ".spectrum-Site-mainContainer", + ".spectrum-Site-mainContent", + ".spectrum-Site-nav", + ".spectrum-Site-noSearchResults", + ".spectrum-Site-overlay", + ".spectrum-Site-overlay.is-open", + ".spectrum-Site-page", + ".spectrum-Site-search", + ".spectrum-Site-searchResults", + ".spectrum-Site-sideBar", + ".spectrum-Site-sideBar.is-open", + ".spectrum-Site-sideBarHeader", + ".spectrum-Site-sideBarHeader:focus", + ".spectrum-Site-sideBarHeader:focus h2", + ":root" + ], + "mods": [], + "spectrum": [ + "--spectrum-animation-duration-200", + "--spectrum-background-layer-1-color", + "--spectrum-black", + "--spectrum-body-color", + "--spectrum-border-width-100", + "--spectrum-component-height-300", + "--spectrum-component-to-menu-extra-large", + "--spectrum-corner-radius-100", + "--spectrum-divider-thickness-small", + "--spectrum-docs-static-black-background-color", + "--spectrum-docs-static-white-background-color", + "--spectrum-font-size-50", + "--spectrum-font-size-500", + "--spectrum-font-size-800", + "--spectrum-gray-100", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-75", + "--spectrum-negative-color-800", + "--spectrum-regular-font-weight", + "--spectrum-seafoam-100", + "--spectrum-seafoam-900", + "--spectrum-spacing-100", + "--spectrum-spacing-1000", + "--spectrum-spacing-200", + "--spectrum-spacing-300", + "--spectrum-spacing-400", + "--spectrum-spacing-50", + "--spectrum-spacing-500", + "--spectrum-spacing-600", + "--spectrum-spacing-700", + "--spectrum-spacing-800", + "--spectrum-spacing-900", + "--spectrum-transparent-black-200", + "--spectrum-transparent-black-300", + "--spectrum-transparent-black-400" + ], + "system": [], + "a11y": [] +} diff --git a/components/site/package.json b/components/site/package.json new file mode 100644 index 0000000000..908994fae9 --- /dev/null +++ b/components/site/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/site", + "version": "5.1.1", + "description": "The Spectrum CSS Site component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/site" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/slider/index-base.css b/components/slider/index-base.css new file mode 100644 index 0000000000..e1c73f138e --- /dev/null +++ b/components/slider/index-base.css @@ -0,0 +1,552 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Slider { + --spectrum-slider-font-size: var(--spectrum-font-size-75); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-medium); + --spectrum-slider-control-height: var(--spectrum-component-height-100); + --spectrum-slider-handle-border-radius: var(--spectrum-corner-radius-200); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-medium); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-medium); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 18px; +} +.spectrum-Slider:dir(rtl), +[dir="rtl"] .spectrum-Slider { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Slider--sizeS { + --spectrum-slider-font-size: var(--spectrum-font-size-75); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-small); + --spectrum-slider-control-height: var(--spectrum-component-height-75); + --spectrum-slider-handle-border-radius: var(--spectrum-corner-radius-200); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-small); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-small); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-100); +} +.spectrum-Slider--sizeL { + --spectrum-slider-font-size: var(--spectrum-font-size-100); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-large); + --spectrum-slider-control-height: var(--spectrum-component-height-200); + --spectrum-slider-handle-border-radius: calc(var(--spectrum-corner-radius-200) * 4); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-large); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-large); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 18px; +} +.spectrum-Slider--sizeXL { + --spectrum-slider-font-size: var(--spectrum-font-size-200); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-extra-large); + --spectrum-slider-control-height: var(--spectrum-component-height-300); + --spectrum-slider-handle-border-radius: calc(var(--spectrum-corner-radius-200) * 4); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-extra-large); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-extra-large); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 22px; +} +.spectrum-Slider { + --spectrum-slider-cjk-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-slider-min-size: var(--spectrum-spacing-900); + --spectrum-slider-track-corner-radius: var(--spectrum-corner-radius-75); + --spectrum-slider-label-margin-start: var(--spectrum-spacing-300); + --spectrum-slider-handle-border-width: var(--spectrum-border-width-200); + --spectrum-slider-handle-margin-left: calc(var(--spectrum-slider-handle-size) / -2); + --spectrum-slider-controls-margin: calc(var(--spectrum-slider-handle-size) / 2); + --spectrum-slider-track-margin-offset: calc(var(--spectrum-slider-controls-margin) * -1); + --spectrum-slider-track-middle-handleoffset: calc(var(--spectrum-slider-handle-gap) + var(--spectrum-slider-handle-size) / 2); + --spectrum-slider-input-top-size: calc(var(--spectrum-slider-handle-size) / -2 / 4); + --spectrum-slider-track-fill-thickness: var(--spectrum-slider-track-thickness); + --spectrum-slider-tick-mark-width: var(--spectrum-border-width-200); + --spectrum-slider-tick-mark-border-radius: 2px; + --spectrum-slider-tick-handle-background-color: var(--spectrum-gray-100); + --spectrum-slider-track-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-track-fill-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-handle-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-slider-label-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-slider-tick-label-color: var(--spectrum-neutral-content-color-default); + --spectrum-slider-label-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-slider-tick-mark-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-ramp-handle-border-color-active: var(--spectrum-gray-100); + --spectrum-slider-input-left: calc(var(--spectrum-slider-handle-margin-left) / 4); + --spectrum-slider-track-handleoffset: var(--spectrum-slider-handle-gap); + --spectrum-slider-range-track-reset: 0; + position: relative; + z-index: 1; + display: block; + min-inline-size: var(--mod-slider-min-size, var(--spectrum-slider-min-size)); + -webkit-user-select: none; + user-select: none; +} +.spectrum-Slider--sideLabel { + display: flex; + align-items: center; +} +.spectrum-Slider--sideLabel .spectrum-Slider-labelContainer, +.spectrum-Slider--sideLabel .spectrum-Slider-labelContainer + .spectrum-Slider-controls { + margin-block-start: 0; +} +.spectrum-Slider--sideLabel .spectrum-Slider-controls { + margin-inline-end: var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)); +} +.spectrum-Slider--sideLabel .spectrum-Slider-value { + margin-inline-start: var(--mod-slider-value-side-padding-inline, var(--spectrum-slider-value-side-padding-inline)); + inline-size: var(--mod-slider-value-inline-size, var(--spectrum-slider-value-inline-size)); + text-align: start; +} +.spectrum-Slider-controls { + display: inline-block; + box-sizing: border-box; + cursor: pointer; + position: relative; + z-index: auto; + inline-size: calc(100% - var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) * 2); + margin-inline-start: var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)); + block-size: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); + vertical-align: top; +} +.spectrum-Slider-labelContainer + .spectrum-Slider-controls { + margin-block-start: calc(var(--spectrum-slider-control-to-field-label) * -1); +} +.spectrum-Slider--tick { + margin-block-end: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); +} +.spectrum-Slider-fill, +.spectrum-Slider-track { + block-size: var(--mod-slider-track-fill-thickness, var(--spectrum-slider-track-fill-thickness)); + box-sizing: border-box; + position: absolute; + z-index: 1; + inset-block-start: calc(var(--mod-slider-control-height, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-track-fill-thickness, var(--spectrum-slider-track-fill-thickness)) / 2); + inset-inline-start: 0; + inset-inline-end: auto; + pointer-events: none; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: var(--mod-slider-handle-gap, var(--spectrum-slider-handle-gap)); + margin-inline-start: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-fill:before, +.spectrum-Slider-track:before { + content: ""; + display: block; + block-size: 100%; + border-start-start-radius: 0; + border-end-start-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Slider-track:first-of-type:before { + border-start-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-track:last-of-type:before { + border-start-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-track ~ .spectrum-Slider-track { + inset-inline-start: auto; + inset-inline-end: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + padding-block: 0; + padding-inline-start: var(--mod-slider-track-handleoffset, var(--spectrum-slider-track-handleoffset)); + padding-inline-end: 0; + margin-inline-start: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + margin-inline-end: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track ~ .spectrum-Slider-track { + padding-inline: var(--mod-slider-track-middle-handleoffset, var(--spectrum-slider-track-middle-handleoffset)) var(--mod-slider-track-middle-handleoffset, var(--spectrum-slider-track-middle-handleoffset)); + inset-inline: auto; + margin-inline: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); +} +.spectrum-Slider-fill { + margin-inline-start: 0; + padding-block: 0; + padding-inline-start: calc(var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) + var(--spectrum-slider-handle-gap, var(--spectrum-slider-handle-gap))); + padding-inline-end: 0; +} +.spectrum-Slider-fill--right { + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: calc(var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) + var(--spectrum-slider-handle-gap, var(--spectrum-slider-handle-gap))); +} +.spectrum-Slider--range .spectrum-Slider-value { + -webkit-user-select: text; + user-select: text; +} +.spectrum-Slider--range .spectrum-Slider-track:first-of-type { + padding-inline-start: 0; + padding-inline-end: var(--mod-slider-track-handleoffset, var(--spectrum-slider-track-handleoffset)); + inset-inline-start: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + inset-inline-end: auto; + margin-inline-start: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track:first-of-type:before { + border-start-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider--range .spectrum-Slider-track:last-of-type { + padding-inline-start: var(--spectrum-slider-track-handleoffset); + padding-inline-end: 0; + inset-inline-start: auto; + inset-inline-end: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + margin-inline-end: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track:last-of-type:before { + border-start-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-ramp { + margin-block-start: calc(var(--mod-slider-ramp-track-height, var(--spectrum-slider-ramp-track-height)) / 2); + block-size: var(--mod-slider-ramp-track-height, var(--spectrum-slider-ramp-track-height)); + position: absolute; + inset-inline-start: var(--spectrum-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); + inset-inline-end: var(--spectrum-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-ramp svg { + inline-size: 100%; + block-size: 100%; + transform: var(--spectrum-logical-rotation); +} +.spectrum-Slider-handle { + position: absolute; + inset-inline-start: 0; + z-index: 2; + display: inline-block; + box-sizing: border-box; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + inset-block-start: calc(var(--mod-slider-control-height, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) / 2); + margin-block: 0; + margin-inline: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) / -2) 0; + border-width: var(--mod-slider-handle-border-width, var(--spectrum-slider-handle-border-width)); + border-style: solid; + border-radius: var(--mod-slider-handle-border-radius, var(--spectrum-slider-handle-border-radius)); + transition: border-width var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + outline: none; +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle:active { + border-width: var(--mod-slider-handle-border-width-down, var(--spectrum-slider-handle-border-width-down)); +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle.is-focused, +.spectrum-Slider-handle.is-tophandle, +.spectrum-Slider-handle:active { + z-index: 3; +} +.spectrum-Slider-handle:before { + content: ""; + display: block; + position: absolute; + inset-inline-start: 50%; + inset-block-start: 50%; + transition: + box-shadow var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + inline-size var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + block-size var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + border-radius: 100%; + transform: translate(-50%, -50%); +} +.spectrum-Slider:dir(rtl) .spectrum-Slider-handle:before, +[dir="rtl"] .spectrum-Slider .spectrum-Slider-handle:before { + transform: translate(50%, -50%); +} +.spectrum-Slider-handle.is-focused:before { + inline-size: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); + block-size: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); +} +.spectrum-Slider-input { + margin: 0; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + padding: 0; + position: absolute; + inset-block-start: var(--mod-slider-input-top-size, var(--spectrum-slider-input-top-size)); + inset-inline-start: var(--mod-slider-input-left, var(--spectrum-slider-input-left)); + overflow: hidden; + opacity: 0.000001; + cursor: default; + appearance: none; + border: 0; + pointer-events: none; +} +.spectrum-Slider-input:focus { + outline: none; +} +.spectrum-Slider-labelContainer { + display: flex; + align-items: center; + position: relative; + inline-size: auto; + font-size: var(--mod-slider-font-size, var(--spectrum-slider-font-size)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + margin-block-start: var(--mod-slider-label-top-to-text, var(--spectrum-slider-label-top-to-text)); +} +.spectrum-Slider-labelContainer:lang(ja), +.spectrum-Slider-labelContainer:lang(ko), +.spectrum-Slider-labelContainer:lang(zh) { + line-height: var(--mod-slider-cjk-line-height, var(--spectrum-slider-cjk-line-height)); +} +.spectrum-Slider-label { + padding-inline-start: 0; + flex-grow: 1; + font-size: var(--mod-slider-font-size, var(--spectrum-slider-font-size)); +} +.spectrum-Slider-value { + flex-grow: 0; + padding-inline-end: 0; + cursor: default; + font-feature-settings: "tnum"; + text-align: end; + margin-inline-start: var(--mod-slider-label-margin-start, var(--spectrum-slider-label-margin-start)); +} +.spectrum-Slider--tick .spectrum-Slider-handle { + background-color: var(--highcontrast-slider-tick-handle-background-color, var(--mod-slider-tick-handle-background-color, var(--spectrum-slider-tick-handle-background-color))); +} +.spectrum-Slider--tick .spectrum-Slider-controls { + margin-block-start: calc(var(--spectrum-text-to-visual-75) - var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) / 2 - var(--mod-slider-track-thickness, var(--spectrum-slider-track-thickness)) / 2); +} +.spectrum-Slider--tick .spectrum-Slider-tickLabel { + margin-block-start: calc(var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) + var(--spectrum-text-to-visual-75)); +} +.spectrum-Slider-ticks { + display: flex; + justify-content: space-between; + z-index: 0; + margin-inline: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-ticks ~ .spectrum-Slider-handleContainer .spectrum-Slider-handle { + background: var(--mod-slider-ticks-handle-background-color, var(--spectrum-slider-ticks-handle-background-color)); +} +.spectrum-Slider-tick { + position: relative; + inset-block-start: calc(var(--mod-slider-track-thickness, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) / 2); +} +.spectrum-Slider-tick, +.spectrum-Slider-tick:after { + inline-size: var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)); +} +.spectrum-Slider-tick:after { + display: block; + position: absolute; + inset-block-start: 0; + inset-inline-start: calc(50% - var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / 2); + content: ""; + block-size: var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)); + border-radius: var(--mod-slider-tick-mark-border-radius, var(--spectrum-slider-tick-mark-border-radius)); +} +.spectrum-Slider-tick .spectrum-Slider-tickLabel { + display: flex; + align-items: center; + justify-content: center; + font-size: var(--mod-font-size-75, var(--spectrum-font-size-75)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + color: var(--highcontrast-slider-label-text-color, var(--mod-slider-tick-label-color, var(--spectrum-slider-tick-label-color))); +} +.spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel, +.spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel { + display: block; + position: absolute; + margin-inline: 0; +} +.spectrum-Slider-tick:first-of-type { + inset-inline-start: calc(var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / -2); +} +.spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel { + inset-inline-start: 0; +} +.spectrum-Slider-tick:last-of-type { + inset-inline-end: calc(var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / -2); +} +.spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel { + inset-inline-end: 0; +} +.spectrum-Slider-handleContainer, +.spectrum-Slider-trackContainer { + inline-size: calc(100% + var(--spectrum-slider-handle-size)); + position: absolute; + inset-block-start: 0; + margin-inline-start: calc(var(--spectrum-slider-handle-size) / 2 * -1); +} +.spectrum-Slider-trackContainer { + block-size: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); + overflow: hidden; +} +.spectrum-Slider-track:before { + background: var(--highcontrast-slider-track-color-static, var(--mod-slider-track-color, var(--spectrum-slider-track-color))); +} +.spectrum-Slider-track:not(:has(~ .spectrum-Slider-fill)):before { + background: var(--highcontrast-slider-track-color, var(--mod-slider-track-color, var(--spectrum-slider-track-color))); +} +.spectrum-Slider-labelContainer { + color: var(--highcontrast-slider-label-text-color, var(--mod-slider-label-text-color, var(--spectrum-slider-label-text-color))); +} +.spectrum-Slider--filled .spectrum-Slider-track:first-child:before, +.spectrum-Slider-fill:before { + background: var(--highcontrast-slider-filled-track-fill-color, var(--mod-slider-track-fill-color, var(--spectrum-slider-track-fill-color))); +} +.spectrum-Slider-ramp path { + fill: var(--highcontrast-slider-ramp-track-color, var(--mod-slider-ramp-track-color, var(--spectrum-slider-ramp-track-color))); +} +.spectrum-Slider-handle { + border-color: var(--highcontrast-slider-handle-border-color, var(--mod-slider-handle-border-color, var(--spectrum-slider-handle-border-color))); + background: var(--highcontrast-slider-handle-background-color, var(--mod-slider-handle-background-color, var(--spectrum-slider-handle-background-color))); +} +.spectrum-Slider-handle.is-focused { + border-color: var(--highcontrast-slider-handle-border-color-key-focus, var(--mod-slider-handle-border-color-key-focus, var(--spectrum-slider-handle-border-color-key-focus))); +} +.spectrum-Slider-handle.is-focused:before { + box-shadow: 0 0 0 var(--spectrum-focus-indicator-thickness) var(--highcontrast-slider-handle-focus-ring-color-key-focus, var(--mod-slider-handle-focus-ring-color-key-focus, var(--spectrum-slider-handle-focus-ring-color-key-focus))); +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle:active { + border-color: var(--highcontrast-slider-handle-border-color-down, var(--mod-slider-handle-border-color-down, var(--spectrum-slider-handle-border-color-down))); +} +.spectrum-Slider--ramp .spectrum-Slider-handle { + box-shadow: 0 0 0 var(--spectrum-slider-handle-gap) var(--highcontrast-slider-ramp-handle-border-color-active, var(--mod-sectrum-slider-ramp-handle-border-color-active, var(--spectrum-slider-ramp-handle-border-color-active))); + background: var(--mod-slider-ramp-handle-background-color, var(--highcontrast-slider-ramp-handle-background-color, var(--spectrum-slider-ramp-handle-background-color))); +} +.spectrum-Slider-input { + background: transparent; +} +.spectrum-Slider-tick:after { + background-color: var(--highcontrast-slider-tick-mark-color, var(--mod-slider-tick-mark-color, var(--spectrum-slider-tick-mark-color))); +} +.spectrum-Slider-handle.is-dragged { + border-color: var(--highcontrast-slider-handle-border-color-down, var(--mod-slider-handle-border-color-down, var(--spectrum-slider-handle-border-color-down))); + background: var(--highcontrast-slider-handle-background-color, var(--mod-slider-handle-background-color, var(--spectrum-slider-handle-background-color))); +} +.spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before { + background: var(--highcontrast-slider-filled-track-fill-color, var(--mod-slider-track-fill-color, var(--spectrum-slider-track-fill-color))); +} +.spectrum-Slider.is-disabled, +.spectrum-Slider.is-disabled .spectrum-Slider-controls { + cursor: default; +} +.spectrum-Slider.is-disabled .spectrum-Slider-labelContainer, +.spectrum-Slider.is-disabled .spectrum-Slider-tickLabel { + color: var(--highcontrast-slider-label-text-color-disabled, var(--mod-slider-label-text-color-disabled, var(--spectrum-slider-label-text-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-handle { + border-color: var(--highcontrast-slider-handle-border-color-disabled, var(--mod-slider-handle-border-color-disabled, var(--spectrum-slider-handle-border-color-disabled))); + background: var(--highcontrast-slider-handle-disabled-background-color, var(--mod-slider-handle-disabled-background-color, var(--spectrum-slider-handle-disabled-background-color))); + cursor: default; + pointer-events: none; +} +.spectrum-Slider.is-disabled .spectrum-Slider-handle:active { + border-color: var(--highcontrast-disabled-border-color, var(--mod-disabled-border-color, var(--spectrum-disabled-border-color))); + background: var(--highcontrast-slider-handle-background-color-disabled, var(--mod-slider-handle-background-color-disabled, var(--spectrum-slider-handle-background-color-disabled))); +} +@media (hover: hover) { + .spectrum-Slider-handle:hover { + border-color: var(--highcontrast-slider-handle-border-color-hover, var(--mod-slider-handle-border-color-hover, var(--spectrum-slider-handle-border-color-hover))); + } + .spectrum-Slider.is-disabled .spectrum-Slider-handle:hover { + border-color: var(--highcontrast-disabled-border-color, var(--mod-disabled-border-color, var(--spectrum-disabled-border-color))); + background: var(--highcontrast-slider-handle-background-color-disabled, var(--mod-slider-handle-background-color-disabled, var(--spectrum-slider-handle-background-color-disabled))); + } +} +.spectrum-Slider.is-disabled .spectrum-Slider-track:before { + background: var(--highcontrast-slider-track-color-disabled, var(--mod-slider-track-color-disabled, var(--spectrum-slider-track-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-fill:before, +.spectrum-Slider.is-disabled.spectrum-Slider--filled .spectrum-Slider-track:first-child:before { + background: var(--highcontrast-slider-track-fill-color-disabled, var(--mod-slider-track-fill-color-disabled, var(--spectrum-slider-track-fill-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-ramp path { + fill: var(--highcontrast-slider-ramp-track-color-disabled, var(--mod-slider-ramp-track-color-disabled, var(--spectrum-slider-ramp-track-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-tick:after { + background-color: var(--highcontrast-slider-tick-mark-color-disabled, var(--mod-slider-tick-mark-color-disabled, var(--spectrum-slider-tick-mark-color-disabled))); +} +.spectrum-Slider.is-disabled.spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before { + background: var(--highcontrast-slider-track-color-disabled, var(--mod-slider-track-color-disabled, var(--spectrum-slider-track-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Slider { + --highcontrast-slider-track-color: ButtonText; + --highcontrast-slider-track-color-disabled: GrayText; + --highcontrast-slider-track-color-static: ButtonText; + --highcontrast-slider-track-fill-color: ButtonText; + --highcontrast-slider-track-fill-color-disabled: GrayText; + --highcontrast-slider-filled-track-fill-color: Highlight; + --highcontrast-slider-ramp-track-color: ButtonText; + --highcontrast-slider-ramp-track-color-disabled: GrayText; + --highcontrast-slider-tick-mark-color: ButtonText; + --highcontrast-slider-tick-mark-color-disabled: GrayText; + --highcontrast-slider-handle-border-color: ButtonText; + --highcontrast-slider-handle-border-color-hover: Highlight; + --highcontrast-slider-handle-border-color-down: Highlight; + --highcontrast-slider-handle-border-color-key-focus: Highlight; + --highcontrast-slider-handle-border-color-disabled: GrayText; + --highcontrast-slider-handle-focus-ring-color-key-focus: CanvasText; + --highcontrast-slider-handle-background-color: ButtonFace; + --highcontrast-slider-handle-background-color-disabled: GrayText; + --highcontrast-slider-handle-disabled-background-color: GrayText; + --highcontrast-slider-ramp-handle-border-color-active: ButtonFace; + --highcontrast-slider-ramp-handle-background-color: ButtonFace; + --highcontrast-slider-label-text-color: CanvasText; + --highcontrast-slider-label-text-color-disabled: GrayText; + } + .spectrum-Slider .spectrum-Slider-handle.is-focused:before, + .spectrum-Slider.spectrum-Slider--ramp .spectrum-Slider-handle { + forced-color-adjust: none; + } + .js-focus-within .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls[focus-within], + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls.is-focused, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:active, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:focus-within, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range).js-focus-within .spectrum-Slider-controls[focus-within] { + --highcontrast-slider-track-fill-color: Highlight; + --highcontrast-slider-track-color: Highlight; + --highcontrast-slider-handle-border-color: Highlight; + --highcontrast-slider-ramp-track-color: Highlight; + --highcontrast-slider-tick-mark-color: Highlight; + } + @media (hover: hover) { + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:hover { + --highcontrast-slider-track-fill-color: Highlight; + --highcontrast-slider-track-color: Highlight; + --highcontrast-slider-handle-border-color: Highlight; + --highcontrast-slider-ramp-track-color: Highlight; + --highcontrast-slider-tick-mark-color: Highlight; + } + } + .spectrum-Slider.is-disabled .spectrum-Slider-ramp + .spectrum-Slider-handle { + fill: ButtonFace; + background-color: ButtonFace; + } +} +.spectrum-Slider { + --spectrum-slider-track-color: var(--system-spectrum-slider-track-color); + --spectrum-slider-track-fill-color: var(--system-spectrum-slider-track-fill-color); + --spectrum-slider-ramp-track-color: var(--system-spectrum-slider-ramp-track-color); + --spectrum-slider-ramp-track-color-disabled: var(--system-spectrum-slider-ramp-track-color-disabled); + --spectrum-slider-handle-background-color: var(--system-spectrum-slider-handle-background-color); + --spectrum-slider-handle-background-color-disabled: var(--system-spectrum-slider-handle-background-color-disabled); + --spectrum-slider-ramp-handle-background-color: var(--system-spectrum-slider-ramp-handle-background-color); + --spectrum-slider-ticks-handle-background-color: var(--system-spectrum-slider-ticks-handle-background-color); + --spectrum-slider-handle-border-color: var(--system-spectrum-slider-handle-border-color); + --spectrum-slider-handle-disabled-background-color: var(--system-spectrum-slider-handle-disabled-background-color); + --spectrum-slider-tick-mark-color: var(--system-spectrum-slider-tick-mark-color); + --spectrum-slider-handle-border-color-hover: var(--system-spectrum-slider-handle-border-color-hover); + --spectrum-slider-handle-border-color-down: var(--system-spectrum-slider-handle-border-color-down); + --spectrum-slider-handle-border-color-key-focus: var(--system-spectrum-slider-handle-border-color-key-focus); + --spectrum-slider-handle-focus-ring-color-key-focus: var(--system-spectrum-slider-handle-focus-ring-color-key-focus); +} +/*# sourceMappingURL=components/slider/index.css.map */ diff --git a/components/slider/index-theme.css b/components/slider/index-theme.css new file mode 100644 index 0000000000..9cd72773e5 --- /dev/null +++ b/components/slider/index-theme.css @@ -0,0 +1,48 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-slider-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-700); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-400); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: transparent; + --system-spectrum-slider-handle-background-color-disabled: transparent; + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-700); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-300); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-800); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +.spectrum--express { + --system-spectrum-slider-track-color: var(--spectrum-gray-200); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-600); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-background-color-disabled: var(--spectrum-gray-50); + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-800); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-200); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +/*# sourceMappingURL=components/slider/themes/express.css.map */ diff --git a/components/slider/index-vars.css b/components/slider/index-vars.css new file mode 100644 index 0000000000..0fa0d4c2f0 --- /dev/null +++ b/components/slider/index-vars.css @@ -0,0 +1,586 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-slider-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-700); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-400); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: transparent; + --system-spectrum-slider-handle-background-color-disabled: transparent; + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-700); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-300); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-800); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +.spectrum--express { + --system-spectrum-slider-track-color: var(--spectrum-gray-200); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-600); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-background-color-disabled: var(--spectrum-gray-50); + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-800); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-200); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +.spectrum-Slider { + --spectrum-slider-font-size: var(--spectrum-font-size-75); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-medium); + --spectrum-slider-control-height: var(--spectrum-component-height-100); + --spectrum-slider-handle-border-radius: var(--spectrum-corner-radius-200); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-medium); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-medium); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 18px; +} +.spectrum-Slider:dir(rtl), +[dir="rtl"] .spectrum-Slider { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Slider--sizeS { + --spectrum-slider-font-size: var(--spectrum-font-size-75); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-small); + --spectrum-slider-control-height: var(--spectrum-component-height-75); + --spectrum-slider-handle-border-radius: var(--spectrum-corner-radius-200); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-small); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-small); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-100); +} +.spectrum-Slider--sizeL { + --spectrum-slider-font-size: var(--spectrum-font-size-100); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-large); + --spectrum-slider-control-height: var(--spectrum-component-height-200); + --spectrum-slider-handle-border-radius: calc(var(--spectrum-corner-radius-200) * 4); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-large); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-large); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 18px; +} +.spectrum-Slider--sizeXL { + --spectrum-slider-font-size: var(--spectrum-font-size-200); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-extra-large); + --spectrum-slider-control-height: var(--spectrum-component-height-300); + --spectrum-slider-handle-border-radius: calc(var(--spectrum-corner-radius-200) * 4); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-extra-large); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-extra-large); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 22px; +} +.spectrum-Slider { + --spectrum-slider-cjk-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-slider-min-size: var(--spectrum-spacing-900); + --spectrum-slider-track-corner-radius: var(--spectrum-corner-radius-75); + --spectrum-slider-label-margin-start: var(--spectrum-spacing-300); + --spectrum-slider-handle-border-width: var(--spectrum-border-width-200); + --spectrum-slider-handle-margin-left: calc(var(--spectrum-slider-handle-size) / -2); + --spectrum-slider-controls-margin: calc(var(--spectrum-slider-handle-size) / 2); + --spectrum-slider-track-margin-offset: calc(var(--spectrum-slider-controls-margin) * -1); + --spectrum-slider-track-middle-handleoffset: calc(var(--spectrum-slider-handle-gap) + var(--spectrum-slider-handle-size) / 2); + --spectrum-slider-input-top-size: calc(var(--spectrum-slider-handle-size) / -2 / 4); + --spectrum-slider-track-fill-thickness: var(--spectrum-slider-track-thickness); + --spectrum-slider-tick-mark-width: var(--spectrum-border-width-200); + --spectrum-slider-tick-mark-border-radius: 2px; + --spectrum-slider-tick-handle-background-color: var(--spectrum-gray-100); + --spectrum-slider-track-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-track-fill-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-handle-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-slider-label-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-slider-tick-label-color: var(--spectrum-neutral-content-color-default); + --spectrum-slider-label-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-slider-tick-mark-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-ramp-handle-border-color-active: var(--spectrum-gray-100); + --spectrum-slider-input-left: calc(var(--spectrum-slider-handle-margin-left) / 4); + --spectrum-slider-track-handleoffset: var(--spectrum-slider-handle-gap); + --spectrum-slider-range-track-reset: 0; + position: relative; + z-index: 1; + display: block; + min-inline-size: var(--mod-slider-min-size, var(--spectrum-slider-min-size)); + -webkit-user-select: none; + user-select: none; +} +.spectrum-Slider--sideLabel { + display: flex; + align-items: center; +} +.spectrum-Slider--sideLabel .spectrum-Slider-labelContainer, +.spectrum-Slider--sideLabel .spectrum-Slider-labelContainer + .spectrum-Slider-controls { + margin-block-start: 0; +} +.spectrum-Slider--sideLabel .spectrum-Slider-controls { + margin-inline-end: var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)); +} +.spectrum-Slider--sideLabel .spectrum-Slider-value { + margin-inline-start: var(--mod-slider-value-side-padding-inline, var(--spectrum-slider-value-side-padding-inline)); + inline-size: var(--mod-slider-value-inline-size, var(--spectrum-slider-value-inline-size)); + text-align: start; +} +.spectrum-Slider-controls { + display: inline-block; + box-sizing: border-box; + cursor: pointer; + position: relative; + z-index: auto; + inline-size: calc(100% - var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) * 2); + margin-inline-start: var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)); + block-size: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); + vertical-align: top; +} +.spectrum-Slider-labelContainer + .spectrum-Slider-controls { + margin-block-start: calc(var(--spectrum-slider-control-to-field-label) * -1); +} +.spectrum-Slider--tick { + margin-block-end: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); +} +.spectrum-Slider-fill, +.spectrum-Slider-track { + block-size: var(--mod-slider-track-fill-thickness, var(--spectrum-slider-track-fill-thickness)); + box-sizing: border-box; + position: absolute; + z-index: 1; + inset-block-start: calc(var(--mod-slider-control-height, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-track-fill-thickness, var(--spectrum-slider-track-fill-thickness)) / 2); + inset-inline-start: 0; + inset-inline-end: auto; + pointer-events: none; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: var(--mod-slider-handle-gap, var(--spectrum-slider-handle-gap)); + margin-inline-start: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-fill:before, +.spectrum-Slider-track:before { + content: ""; + display: block; + block-size: 100%; + border-start-start-radius: 0; + border-end-start-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Slider-track:first-of-type:before { + border-start-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-track:last-of-type:before { + border-start-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-track ~ .spectrum-Slider-track { + inset-inline-start: auto; + inset-inline-end: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + padding-block: 0; + padding-inline-start: var(--mod-slider-track-handleoffset, var(--spectrum-slider-track-handleoffset)); + padding-inline-end: 0; + margin-inline-start: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + margin-inline-end: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track ~ .spectrum-Slider-track { + padding-inline: var(--mod-slider-track-middle-handleoffset, var(--spectrum-slider-track-middle-handleoffset)) var(--mod-slider-track-middle-handleoffset, var(--spectrum-slider-track-middle-handleoffset)); + inset-inline: auto; + margin-inline: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); +} +.spectrum-Slider-fill { + margin-inline-start: 0; + padding-block: 0; + padding-inline-start: calc(var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) + var(--spectrum-slider-handle-gap, var(--spectrum-slider-handle-gap))); + padding-inline-end: 0; +} +.spectrum-Slider-fill--right { + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: calc(var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) + var(--spectrum-slider-handle-gap, var(--spectrum-slider-handle-gap))); +} +.spectrum-Slider--range .spectrum-Slider-value { + -webkit-user-select: text; + user-select: text; +} +.spectrum-Slider--range .spectrum-Slider-track:first-of-type { + padding-inline-start: 0; + padding-inline-end: var(--mod-slider-track-handleoffset, var(--spectrum-slider-track-handleoffset)); + inset-inline-start: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + inset-inline-end: auto; + margin-inline-start: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track:first-of-type:before { + border-start-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider--range .spectrum-Slider-track:last-of-type { + padding-inline-start: var(--spectrum-slider-track-handleoffset); + padding-inline-end: 0; + inset-inline-start: auto; + inset-inline-end: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + margin-inline-end: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track:last-of-type:before { + border-start-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-ramp { + margin-block-start: calc(var(--mod-slider-ramp-track-height, var(--spectrum-slider-ramp-track-height)) / 2); + block-size: var(--mod-slider-ramp-track-height, var(--spectrum-slider-ramp-track-height)); + position: absolute; + inset-inline-start: var(--spectrum-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); + inset-inline-end: var(--spectrum-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-ramp svg { + inline-size: 100%; + block-size: 100%; + transform: var(--spectrum-logical-rotation); +} +.spectrum-Slider-handle { + position: absolute; + inset-inline-start: 0; + z-index: 2; + display: inline-block; + box-sizing: border-box; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + inset-block-start: calc(var(--mod-slider-control-height, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) / 2); + margin-block: 0; + margin-inline: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) / -2) 0; + border-width: var(--mod-slider-handle-border-width, var(--spectrum-slider-handle-border-width)); + border-style: solid; + border-radius: var(--mod-slider-handle-border-radius, var(--spectrum-slider-handle-border-radius)); + transition: border-width var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + outline: none; +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle:active { + border-width: var(--mod-slider-handle-border-width-down, var(--spectrum-slider-handle-border-width-down)); +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle.is-focused, +.spectrum-Slider-handle.is-tophandle, +.spectrum-Slider-handle:active { + z-index: 3; +} +.spectrum-Slider-handle:before { + content: ""; + display: block; + position: absolute; + inset-inline-start: 50%; + inset-block-start: 50%; + transition: + box-shadow var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + inline-size var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + block-size var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + border-radius: 100%; + transform: translate(-50%, -50%); +} +.spectrum-Slider:dir(rtl) .spectrum-Slider-handle:before, +[dir="rtl"] .spectrum-Slider .spectrum-Slider-handle:before { + transform: translate(50%, -50%); +} +.spectrum-Slider-handle.is-focused:before { + inline-size: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); + block-size: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); +} +.spectrum-Slider-input { + margin: 0; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + padding: 0; + position: absolute; + inset-block-start: var(--mod-slider-input-top-size, var(--spectrum-slider-input-top-size)); + inset-inline-start: var(--mod-slider-input-left, var(--spectrum-slider-input-left)); + overflow: hidden; + opacity: 0.000001; + cursor: default; + appearance: none; + border: 0; + pointer-events: none; +} +.spectrum-Slider-input:focus { + outline: none; +} +.spectrum-Slider-labelContainer { + display: flex; + align-items: center; + position: relative; + inline-size: auto; + font-size: var(--mod-slider-font-size, var(--spectrum-slider-font-size)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + margin-block-start: var(--mod-slider-label-top-to-text, var(--spectrum-slider-label-top-to-text)); +} +.spectrum-Slider-labelContainer:lang(ja), +.spectrum-Slider-labelContainer:lang(ko), +.spectrum-Slider-labelContainer:lang(zh) { + line-height: var(--mod-slider-cjk-line-height, var(--spectrum-slider-cjk-line-height)); +} +.spectrum-Slider-label { + padding-inline-start: 0; + flex-grow: 1; + font-size: var(--mod-slider-font-size, var(--spectrum-slider-font-size)); +} +.spectrum-Slider-value { + flex-grow: 0; + padding-inline-end: 0; + cursor: default; + font-feature-settings: "tnum"; + text-align: end; + margin-inline-start: var(--mod-slider-label-margin-start, var(--spectrum-slider-label-margin-start)); +} +.spectrum-Slider--tick .spectrum-Slider-handle { + background-color: var(--highcontrast-slider-tick-handle-background-color, var(--mod-slider-tick-handle-background-color, var(--spectrum-slider-tick-handle-background-color))); +} +.spectrum-Slider--tick .spectrum-Slider-controls { + margin-block-start: calc(var(--spectrum-text-to-visual-75) - var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) / 2 - var(--mod-slider-track-thickness, var(--spectrum-slider-track-thickness)) / 2); +} +.spectrum-Slider--tick .spectrum-Slider-tickLabel { + margin-block-start: calc(var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) + var(--spectrum-text-to-visual-75)); +} +.spectrum-Slider-ticks { + display: flex; + justify-content: space-between; + z-index: 0; + margin-inline: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-ticks ~ .spectrum-Slider-handleContainer .spectrum-Slider-handle { + background: var(--mod-slider-ticks-handle-background-color, var(--spectrum-slider-ticks-handle-background-color)); +} +.spectrum-Slider-tick { + position: relative; + inset-block-start: calc(var(--mod-slider-track-thickness, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) / 2); +} +.spectrum-Slider-tick, +.spectrum-Slider-tick:after { + inline-size: var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)); +} +.spectrum-Slider-tick:after { + display: block; + position: absolute; + inset-block-start: 0; + inset-inline-start: calc(50% - var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / 2); + content: ""; + block-size: var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)); + border-radius: var(--mod-slider-tick-mark-border-radius, var(--spectrum-slider-tick-mark-border-radius)); +} +.spectrum-Slider-tick .spectrum-Slider-tickLabel { + display: flex; + align-items: center; + justify-content: center; + font-size: var(--mod-font-size-75, var(--spectrum-font-size-75)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + color: var(--highcontrast-slider-label-text-color, var(--mod-slider-tick-label-color, var(--spectrum-slider-tick-label-color))); +} +.spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel, +.spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel { + display: block; + position: absolute; + margin-inline: 0; +} +.spectrum-Slider-tick:first-of-type { + inset-inline-start: calc(var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / -2); +} +.spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel { + inset-inline-start: 0; +} +.spectrum-Slider-tick:last-of-type { + inset-inline-end: calc(var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / -2); +} +.spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel { + inset-inline-end: 0; +} +.spectrum-Slider-handleContainer, +.spectrum-Slider-trackContainer { + inline-size: calc(100% + var(--spectrum-slider-handle-size)); + position: absolute; + inset-block-start: 0; + margin-inline-start: calc(var(--spectrum-slider-handle-size) / 2 * -1); +} +.spectrum-Slider-trackContainer { + block-size: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); + overflow: hidden; +} +.spectrum-Slider-track:before { + background: var(--highcontrast-slider-track-color-static, var(--mod-slider-track-color, var(--spectrum-slider-track-color))); +} +.spectrum-Slider-track:not(:has(~ .spectrum-Slider-fill)):before { + background: var(--highcontrast-slider-track-color, var(--mod-slider-track-color, var(--spectrum-slider-track-color))); +} +.spectrum-Slider-labelContainer { + color: var(--highcontrast-slider-label-text-color, var(--mod-slider-label-text-color, var(--spectrum-slider-label-text-color))); +} +.spectrum-Slider--filled .spectrum-Slider-track:first-child:before, +.spectrum-Slider-fill:before { + background: var(--highcontrast-slider-filled-track-fill-color, var(--mod-slider-track-fill-color, var(--spectrum-slider-track-fill-color))); +} +.spectrum-Slider-ramp path { + fill: var(--highcontrast-slider-ramp-track-color, var(--mod-slider-ramp-track-color, var(--spectrum-slider-ramp-track-color))); +} +.spectrum-Slider-handle { + border-color: var(--highcontrast-slider-handle-border-color, var(--mod-slider-handle-border-color, var(--spectrum-slider-handle-border-color))); + background: var(--highcontrast-slider-handle-background-color, var(--mod-slider-handle-background-color, var(--spectrum-slider-handle-background-color))); +} +.spectrum-Slider-handle.is-focused { + border-color: var(--highcontrast-slider-handle-border-color-key-focus, var(--mod-slider-handle-border-color-key-focus, var(--spectrum-slider-handle-border-color-key-focus))); +} +.spectrum-Slider-handle.is-focused:before { + box-shadow: 0 0 0 var(--spectrum-focus-indicator-thickness) var(--highcontrast-slider-handle-focus-ring-color-key-focus, var(--mod-slider-handle-focus-ring-color-key-focus, var(--spectrum-slider-handle-focus-ring-color-key-focus))); +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle:active { + border-color: var(--highcontrast-slider-handle-border-color-down, var(--mod-slider-handle-border-color-down, var(--spectrum-slider-handle-border-color-down))); +} +.spectrum-Slider--ramp .spectrum-Slider-handle { + box-shadow: 0 0 0 var(--spectrum-slider-handle-gap) var(--highcontrast-slider-ramp-handle-border-color-active, var(--mod-sectrum-slider-ramp-handle-border-color-active, var(--spectrum-slider-ramp-handle-border-color-active))); + background: var(--mod-slider-ramp-handle-background-color, var(--highcontrast-slider-ramp-handle-background-color, var(--spectrum-slider-ramp-handle-background-color))); +} +.spectrum-Slider-input { + background: transparent; +} +.spectrum-Slider-tick:after { + background-color: var(--highcontrast-slider-tick-mark-color, var(--mod-slider-tick-mark-color, var(--spectrum-slider-tick-mark-color))); +} +.spectrum-Slider-handle.is-dragged { + border-color: var(--highcontrast-slider-handle-border-color-down, var(--mod-slider-handle-border-color-down, var(--spectrum-slider-handle-border-color-down))); + background: var(--highcontrast-slider-handle-background-color, var(--mod-slider-handle-background-color, var(--spectrum-slider-handle-background-color))); +} +.spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before { + background: var(--highcontrast-slider-filled-track-fill-color, var(--mod-slider-track-fill-color, var(--spectrum-slider-track-fill-color))); +} +.spectrum-Slider.is-disabled, +.spectrum-Slider.is-disabled .spectrum-Slider-controls { + cursor: default; +} +.spectrum-Slider.is-disabled .spectrum-Slider-labelContainer, +.spectrum-Slider.is-disabled .spectrum-Slider-tickLabel { + color: var(--highcontrast-slider-label-text-color-disabled, var(--mod-slider-label-text-color-disabled, var(--spectrum-slider-label-text-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-handle { + border-color: var(--highcontrast-slider-handle-border-color-disabled, var(--mod-slider-handle-border-color-disabled, var(--spectrum-slider-handle-border-color-disabled))); + background: var(--highcontrast-slider-handle-disabled-background-color, var(--mod-slider-handle-disabled-background-color, var(--spectrum-slider-handle-disabled-background-color))); + cursor: default; + pointer-events: none; +} +.spectrum-Slider.is-disabled .spectrum-Slider-handle:active { + border-color: var(--highcontrast-disabled-border-color, var(--mod-disabled-border-color, var(--spectrum-disabled-border-color))); + background: var(--highcontrast-slider-handle-background-color-disabled, var(--mod-slider-handle-background-color-disabled, var(--spectrum-slider-handle-background-color-disabled))); +} +@media (hover: hover) { + .spectrum-Slider-handle:hover { + border-color: var(--highcontrast-slider-handle-border-color-hover, var(--mod-slider-handle-border-color-hover, var(--spectrum-slider-handle-border-color-hover))); + } + .spectrum-Slider.is-disabled .spectrum-Slider-handle:hover { + border-color: var(--highcontrast-disabled-border-color, var(--mod-disabled-border-color, var(--spectrum-disabled-border-color))); + background: var(--highcontrast-slider-handle-background-color-disabled, var(--mod-slider-handle-background-color-disabled, var(--spectrum-slider-handle-background-color-disabled))); + } +} +.spectrum-Slider.is-disabled .spectrum-Slider-track:before { + background: var(--highcontrast-slider-track-color-disabled, var(--mod-slider-track-color-disabled, var(--spectrum-slider-track-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-fill:before, +.spectrum-Slider.is-disabled.spectrum-Slider--filled .spectrum-Slider-track:first-child:before { + background: var(--highcontrast-slider-track-fill-color-disabled, var(--mod-slider-track-fill-color-disabled, var(--spectrum-slider-track-fill-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-ramp path { + fill: var(--highcontrast-slider-ramp-track-color-disabled, var(--mod-slider-ramp-track-color-disabled, var(--spectrum-slider-ramp-track-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-tick:after { + background-color: var(--highcontrast-slider-tick-mark-color-disabled, var(--mod-slider-tick-mark-color-disabled, var(--spectrum-slider-tick-mark-color-disabled))); +} +.spectrum-Slider.is-disabled.spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before { + background: var(--highcontrast-slider-track-color-disabled, var(--mod-slider-track-color-disabled, var(--spectrum-slider-track-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Slider { + --highcontrast-slider-track-color: ButtonText; + --highcontrast-slider-track-color-disabled: GrayText; + --highcontrast-slider-track-color-static: ButtonText; + --highcontrast-slider-track-fill-color: ButtonText; + --highcontrast-slider-track-fill-color-disabled: GrayText; + --highcontrast-slider-filled-track-fill-color: Highlight; + --highcontrast-slider-ramp-track-color: ButtonText; + --highcontrast-slider-ramp-track-color-disabled: GrayText; + --highcontrast-slider-tick-mark-color: ButtonText; + --highcontrast-slider-tick-mark-color-disabled: GrayText; + --highcontrast-slider-handle-border-color: ButtonText; + --highcontrast-slider-handle-border-color-hover: Highlight; + --highcontrast-slider-handle-border-color-down: Highlight; + --highcontrast-slider-handle-border-color-key-focus: Highlight; + --highcontrast-slider-handle-border-color-disabled: GrayText; + --highcontrast-slider-handle-focus-ring-color-key-focus: CanvasText; + --highcontrast-slider-handle-background-color: ButtonFace; + --highcontrast-slider-handle-background-color-disabled: GrayText; + --highcontrast-slider-handle-disabled-background-color: GrayText; + --highcontrast-slider-ramp-handle-border-color-active: ButtonFace; + --highcontrast-slider-ramp-handle-background-color: ButtonFace; + --highcontrast-slider-label-text-color: CanvasText; + --highcontrast-slider-label-text-color-disabled: GrayText; + } + .spectrum-Slider .spectrum-Slider-handle.is-focused:before, + .spectrum-Slider.spectrum-Slider--ramp .spectrum-Slider-handle { + forced-color-adjust: none; + } + .js-focus-within .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls[focus-within], + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls.is-focused, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:active, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:focus-within, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range).js-focus-within .spectrum-Slider-controls[focus-within] { + --highcontrast-slider-track-fill-color: Highlight; + --highcontrast-slider-track-color: Highlight; + --highcontrast-slider-handle-border-color: Highlight; + --highcontrast-slider-ramp-track-color: Highlight; + --highcontrast-slider-tick-mark-color: Highlight; + } + @media (hover: hover) { + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:hover { + --highcontrast-slider-track-fill-color: Highlight; + --highcontrast-slider-track-color: Highlight; + --highcontrast-slider-handle-border-color: Highlight; + --highcontrast-slider-ramp-track-color: Highlight; + --highcontrast-slider-tick-mark-color: Highlight; + } + } + .spectrum-Slider.is-disabled .spectrum-Slider-ramp + .spectrum-Slider-handle { + fill: ButtonFace; + background-color: ButtonFace; + } +} +.spectrum-Slider { + --spectrum-slider-track-color: var(--system-spectrum-slider-track-color); + --spectrum-slider-track-fill-color: var(--system-spectrum-slider-track-fill-color); + --spectrum-slider-ramp-track-color: var(--system-spectrum-slider-ramp-track-color); + --spectrum-slider-ramp-track-color-disabled: var(--system-spectrum-slider-ramp-track-color-disabled); + --spectrum-slider-handle-background-color: var(--system-spectrum-slider-handle-background-color); + --spectrum-slider-handle-background-color-disabled: var(--system-spectrum-slider-handle-background-color-disabled); + --spectrum-slider-ramp-handle-background-color: var(--system-spectrum-slider-ramp-handle-background-color); + --spectrum-slider-ticks-handle-background-color: var(--system-spectrum-slider-ticks-handle-background-color); + --spectrum-slider-handle-border-color: var(--system-spectrum-slider-handle-border-color); + --spectrum-slider-handle-disabled-background-color: var(--system-spectrum-slider-handle-disabled-background-color); + --spectrum-slider-tick-mark-color: var(--system-spectrum-slider-tick-mark-color); + --spectrum-slider-handle-border-color-hover: var(--system-spectrum-slider-handle-border-color-hover); + --spectrum-slider-handle-border-color-down: var(--system-spectrum-slider-handle-border-color-down); + --spectrum-slider-handle-border-color-key-focus: var(--system-spectrum-slider-handle-border-color-key-focus); + --spectrum-slider-handle-focus-ring-color-key-focus: var(--system-spectrum-slider-handle-focus-ring-color-key-focus); +} +/*# sourceMappingURL=components/slider/index.css.map */ diff --git a/components/slider/index.css b/components/slider/index.css new file mode 100644 index 0000000000..0fa0d4c2f0 --- /dev/null +++ b/components/slider/index.css @@ -0,0 +1,586 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-slider-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-700); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-400); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: transparent; + --system-spectrum-slider-handle-background-color-disabled: transparent; + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-700); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-300); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-800); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +.spectrum--express { + --system-spectrum-slider-track-color: var(--spectrum-gray-200); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-600); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-background-color-disabled: var(--spectrum-gray-50); + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-800); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-200); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +.spectrum-Slider { + --spectrum-slider-font-size: var(--spectrum-font-size-75); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-medium); + --spectrum-slider-control-height: var(--spectrum-component-height-100); + --spectrum-slider-handle-border-radius: var(--spectrum-corner-radius-200); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-medium); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-medium); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 18px; +} +.spectrum-Slider:dir(rtl), +[dir="rtl"] .spectrum-Slider { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Slider--sizeS { + --spectrum-slider-font-size: var(--spectrum-font-size-75); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-small); + --spectrum-slider-control-height: var(--spectrum-component-height-75); + --spectrum-slider-handle-border-radius: var(--spectrum-corner-radius-200); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-small); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-75); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-small); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-100); +} +.spectrum-Slider--sizeL { + --spectrum-slider-font-size: var(--spectrum-font-size-100); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-large); + --spectrum-slider-control-height: var(--spectrum-component-height-200); + --spectrum-slider-handle-border-radius: calc(var(--spectrum-corner-radius-200) * 4); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-large); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-100); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-large); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 18px; +} +.spectrum-Slider--sizeXL { + --spectrum-slider-font-size: var(--spectrum-font-size-200); + --spectrum-slider-handle-size: var(--spectrum-slider-handle-size-extra-large); + --spectrum-slider-control-height: var(--spectrum-component-height-300); + --spectrum-slider-handle-border-radius: calc(var(--spectrum-corner-radius-200) * 4); + --spectrum-slider-handle-border-width-down: var(--spectrum-slider-handle-border-width-down-extra-large); + --spectrum-slider-label-top-to-text: var(--spectrum-component-top-to-text-200); + --spectrum-slider-control-to-field-label: var(--spectrum-slider-control-to-field-label-extra-large); + --spectrum-slider-value-side-padding-inline: var(--spectrum-spacing-200); + --spectrum-slider-value-inline-size: 22px; +} +.spectrum-Slider { + --spectrum-slider-cjk-line-height: var(--spectrum-cjk-line-height-100); + --spectrum-slider-min-size: var(--spectrum-spacing-900); + --spectrum-slider-track-corner-radius: var(--spectrum-corner-radius-75); + --spectrum-slider-label-margin-start: var(--spectrum-spacing-300); + --spectrum-slider-handle-border-width: var(--spectrum-border-width-200); + --spectrum-slider-handle-margin-left: calc(var(--spectrum-slider-handle-size) / -2); + --spectrum-slider-controls-margin: calc(var(--spectrum-slider-handle-size) / 2); + --spectrum-slider-track-margin-offset: calc(var(--spectrum-slider-controls-margin) * -1); + --spectrum-slider-track-middle-handleoffset: calc(var(--spectrum-slider-handle-gap) + var(--spectrum-slider-handle-size) / 2); + --spectrum-slider-input-top-size: calc(var(--spectrum-slider-handle-size) / -2 / 4); + --spectrum-slider-track-fill-thickness: var(--spectrum-slider-track-thickness); + --spectrum-slider-tick-mark-width: var(--spectrum-border-width-200); + --spectrum-slider-tick-mark-border-radius: 2px; + --spectrum-slider-tick-handle-background-color: var(--spectrum-gray-100); + --spectrum-slider-track-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-track-fill-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-handle-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-slider-label-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-slider-tick-label-color: var(--spectrum-neutral-content-color-default); + --spectrum-slider-label-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-slider-tick-mark-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-slider-ramp-handle-border-color-active: var(--spectrum-gray-100); + --spectrum-slider-input-left: calc(var(--spectrum-slider-handle-margin-left) / 4); + --spectrum-slider-track-handleoffset: var(--spectrum-slider-handle-gap); + --spectrum-slider-range-track-reset: 0; + position: relative; + z-index: 1; + display: block; + min-inline-size: var(--mod-slider-min-size, var(--spectrum-slider-min-size)); + -webkit-user-select: none; + user-select: none; +} +.spectrum-Slider--sideLabel { + display: flex; + align-items: center; +} +.spectrum-Slider--sideLabel .spectrum-Slider-labelContainer, +.spectrum-Slider--sideLabel .spectrum-Slider-labelContainer + .spectrum-Slider-controls { + margin-block-start: 0; +} +.spectrum-Slider--sideLabel .spectrum-Slider-controls { + margin-inline-end: var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)); +} +.spectrum-Slider--sideLabel .spectrum-Slider-value { + margin-inline-start: var(--mod-slider-value-side-padding-inline, var(--spectrum-slider-value-side-padding-inline)); + inline-size: var(--mod-slider-value-inline-size, var(--spectrum-slider-value-inline-size)); + text-align: start; +} +.spectrum-Slider-controls { + display: inline-block; + box-sizing: border-box; + cursor: pointer; + position: relative; + z-index: auto; + inline-size: calc(100% - var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) * 2); + margin-inline-start: var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)); + block-size: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); + vertical-align: top; +} +.spectrum-Slider-labelContainer + .spectrum-Slider-controls { + margin-block-start: calc(var(--spectrum-slider-control-to-field-label) * -1); +} +.spectrum-Slider--tick { + margin-block-end: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); +} +.spectrum-Slider-fill, +.spectrum-Slider-track { + block-size: var(--mod-slider-track-fill-thickness, var(--spectrum-slider-track-fill-thickness)); + box-sizing: border-box; + position: absolute; + z-index: 1; + inset-block-start: calc(var(--mod-slider-control-height, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-track-fill-thickness, var(--spectrum-slider-track-fill-thickness)) / 2); + inset-inline-start: 0; + inset-inline-end: auto; + pointer-events: none; + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: var(--mod-slider-handle-gap, var(--spectrum-slider-handle-gap)); + margin-inline-start: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-fill:before, +.spectrum-Slider-track:before { + content: ""; + display: block; + block-size: 100%; + border-start-start-radius: 0; + border-end-start-radius: 0; + border-start-end-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Slider-track:first-of-type:before { + border-start-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-track:last-of-type:before { + border-start-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-track ~ .spectrum-Slider-track { + inset-inline-start: auto; + inset-inline-end: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + padding-block: 0; + padding-inline-start: var(--mod-slider-track-handleoffset, var(--spectrum-slider-track-handleoffset)); + padding-inline-end: 0; + margin-inline-start: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + margin-inline-end: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track ~ .spectrum-Slider-track { + padding-inline: var(--mod-slider-track-middle-handleoffset, var(--spectrum-slider-track-middle-handleoffset)) var(--mod-slider-track-middle-handleoffset, var(--spectrum-slider-track-middle-handleoffset)); + inset-inline: auto; + margin-inline: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); +} +.spectrum-Slider-fill { + margin-inline-start: 0; + padding-block: 0; + padding-inline-start: calc(var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) + var(--spectrum-slider-handle-gap, var(--spectrum-slider-handle-gap))); + padding-inline-end: 0; +} +.spectrum-Slider-fill--right { + padding-block: 0; + padding-inline-start: 0; + padding-inline-end: calc(var(--mod-slider-controls-margin, var(--spectrum-slider-controls-margin)) + var(--spectrum-slider-handle-gap, var(--spectrum-slider-handle-gap))); +} +.spectrum-Slider--range .spectrum-Slider-value { + -webkit-user-select: text; + user-select: text; +} +.spectrum-Slider--range .spectrum-Slider-track:first-of-type { + padding-inline-start: 0; + padding-inline-end: var(--mod-slider-track-handleoffset, var(--spectrum-slider-track-handleoffset)); + inset-inline-start: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + inset-inline-end: auto; + margin-inline-start: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track:first-of-type:before { + border-start-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-start-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider--range .spectrum-Slider-track:last-of-type { + padding-inline-start: var(--spectrum-slider-track-handleoffset); + padding-inline-end: 0; + inset-inline-start: auto; + inset-inline-end: var(--mod-slider-range-track-reset, var(--spectrum-slider-range-track-reset)); + margin-inline-end: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider--range .spectrum-Slider-track:last-of-type:before { + border-start-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); + border-end-end-radius: var(--mod-slider-track-corner-radius, var(--spectrum-slider-track-corner-radius)); +} +.spectrum-Slider-ramp { + margin-block-start: calc(var(--mod-slider-ramp-track-height, var(--spectrum-slider-ramp-track-height)) / 2); + block-size: var(--mod-slider-ramp-track-height, var(--spectrum-slider-ramp-track-height)); + position: absolute; + inset-inline-start: var(--spectrum-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); + inset-inline-end: var(--spectrum-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-ramp svg { + inline-size: 100%; + block-size: 100%; + transform: var(--spectrum-logical-rotation); +} +.spectrum-Slider-handle { + position: absolute; + inset-inline-start: 0; + z-index: 2; + display: inline-block; + box-sizing: border-box; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + inset-block-start: calc(var(--mod-slider-control-height, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) / 2); + margin-block: 0; + margin-inline: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) / -2) 0; + border-width: var(--mod-slider-handle-border-width, var(--spectrum-slider-handle-border-width)); + border-style: solid; + border-radius: var(--mod-slider-handle-border-radius, var(--spectrum-slider-handle-border-radius)); + transition: border-width var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + outline: none; +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle:active { + border-width: var(--mod-slider-handle-border-width-down, var(--spectrum-slider-handle-border-width-down)); +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle.is-focused, +.spectrum-Slider-handle.is-tophandle, +.spectrum-Slider-handle:active { + z-index: 3; +} +.spectrum-Slider-handle:before { + content: ""; + display: block; + position: absolute; + inset-inline-start: 50%; + inset-block-start: 50%; + transition: + box-shadow var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + inline-size var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + block-size var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + border-radius: 100%; + transform: translate(-50%, -50%); +} +.spectrum-Slider:dir(rtl) .spectrum-Slider-handle:before, +[dir="rtl"] .spectrum-Slider .spectrum-Slider-handle:before { + transform: translate(50%, -50%); +} +.spectrum-Slider-handle.is-focused:before { + inline-size: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); + block-size: calc(var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)) + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); +} +.spectrum-Slider-input { + margin: 0; + inline-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + block-size: var(--mod-slider-handle-size, var(--spectrum-slider-handle-size)); + padding: 0; + position: absolute; + inset-block-start: var(--mod-slider-input-top-size, var(--spectrum-slider-input-top-size)); + inset-inline-start: var(--mod-slider-input-left, var(--spectrum-slider-input-left)); + overflow: hidden; + opacity: 0.000001; + cursor: default; + appearance: none; + border: 0; + pointer-events: none; +} +.spectrum-Slider-input:focus { + outline: none; +} +.spectrum-Slider-labelContainer { + display: flex; + align-items: center; + position: relative; + inline-size: auto; + font-size: var(--mod-slider-font-size, var(--spectrum-slider-font-size)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + margin-block-start: var(--mod-slider-label-top-to-text, var(--spectrum-slider-label-top-to-text)); +} +.spectrum-Slider-labelContainer:lang(ja), +.spectrum-Slider-labelContainer:lang(ko), +.spectrum-Slider-labelContainer:lang(zh) { + line-height: var(--mod-slider-cjk-line-height, var(--spectrum-slider-cjk-line-height)); +} +.spectrum-Slider-label { + padding-inline-start: 0; + flex-grow: 1; + font-size: var(--mod-slider-font-size, var(--spectrum-slider-font-size)); +} +.spectrum-Slider-value { + flex-grow: 0; + padding-inline-end: 0; + cursor: default; + font-feature-settings: "tnum"; + text-align: end; + margin-inline-start: var(--mod-slider-label-margin-start, var(--spectrum-slider-label-margin-start)); +} +.spectrum-Slider--tick .spectrum-Slider-handle { + background-color: var(--highcontrast-slider-tick-handle-background-color, var(--mod-slider-tick-handle-background-color, var(--spectrum-slider-tick-handle-background-color))); +} +.spectrum-Slider--tick .spectrum-Slider-controls { + margin-block-start: calc(var(--spectrum-text-to-visual-75) - var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) / 2 - var(--mod-slider-track-thickness, var(--spectrum-slider-track-thickness)) / 2); +} +.spectrum-Slider--tick .spectrum-Slider-tickLabel { + margin-block-start: calc(var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) + var(--spectrum-text-to-visual-75)); +} +.spectrum-Slider-ticks { + display: flex; + justify-content: space-between; + z-index: 0; + margin-inline: var(--mod-slider-track-margin-offset, var(--spectrum-slider-track-margin-offset)); +} +.spectrum-Slider-ticks ~ .spectrum-Slider-handleContainer .spectrum-Slider-handle { + background: var(--mod-slider-ticks-handle-background-color, var(--spectrum-slider-ticks-handle-background-color)); +} +.spectrum-Slider-tick { + position: relative; + inset-block-start: calc(var(--mod-slider-track-thickness, var(--spectrum-slider-control-height)) / 2 - var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)) / 2); +} +.spectrum-Slider-tick, +.spectrum-Slider-tick:after { + inline-size: var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)); +} +.spectrum-Slider-tick:after { + display: block; + position: absolute; + inset-block-start: 0; + inset-inline-start: calc(50% - var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / 2); + content: ""; + block-size: var(--mod-slider-tick-mark-height, var(--spectrum-slider-tick-mark-height)); + border-radius: var(--mod-slider-tick-mark-border-radius, var(--spectrum-slider-tick-mark-border-radius)); +} +.spectrum-Slider-tick .spectrum-Slider-tickLabel { + display: flex; + align-items: center; + justify-content: center; + font-size: var(--mod-font-size-75, var(--spectrum-font-size-75)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + color: var(--highcontrast-slider-label-text-color, var(--mod-slider-tick-label-color, var(--spectrum-slider-tick-label-color))); +} +.spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel, +.spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel { + display: block; + position: absolute; + margin-inline: 0; +} +.spectrum-Slider-tick:first-of-type { + inset-inline-start: calc(var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / -2); +} +.spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel { + inset-inline-start: 0; +} +.spectrum-Slider-tick:last-of-type { + inset-inline-end: calc(var(--mod-slider-tick-mark-width, var(--spectrum-slider-tick-mark-width)) / -2); +} +.spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel { + inset-inline-end: 0; +} +.spectrum-Slider-handleContainer, +.spectrum-Slider-trackContainer { + inline-size: calc(100% + var(--spectrum-slider-handle-size)); + position: absolute; + inset-block-start: 0; + margin-inline-start: calc(var(--spectrum-slider-handle-size) / 2 * -1); +} +.spectrum-Slider-trackContainer { + block-size: var(--mod-slider-control-height, var(--spectrum-slider-control-height)); + overflow: hidden; +} +.spectrum-Slider-track:before { + background: var(--highcontrast-slider-track-color-static, var(--mod-slider-track-color, var(--spectrum-slider-track-color))); +} +.spectrum-Slider-track:not(:has(~ .spectrum-Slider-fill)):before { + background: var(--highcontrast-slider-track-color, var(--mod-slider-track-color, var(--spectrum-slider-track-color))); +} +.spectrum-Slider-labelContainer { + color: var(--highcontrast-slider-label-text-color, var(--mod-slider-label-text-color, var(--spectrum-slider-label-text-color))); +} +.spectrum-Slider--filled .spectrum-Slider-track:first-child:before, +.spectrum-Slider-fill:before { + background: var(--highcontrast-slider-filled-track-fill-color, var(--mod-slider-track-fill-color, var(--spectrum-slider-track-fill-color))); +} +.spectrum-Slider-ramp path { + fill: var(--highcontrast-slider-ramp-track-color, var(--mod-slider-ramp-track-color, var(--spectrum-slider-ramp-track-color))); +} +.spectrum-Slider-handle { + border-color: var(--highcontrast-slider-handle-border-color, var(--mod-slider-handle-border-color, var(--spectrum-slider-handle-border-color))); + background: var(--highcontrast-slider-handle-background-color, var(--mod-slider-handle-background-color, var(--spectrum-slider-handle-background-color))); +} +.spectrum-Slider-handle.is-focused { + border-color: var(--highcontrast-slider-handle-border-color-key-focus, var(--mod-slider-handle-border-color-key-focus, var(--spectrum-slider-handle-border-color-key-focus))); +} +.spectrum-Slider-handle.is-focused:before { + box-shadow: 0 0 0 var(--spectrum-focus-indicator-thickness) var(--highcontrast-slider-handle-focus-ring-color-key-focus, var(--mod-slider-handle-focus-ring-color-key-focus, var(--spectrum-slider-handle-focus-ring-color-key-focus))); +} +.spectrum-Slider-handle.is-dragged, +.spectrum-Slider-handle:active { + border-color: var(--highcontrast-slider-handle-border-color-down, var(--mod-slider-handle-border-color-down, var(--spectrum-slider-handle-border-color-down))); +} +.spectrum-Slider--ramp .spectrum-Slider-handle { + box-shadow: 0 0 0 var(--spectrum-slider-handle-gap) var(--highcontrast-slider-ramp-handle-border-color-active, var(--mod-sectrum-slider-ramp-handle-border-color-active, var(--spectrum-slider-ramp-handle-border-color-active))); + background: var(--mod-slider-ramp-handle-background-color, var(--highcontrast-slider-ramp-handle-background-color, var(--spectrum-slider-ramp-handle-background-color))); +} +.spectrum-Slider-input { + background: transparent; +} +.spectrum-Slider-tick:after { + background-color: var(--highcontrast-slider-tick-mark-color, var(--mod-slider-tick-mark-color, var(--spectrum-slider-tick-mark-color))); +} +.spectrum-Slider-handle.is-dragged { + border-color: var(--highcontrast-slider-handle-border-color-down, var(--mod-slider-handle-border-color-down, var(--spectrum-slider-handle-border-color-down))); + background: var(--highcontrast-slider-handle-background-color, var(--mod-slider-handle-background-color, var(--spectrum-slider-handle-background-color))); +} +.spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before { + background: var(--highcontrast-slider-filled-track-fill-color, var(--mod-slider-track-fill-color, var(--spectrum-slider-track-fill-color))); +} +.spectrum-Slider.is-disabled, +.spectrum-Slider.is-disabled .spectrum-Slider-controls { + cursor: default; +} +.spectrum-Slider.is-disabled .spectrum-Slider-labelContainer, +.spectrum-Slider.is-disabled .spectrum-Slider-tickLabel { + color: var(--highcontrast-slider-label-text-color-disabled, var(--mod-slider-label-text-color-disabled, var(--spectrum-slider-label-text-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-handle { + border-color: var(--highcontrast-slider-handle-border-color-disabled, var(--mod-slider-handle-border-color-disabled, var(--spectrum-slider-handle-border-color-disabled))); + background: var(--highcontrast-slider-handle-disabled-background-color, var(--mod-slider-handle-disabled-background-color, var(--spectrum-slider-handle-disabled-background-color))); + cursor: default; + pointer-events: none; +} +.spectrum-Slider.is-disabled .spectrum-Slider-handle:active { + border-color: var(--highcontrast-disabled-border-color, var(--mod-disabled-border-color, var(--spectrum-disabled-border-color))); + background: var(--highcontrast-slider-handle-background-color-disabled, var(--mod-slider-handle-background-color-disabled, var(--spectrum-slider-handle-background-color-disabled))); +} +@media (hover: hover) { + .spectrum-Slider-handle:hover { + border-color: var(--highcontrast-slider-handle-border-color-hover, var(--mod-slider-handle-border-color-hover, var(--spectrum-slider-handle-border-color-hover))); + } + .spectrum-Slider.is-disabled .spectrum-Slider-handle:hover { + border-color: var(--highcontrast-disabled-border-color, var(--mod-disabled-border-color, var(--spectrum-disabled-border-color))); + background: var(--highcontrast-slider-handle-background-color-disabled, var(--mod-slider-handle-background-color-disabled, var(--spectrum-slider-handle-background-color-disabled))); + } +} +.spectrum-Slider.is-disabled .spectrum-Slider-track:before { + background: var(--highcontrast-slider-track-color-disabled, var(--mod-slider-track-color-disabled, var(--spectrum-slider-track-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-fill:before, +.spectrum-Slider.is-disabled.spectrum-Slider--filled .spectrum-Slider-track:first-child:before { + background: var(--highcontrast-slider-track-fill-color-disabled, var(--mod-slider-track-fill-color-disabled, var(--spectrum-slider-track-fill-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-ramp path { + fill: var(--highcontrast-slider-ramp-track-color-disabled, var(--mod-slider-ramp-track-color-disabled, var(--spectrum-slider-ramp-track-color-disabled))); +} +.spectrum-Slider.is-disabled .spectrum-Slider-tick:after { + background-color: var(--highcontrast-slider-tick-mark-color-disabled, var(--mod-slider-tick-mark-color-disabled, var(--spectrum-slider-tick-mark-color-disabled))); +} +.spectrum-Slider.is-disabled.spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before { + background: var(--highcontrast-slider-track-color-disabled, var(--mod-slider-track-color-disabled, var(--spectrum-slider-track-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Slider { + --highcontrast-slider-track-color: ButtonText; + --highcontrast-slider-track-color-disabled: GrayText; + --highcontrast-slider-track-color-static: ButtonText; + --highcontrast-slider-track-fill-color: ButtonText; + --highcontrast-slider-track-fill-color-disabled: GrayText; + --highcontrast-slider-filled-track-fill-color: Highlight; + --highcontrast-slider-ramp-track-color: ButtonText; + --highcontrast-slider-ramp-track-color-disabled: GrayText; + --highcontrast-slider-tick-mark-color: ButtonText; + --highcontrast-slider-tick-mark-color-disabled: GrayText; + --highcontrast-slider-handle-border-color: ButtonText; + --highcontrast-slider-handle-border-color-hover: Highlight; + --highcontrast-slider-handle-border-color-down: Highlight; + --highcontrast-slider-handle-border-color-key-focus: Highlight; + --highcontrast-slider-handle-border-color-disabled: GrayText; + --highcontrast-slider-handle-focus-ring-color-key-focus: CanvasText; + --highcontrast-slider-handle-background-color: ButtonFace; + --highcontrast-slider-handle-background-color-disabled: GrayText; + --highcontrast-slider-handle-disabled-background-color: GrayText; + --highcontrast-slider-ramp-handle-border-color-active: ButtonFace; + --highcontrast-slider-ramp-handle-background-color: ButtonFace; + --highcontrast-slider-label-text-color: CanvasText; + --highcontrast-slider-label-text-color-disabled: GrayText; + } + .spectrum-Slider .spectrum-Slider-handle.is-focused:before, + .spectrum-Slider.spectrum-Slider--ramp .spectrum-Slider-handle { + forced-color-adjust: none; + } + .js-focus-within .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls[focus-within], + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls.is-focused, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:active, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:focus-within, + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range).js-focus-within .spectrum-Slider-controls[focus-within] { + --highcontrast-slider-track-fill-color: Highlight; + --highcontrast-slider-track-color: Highlight; + --highcontrast-slider-handle-border-color: Highlight; + --highcontrast-slider-ramp-track-color: Highlight; + --highcontrast-slider-tick-mark-color: Highlight; + } + @media (hover: hover) { + .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:hover { + --highcontrast-slider-track-fill-color: Highlight; + --highcontrast-slider-track-color: Highlight; + --highcontrast-slider-handle-border-color: Highlight; + --highcontrast-slider-ramp-track-color: Highlight; + --highcontrast-slider-tick-mark-color: Highlight; + } + } + .spectrum-Slider.is-disabled .spectrum-Slider-ramp + .spectrum-Slider-handle { + fill: ButtonFace; + background-color: ButtonFace; + } +} +.spectrum-Slider { + --spectrum-slider-track-color: var(--system-spectrum-slider-track-color); + --spectrum-slider-track-fill-color: var(--system-spectrum-slider-track-fill-color); + --spectrum-slider-ramp-track-color: var(--system-spectrum-slider-ramp-track-color); + --spectrum-slider-ramp-track-color-disabled: var(--system-spectrum-slider-ramp-track-color-disabled); + --spectrum-slider-handle-background-color: var(--system-spectrum-slider-handle-background-color); + --spectrum-slider-handle-background-color-disabled: var(--system-spectrum-slider-handle-background-color-disabled); + --spectrum-slider-ramp-handle-background-color: var(--system-spectrum-slider-ramp-handle-background-color); + --spectrum-slider-ticks-handle-background-color: var(--system-spectrum-slider-ticks-handle-background-color); + --spectrum-slider-handle-border-color: var(--system-spectrum-slider-handle-border-color); + --spectrum-slider-handle-disabled-background-color: var(--system-spectrum-slider-handle-disabled-background-color); + --spectrum-slider-tick-mark-color: var(--system-spectrum-slider-tick-mark-color); + --spectrum-slider-handle-border-color-hover: var(--system-spectrum-slider-handle-border-color-hover); + --spectrum-slider-handle-border-color-down: var(--system-spectrum-slider-handle-border-color-down); + --spectrum-slider-handle-border-color-key-focus: var(--system-spectrum-slider-handle-border-color-key-focus); + --spectrum-slider-handle-focus-ring-color-key-focus: var(--system-spectrum-slider-handle-focus-ring-color-key-focus); +} +/*# sourceMappingURL=components/slider/index.css.map */ diff --git a/components/slider/metadata.json b/components/slider/metadata.json new file mode 100644 index 0000000000..e6996ae7b5 --- /dev/null +++ b/components/slider/metadata.json @@ -0,0 +1,290 @@ +{ + "selectors": [ + ".js-focus-within .spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls[focus-within],\n\t.spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls.is-focused,\n\t.spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:active,\n\t.spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:focus-within,\n\t.spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range).js-focus-within .spectrum-Slider-controls[focus-within]", + ".spectrum", + ".spectrum--express", + ".spectrum-Slider", + ".spectrum-Slider .spectrum-Slider-handle.is-focused:before,\n\t.spectrum-Slider.spectrum-Slider--ramp .spectrum-Slider-handle", + ".spectrum-Slider--filled .spectrum-Slider-track:first-child:before,\n.spectrum-Slider-fill:before", + ".spectrum-Slider--ramp .spectrum-Slider-handle", + ".spectrum-Slider--range .spectrum-Slider-track ~ .spectrum-Slider-track", + ".spectrum-Slider--range .spectrum-Slider-track:first-of-type", + ".spectrum-Slider--range .spectrum-Slider-track:first-of-type:before", + ".spectrum-Slider--range .spectrum-Slider-track:last-of-type", + ".spectrum-Slider--range .spectrum-Slider-track:last-of-type:before", + ".spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before", + ".spectrum-Slider--range .spectrum-Slider-value", + ".spectrum-Slider--sideLabel", + ".spectrum-Slider--sideLabel .spectrum-Slider-controls", + ".spectrum-Slider--sideLabel .spectrum-Slider-labelContainer,\n.spectrum-Slider--sideLabel .spectrum-Slider-labelContainer + .spectrum-Slider-controls", + ".spectrum-Slider--sideLabel .spectrum-Slider-value", + ".spectrum-Slider--sizeL", + ".spectrum-Slider--sizeS", + ".spectrum-Slider--sizeXL", + ".spectrum-Slider--tick", + ".spectrum-Slider--tick .spectrum-Slider-controls", + ".spectrum-Slider--tick .spectrum-Slider-handle", + ".spectrum-Slider--tick .spectrum-Slider-tickLabel", + ".spectrum-Slider-controls", + ".spectrum-Slider-fill", + ".spectrum-Slider-fill,\n.spectrum-Slider-track", + ".spectrum-Slider-fill--right", + ".spectrum-Slider-fill:before,\n.spectrum-Slider-track:before", + ".spectrum-Slider-handle", + ".spectrum-Slider-handle.is-dragged", + ".spectrum-Slider-handle.is-dragged,\n.spectrum-Slider-handle.is-focused,\n.spectrum-Slider-handle.is-tophandle,\n.spectrum-Slider-handle:active", + ".spectrum-Slider-handle.is-dragged,\n.spectrum-Slider-handle:active", + ".spectrum-Slider-handle.is-focused", + ".spectrum-Slider-handle.is-focused:before", + ".spectrum-Slider-handle:before", + ".spectrum-Slider-handle:hover", + ".spectrum-Slider-handleContainer,\n.spectrum-Slider-trackContainer", + ".spectrum-Slider-input", + ".spectrum-Slider-input:focus", + ".spectrum-Slider-label", + ".spectrum-Slider-labelContainer", + ".spectrum-Slider-labelContainer + .spectrum-Slider-controls", + ".spectrum-Slider-labelContainer:lang(ja),\n.spectrum-Slider-labelContainer:lang(ko),\n.spectrum-Slider-labelContainer:lang(zh)", + ".spectrum-Slider-ramp", + ".spectrum-Slider-ramp path", + ".spectrum-Slider-ramp svg", + ".spectrum-Slider-tick", + ".spectrum-Slider-tick .spectrum-Slider-tickLabel", + ".spectrum-Slider-tick,\n.spectrum-Slider-tick:after", + ".spectrum-Slider-tick:after", + ".spectrum-Slider-tick:first-of-type", + ".spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel", + ".spectrum-Slider-tick:first-of-type .spectrum-Slider-tickLabel,\n.spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel", + ".spectrum-Slider-tick:last-of-type", + ".spectrum-Slider-tick:last-of-type .spectrum-Slider-tickLabel", + ".spectrum-Slider-ticks", + ".spectrum-Slider-ticks ~ .spectrum-Slider-handleContainer .spectrum-Slider-handle", + ".spectrum-Slider-track ~ .spectrum-Slider-track", + ".spectrum-Slider-track:before", + ".spectrum-Slider-track:first-of-type:before", + ".spectrum-Slider-track:last-of-type:before", + ".spectrum-Slider-track:not(:has(~ .spectrum-Slider-fill)):before", + ".spectrum-Slider-trackContainer", + ".spectrum-Slider-value", + ".spectrum-Slider.is-disabled .spectrum-Slider-fill:before,\n.spectrum-Slider.is-disabled.spectrum-Slider--filled .spectrum-Slider-track:first-child:before", + ".spectrum-Slider.is-disabled .spectrum-Slider-handle", + ".spectrum-Slider.is-disabled .spectrum-Slider-handle:active", + ".spectrum-Slider.is-disabled .spectrum-Slider-handle:hover", + ".spectrum-Slider.is-disabled .spectrum-Slider-labelContainer,\n.spectrum-Slider.is-disabled .spectrum-Slider-tickLabel", + ".spectrum-Slider.is-disabled .spectrum-Slider-ramp + .spectrum-Slider-handle", + ".spectrum-Slider.is-disabled .spectrum-Slider-ramp path", + ".spectrum-Slider.is-disabled .spectrum-Slider-tick:after", + ".spectrum-Slider.is-disabled .spectrum-Slider-track:before", + ".spectrum-Slider.is-disabled,\n.spectrum-Slider.is-disabled .spectrum-Slider-controls", + ".spectrum-Slider.is-disabled.spectrum-Slider--range .spectrum-Slider-track:not(:first-of-type, :last-of-type):before", + ".spectrum-Slider:dir(rtl) .spectrum-Slider-handle:before,\n[dir=\"rtl\"] .spectrum-Slider .spectrum-Slider-handle:before", + ".spectrum-Slider:dir(rtl),\n[dir=\"rtl\"] .spectrum-Slider", + ".spectrum-Slider:not(.is-disabled, .spectrum-Slider--filled, .spectrum-Slider--range) .spectrum-Slider-controls:hover" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-disabled-border-color", + "--mod-focus-indicator-gap", + "--mod-font-size-75", + "--mod-line-height-100", + "--mod-sectrum-slider-ramp-handle-border-color-active", + "--mod-slider-cjk-line-height", + "--mod-slider-control-height", + "--mod-slider-controls-margin", + "--mod-slider-font-size", + "--mod-slider-handle-background-color", + "--mod-slider-handle-background-color-disabled", + "--mod-slider-handle-border-color", + "--mod-slider-handle-border-color-disabled", + "--mod-slider-handle-border-color-down", + "--mod-slider-handle-border-color-hover", + "--mod-slider-handle-border-color-key-focus", + "--mod-slider-handle-border-radius", + "--mod-slider-handle-border-width", + "--mod-slider-handle-border-width-down", + "--mod-slider-handle-disabled-background-color", + "--mod-slider-handle-focus-ring-color-key-focus", + "--mod-slider-handle-gap", + "--mod-slider-handle-size", + "--mod-slider-input-left", + "--mod-slider-input-top-size", + "--mod-slider-label-margin-start", + "--mod-slider-label-text-color", + "--mod-slider-label-text-color-disabled", + "--mod-slider-label-top-to-text", + "--mod-slider-min-size", + "--mod-slider-ramp-handle-background-color", + "--mod-slider-ramp-track-color", + "--mod-slider-ramp-track-color-disabled", + "--mod-slider-ramp-track-height", + "--mod-slider-range-track-reset", + "--mod-slider-tick-handle-background-color", + "--mod-slider-tick-label-color", + "--mod-slider-tick-mark-border-radius", + "--mod-slider-tick-mark-color", + "--mod-slider-tick-mark-color-disabled", + "--mod-slider-tick-mark-height", + "--mod-slider-tick-mark-width", + "--mod-slider-ticks-handle-background-color", + "--mod-slider-track-color", + "--mod-slider-track-color-disabled", + "--mod-slider-track-corner-radius", + "--mod-slider-track-fill-color", + "--mod-slider-track-fill-color-disabled", + "--mod-slider-track-fill-thickness", + "--mod-slider-track-handleoffset", + "--mod-slider-track-margin-offset", + "--mod-slider-track-middle-handleoffset", + "--mod-slider-track-thickness", + "--mod-slider-value-inline-size", + "--mod-slider-value-side-padding-inline" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-border-width-200", + "--spectrum-cjk-line-height-100", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-75", + "--spectrum-corner-radius-200", + "--spectrum-corner-radius-75", + "--spectrum-disabled-background-color", + "--spectrum-disabled-border-color", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-75", + "--spectrum-gray-100", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-line-height-100", + "--spectrum-logical-rotation", + "--spectrum-neutral-content-color-default", + "--spectrum-slider-cjk-line-height", + "--spectrum-slider-control-height", + "--spectrum-slider-control-to-field-label", + "--spectrum-slider-control-to-field-label-extra-large", + "--spectrum-slider-control-to-field-label-large", + "--spectrum-slider-control-to-field-label-medium", + "--spectrum-slider-control-to-field-label-small", + "--spectrum-slider-controls-margin", + "--spectrum-slider-font-size", + "--spectrum-slider-handle-background-color", + "--spectrum-slider-handle-background-color-disabled", + "--spectrum-slider-handle-border-color", + "--spectrum-slider-handle-border-color-disabled", + "--spectrum-slider-handle-border-color-down", + "--spectrum-slider-handle-border-color-hover", + "--spectrum-slider-handle-border-color-key-focus", + "--spectrum-slider-handle-border-radius", + "--spectrum-slider-handle-border-width", + "--spectrum-slider-handle-border-width-down", + "--spectrum-slider-handle-border-width-down-extra-large", + "--spectrum-slider-handle-border-width-down-large", + "--spectrum-slider-handle-border-width-down-medium", + "--spectrum-slider-handle-border-width-down-small", + "--spectrum-slider-handle-disabled-background-color", + "--spectrum-slider-handle-focus-ring-color-key-focus", + "--spectrum-slider-handle-gap", + "--spectrum-slider-handle-margin-left", + "--spectrum-slider-handle-size", + "--spectrum-slider-handle-size-extra-large", + "--spectrum-slider-handle-size-large", + "--spectrum-slider-handle-size-medium", + "--spectrum-slider-handle-size-small", + "--spectrum-slider-input-left", + "--spectrum-slider-input-top-size", + "--spectrum-slider-label-margin-start", + "--spectrum-slider-label-text-color", + "--spectrum-slider-label-text-color-disabled", + "--spectrum-slider-label-top-to-text", + "--spectrum-slider-min-size", + "--spectrum-slider-ramp-handle-background-color", + "--spectrum-slider-ramp-handle-border-color-active", + "--spectrum-slider-ramp-track-color", + "--spectrum-slider-ramp-track-color-disabled", + "--spectrum-slider-ramp-track-height", + "--spectrum-slider-range-track-reset", + "--spectrum-slider-tick-handle-background-color", + "--spectrum-slider-tick-label-color", + "--spectrum-slider-tick-mark-border-radius", + "--spectrum-slider-tick-mark-color", + "--spectrum-slider-tick-mark-color-disabled", + "--spectrum-slider-tick-mark-height", + "--spectrum-slider-tick-mark-width", + "--spectrum-slider-ticks-handle-background-color", + "--spectrum-slider-track-color", + "--spectrum-slider-track-color-disabled", + "--spectrum-slider-track-corner-radius", + "--spectrum-slider-track-fill-color", + "--spectrum-slider-track-fill-color-disabled", + "--spectrum-slider-track-fill-thickness", + "--spectrum-slider-track-handleoffset", + "--spectrum-slider-track-margin-offset", + "--spectrum-slider-track-middle-handleoffset", + "--spectrum-slider-track-thickness", + "--spectrum-slider-value-inline-size", + "--spectrum-slider-value-side-padding-inline", + "--spectrum-spacing-100", + "--spectrum-spacing-200", + "--spectrum-spacing-300", + "--spectrum-spacing-900", + "--spectrum-text-to-visual-75" + ], + "system": [ + "--system-spectrum-slider-handle-background-color", + "--system-spectrum-slider-handle-background-color-disabled", + "--system-spectrum-slider-handle-border-color", + "--system-spectrum-slider-handle-border-color-down", + "--system-spectrum-slider-handle-border-color-hover", + "--system-spectrum-slider-handle-border-color-key-focus", + "--system-spectrum-slider-handle-disabled-background-color", + "--system-spectrum-slider-handle-focus-ring-color-key-focus", + "--system-spectrum-slider-ramp-handle-background-color", + "--system-spectrum-slider-ramp-track-color", + "--system-spectrum-slider-ramp-track-color-disabled", + "--system-spectrum-slider-tick-mark-color", + "--system-spectrum-slider-ticks-handle-background-color", + "--system-spectrum-slider-track-color", + "--system-spectrum-slider-track-fill-color" + ], + "a11y": [ + "--highcontrast-disabled-border-color", + "--highcontrast-slider-filled-track-fill-color", + "--highcontrast-slider-handle-background-color", + "--highcontrast-slider-handle-background-color-disabled", + "--highcontrast-slider-handle-border-color", + "--highcontrast-slider-handle-border-color-disabled", + "--highcontrast-slider-handle-border-color-down", + "--highcontrast-slider-handle-border-color-hover", + "--highcontrast-slider-handle-border-color-key-focus", + "--highcontrast-slider-handle-disabled-background-color", + "--highcontrast-slider-handle-focus-ring-color-key-focus", + "--highcontrast-slider-label-text-color", + "--highcontrast-slider-label-text-color-disabled", + "--highcontrast-slider-ramp-handle-background-color", + "--highcontrast-slider-ramp-handle-border-color-active", + "--highcontrast-slider-ramp-track-color", + "--highcontrast-slider-ramp-track-color-disabled", + "--highcontrast-slider-tick-handle-background-color", + "--highcontrast-slider-tick-mark-color", + "--highcontrast-slider-tick-mark-color-disabled", + "--highcontrast-slider-track-color", + "--highcontrast-slider-track-color-disabled", + "--highcontrast-slider-track-color-static", + "--highcontrast-slider-track-fill-color-disabled" + ] +} diff --git a/components/slider/package.json b/components/slider/package.json new file mode 100644 index 0000000000..94446d5e1e --- /dev/null +++ b/components/slider/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/slider", + "version": "5.2.3", + "description": "The Spectrum CSS slider component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/slider", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/slider" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/stepper": ">=6", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/stepper": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/slider/template.js b/components/slider/template.js new file mode 100644 index 0000000000..ce75abcea8 --- /dev/null +++ b/components/slider/template.js @@ -0,0 +1,241 @@ +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { useArgs } from "@storybook/preview-api"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Slider", + size, + label, + min = 0, + max = 10, + step = 2, + values = [], + variant, + labelPosition, + fillColor = "rgb(213, 213, 213)", + showTicks = false, + isDisabled = false, + isFocused = false, + customClasses = [], + customStyles = {}, + id, +} = {}, context = {}) => { + const { globals = {}, updateArgs } = context; + + const textDirection = globals.textDirection ?? "ltr"; + const rtl = !!(textDirection === "rtl"); + const rangeLength = max - min; + const centerPoint = rangeLength / 2 + min; + const isRamp = variant === "ramp"; + const rampSVG = html` + `; + + const getPosition = (v) => ((v - min) / rangeLength) * 100; + + const getWidth = (start, end) => { + const distance = end > start ? end - start : start - end; + return (distance / rangeLength) * 100; + }; + + function renderTrack({ position, width }) { + const direction = rtl ? "right" : "left"; + return html` +
    `; + } + + function renderTick({ from, to }) { + const ticks = []; + for (let i = from; i <= to; i += step) { + ticks.push(html` +
    +
    ${i}
    +
    + `); + } + return html`
    ${ticks}
    `; + } + + function renderHandle({ position, value, idx = 0 }) { + const direction = rtl ? "right" : "left"; + return html` +
    + { + if (isDisabled) return; + updateArgs({ value: event.target.value }); + }} + /> +
    `; + } + + return html` +
    1, + [`${rootClass}--filled`]: variant === "filled", + [`${rootClass}--tick`]: showTicks, + "is-disabled": isDisabled, + [`${rootClass}--sideLabel`]: labelPosition === "side", + ...customClasses.reduce((a, c) => ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap({ + "max-width": "240px", + ["--spectrum-slider-track-color"]: fillColor, + ...customStyles, + })} + role=${ifDefined(values.length > 1 ? "group" : undefined)} + aria-labelledby=${ifDefined(label && id ? `${id}-label` : undefined)} + @focusin=${() => { + updateArgs({ isFocused: true }); + }} + @focusout=${() => { + updateArgs({ isFocused: false }); + }} + > + + ${when(label, () => html` +
    1 ? "presentation" : undefined)} + > + ${FieldLabel({ + size, + label, + isDisabled, + id: id ? `${id}-label` : undefined, + forInput: id ? `${id}-1` : undefined, + customClasses: [`${rootClass}-label`], + }, context)} + ${when(values.length && labelPosition != "side", () => html` +
    + ${values[0]}${values.length > 1 ? ` - ${values[1]}` : ""} +
    + `)} +
    `)} + + +
    ({ ...a, [c]: true }), {}), + })} + role=${ifDefined(isRamp ? "presentation" : undefined)} + > + ${values.map((value, idx) => { + const prevPoint = idx === 0 ? min : values[idx - 1]; + const isFirst = idx === 0; + const isLast = idx === values.length - 1; + return [ + !isRamp + ? renderTrack({ + position: getPosition(prevPoint), + width: getWidth(prevPoint, value), + }) + : "", + isFirst && isRamp + ? html`
    ${rampSVG}
    ` + : "", + isFirst && showTicks && !isRamp + ? renderTick({ from: min, to: max }) + : "", + renderHandle({ + position: getPosition(value), + value, + idx, + }), + isLast && !isRamp + ? renderTrack({ width: getWidth(value, max) }) + : "", + isLast && variant === "offset" + ? html`
    centerPoint), + })} + style=${ifDefined( + styleMap({ + [rtl ? "right" : "left"]: `${ + value > centerPoint + ? getPosition(centerPoint) + : getPosition(value) + }%`, + width: `${getWidth(value, centerPoint)}%`, + }) + )} + >
    ` + : "", + ]; + })} +
    + ${when(values.length && labelPosition === "side", () => html` +
    1 ? "presentation" : undefined)} + > +
    + ${values[0]}${values.length > 1 ? ` - ${values[1]}` : ""} +
    +
    + `)} +
    `; +}; diff --git a/components/slider/themes/express.css b/components/slider/themes/express.css new file mode 100644 index 0000000000..c69ca9b8b3 --- /dev/null +++ b/components/slider/themes/express.css @@ -0,0 +1,31 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-slider-track-color: var(--spectrum-gray-200); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-600); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-background-color-disabled: var(--spectrum-gray-50); + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-800); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-50); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-200); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-900); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +/*# sourceMappingURL=components/slider/themes/express.css.map */ diff --git a/components/slider/themes/spectrum.css b/components/slider/themes/spectrum.css new file mode 100644 index 0000000000..a9e87963c5 --- /dev/null +++ b/components/slider/themes/spectrum.css @@ -0,0 +1,31 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-slider-track-color: var(--spectrum-gray-300); + --system-spectrum-slider-track-fill-color: var(--spectrum-gray-700); + --system-spectrum-slider-ramp-track-color: var(--spectrum-gray-400); + --system-spectrum-slider-ramp-track-color-disabled: var(--spectrum-gray-200); + --system-spectrum-slider-handle-background-color: transparent; + --system-spectrum-slider-handle-background-color-disabled: transparent; + --system-spectrum-slider-ramp-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-ticks-handle-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-handle-border-color: var(--spectrum-gray-700); + --system-spectrum-slider-handle-disabled-background-color: var(--spectrum-gray-100); + --system-spectrum-slider-tick-mark-color: var(--spectrum-gray-300); + --system-spectrum-slider-handle-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-slider-handle-border-color-key-focus: var(--spectrum-gray-800); + --system-spectrum-slider-handle-focus-ring-color-key-focus: var(--spectrum-focus-indicator-color); +} +/*# sourceMappingURL=components/slider/themes/spectrum.css.map */ diff --git a/components/splitview/index-base.css b/components/splitview/index-base.css new file mode 100644 index 0000000000..87e153ae74 --- /dev/null +++ b/components/splitview/index-base.css @@ -0,0 +1,175 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SplitView { + --spectrum-splitview-vertical-width: 100%; + --spectrum-splitview-vertical-gripper-width: 50%; + --spectrum-splitview-vertical-gripper-outer-width: 100%; + --spectrum-splitview-vertical-gripper-reset: 0; + --spectrum-splitview-background-color: var(--spectrum-gray-100); + --spectrum-splitview-content-color: var(--spectrum-body-color); + --spectrum-splitview-handle-background-color: var(--spectrum-gray-300); + --spectrum-splitview-handle-background-color-hover: var(--spectrum-gray-400); + --spectrum-splitview-handle-background-color-down: var(--spectrum-gray-800); + --spectrum-splitview-handle-background-color-focus: var(--spectrum-focus-indicator-color); + --spectrum-splitview-handle-width: var(--spectrum-border-width-200); + --spectrum-splitview-gripper-border-radius: var(--spectrum-corner-radius-75); + --spectrum-splitview-gripper-width: var(--spectrum-border-width-400); + --spectrum-splitview-gripper-height: 16px; + --spectrum-splitview-gripper-border-width-horizontal: 3px; + --spectrum-splitview-gripper-border-width-vertical: var(--spectrum-border-width-400); + display: flex; + overflow: hidden; +} +.spectrum-SplitView-pane { + block-size: 100%; + background-color: var(--mod-splitview-background-color, var(--spectrum-splitview-background-color)); + color: var(--mod-splitview-content-color, var(--spectrum-splitview-content-color)); +} +.spectrum-SplitView-gripper { + content: ""; + display: block; + position: absolute; + border-style: solid; + border-radius: var(--mod-splitview-gripper-border-radius, var(--spectrum-splitview-gripper-border-radius)); + border-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); + inset-block-start: 50%; + transform: translateY(-50%); + touch-action: none; + inset-inline-start: calc((var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)) + (2 * var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical))) - var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width))) / 2 * -1); + inline-size: var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)); + block-size: var(--mod-splitview-gripper-height, var(--spectrum-splitview-gripper-height)); + border-block-width: var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical)); + border-inline-width: var(--mod-splitview-gripper-border-width-horizontal, var(--spectrum-splitview-gripper-border-width-horizontal)); +} +.spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); +} +.spectrum-SplitView-splitter { + position: relative; + background-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); + -webkit-user-select: none; + user-select: none; + inline-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); + block-size: 100%; + z-index: 1; +} +.spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before, +.spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before { + content: ""; + position: absolute; + inset-block-start: 0; + inset-inline-start: calc(50% - var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)) / 2); + inline-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); + block-size: 100%; +} +.spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-inline-start: 0; +} +.spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper { + inset-inline-end: 0; + inset-inline-start: auto; +} +.spectrum-SplitView-splitter.is-draggable.is-hovered { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +.spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +.spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +@media (hover: hover) { + .spectrum-SplitView-splitter.is-draggable:hover { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } + .spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } + .spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } +} +.spectrum-SplitView-splitter.is-draggable.is-active, +.spectrum-SplitView-splitter.is-draggable:active { + background-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper, +.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper:before, +.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable:focus { + outline: none; +} +.spectrum-SplitView-splitter.is-draggable:focus-visible { + outline: none; + background-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); + box-shadow: 0 0 0 1px var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView--vertical { + flex-direction: column; +} +.spectrum-SplitView--vertical .spectrum-SplitView-pane { + block-size: auto; + inline-size: var(--mod-splitview-vertical-width, var(--spectrum-splitview-vertical-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-gripper { + inset-block-start: calc((var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)) + (2 * var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical))) - var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width))) / 2 * -1); + transform: translate(calc(var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)) * -1)); + inset-inline-start: var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)); + inline-size: var(--mod-splitview-gripper-height, var(--spectrum-splitview-gripper-height)); + block-size: var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)); + border-block-width: var(--mod-splitview-gripper-border-width-horizontal, var(--spectrum-splitview-gripper-border-width-horizontal)); + border-inline-width: var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter { + inline-size: var(--mod-splitview-vertical-width, var(--spectrum-splitview-vertical-width)); + block-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper, +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-inline-start: var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before, +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before { + inset-block-start: calc(var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)) - var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)) / 2); + inset-inline-start: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); + inline-size: var(--mod-splitview-vertical-gripper-outer-width, var(--spectrum-splitview-vertical-gripper-outer-width)); + block-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-block-start: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper { + inset-block-start: auto; + inset-block-end: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); +} +@media (forced-colors: active) { + .spectrum-SplitView { + --highcontrast-splitview-handle-background-color: CanvasText; + --highcontrast-splitview-handle-background-color-hover: CanvasText; + --highcontrast-splitview-handle-background-color-down: CanvasText; + --highcontrast-splitview-handle-background-color-focus: Highlight; + } +} +/*# sourceMappingURL=components/splitview/index.css.map */ diff --git a/components/splitview/index-vars.css b/components/splitview/index-vars.css new file mode 100644 index 0000000000..87e153ae74 --- /dev/null +++ b/components/splitview/index-vars.css @@ -0,0 +1,175 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SplitView { + --spectrum-splitview-vertical-width: 100%; + --spectrum-splitview-vertical-gripper-width: 50%; + --spectrum-splitview-vertical-gripper-outer-width: 100%; + --spectrum-splitview-vertical-gripper-reset: 0; + --spectrum-splitview-background-color: var(--spectrum-gray-100); + --spectrum-splitview-content-color: var(--spectrum-body-color); + --spectrum-splitview-handle-background-color: var(--spectrum-gray-300); + --spectrum-splitview-handle-background-color-hover: var(--spectrum-gray-400); + --spectrum-splitview-handle-background-color-down: var(--spectrum-gray-800); + --spectrum-splitview-handle-background-color-focus: var(--spectrum-focus-indicator-color); + --spectrum-splitview-handle-width: var(--spectrum-border-width-200); + --spectrum-splitview-gripper-border-radius: var(--spectrum-corner-radius-75); + --spectrum-splitview-gripper-width: var(--spectrum-border-width-400); + --spectrum-splitview-gripper-height: 16px; + --spectrum-splitview-gripper-border-width-horizontal: 3px; + --spectrum-splitview-gripper-border-width-vertical: var(--spectrum-border-width-400); + display: flex; + overflow: hidden; +} +.spectrum-SplitView-pane { + block-size: 100%; + background-color: var(--mod-splitview-background-color, var(--spectrum-splitview-background-color)); + color: var(--mod-splitview-content-color, var(--spectrum-splitview-content-color)); +} +.spectrum-SplitView-gripper { + content: ""; + display: block; + position: absolute; + border-style: solid; + border-radius: var(--mod-splitview-gripper-border-radius, var(--spectrum-splitview-gripper-border-radius)); + border-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); + inset-block-start: 50%; + transform: translateY(-50%); + touch-action: none; + inset-inline-start: calc((var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)) + (2 * var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical))) - var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width))) / 2 * -1); + inline-size: var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)); + block-size: var(--mod-splitview-gripper-height, var(--spectrum-splitview-gripper-height)); + border-block-width: var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical)); + border-inline-width: var(--mod-splitview-gripper-border-width-horizontal, var(--spectrum-splitview-gripper-border-width-horizontal)); +} +.spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); +} +.spectrum-SplitView-splitter { + position: relative; + background-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); + -webkit-user-select: none; + user-select: none; + inline-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); + block-size: 100%; + z-index: 1; +} +.spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before, +.spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before { + content: ""; + position: absolute; + inset-block-start: 0; + inset-inline-start: calc(50% - var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)) / 2); + inline-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); + block-size: 100%; +} +.spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-inline-start: 0; +} +.spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper { + inset-inline-end: 0; + inset-inline-start: auto; +} +.spectrum-SplitView-splitter.is-draggable.is-hovered { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +.spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +.spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +@media (hover: hover) { + .spectrum-SplitView-splitter.is-draggable:hover { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } + .spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } + .spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } +} +.spectrum-SplitView-splitter.is-draggable.is-active, +.spectrum-SplitView-splitter.is-draggable:active { + background-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper, +.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper:before, +.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable:focus { + outline: none; +} +.spectrum-SplitView-splitter.is-draggable:focus-visible { + outline: none; + background-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); + box-shadow: 0 0 0 1px var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView--vertical { + flex-direction: column; +} +.spectrum-SplitView--vertical .spectrum-SplitView-pane { + block-size: auto; + inline-size: var(--mod-splitview-vertical-width, var(--spectrum-splitview-vertical-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-gripper { + inset-block-start: calc((var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)) + (2 * var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical))) - var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width))) / 2 * -1); + transform: translate(calc(var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)) * -1)); + inset-inline-start: var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)); + inline-size: var(--mod-splitview-gripper-height, var(--spectrum-splitview-gripper-height)); + block-size: var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)); + border-block-width: var(--mod-splitview-gripper-border-width-horizontal, var(--spectrum-splitview-gripper-border-width-horizontal)); + border-inline-width: var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter { + inline-size: var(--mod-splitview-vertical-width, var(--spectrum-splitview-vertical-width)); + block-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper, +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-inline-start: var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before, +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before { + inset-block-start: calc(var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)) - var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)) / 2); + inset-inline-start: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); + inline-size: var(--mod-splitview-vertical-gripper-outer-width, var(--spectrum-splitview-vertical-gripper-outer-width)); + block-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-block-start: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper { + inset-block-start: auto; + inset-block-end: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); +} +@media (forced-colors: active) { + .spectrum-SplitView { + --highcontrast-splitview-handle-background-color: CanvasText; + --highcontrast-splitview-handle-background-color-hover: CanvasText; + --highcontrast-splitview-handle-background-color-down: CanvasText; + --highcontrast-splitview-handle-background-color-focus: Highlight; + } +} +/*# sourceMappingURL=components/splitview/index.css.map */ diff --git a/components/splitview/index.css b/components/splitview/index.css new file mode 100644 index 0000000000..87e153ae74 --- /dev/null +++ b/components/splitview/index.css @@ -0,0 +1,175 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SplitView { + --spectrum-splitview-vertical-width: 100%; + --spectrum-splitview-vertical-gripper-width: 50%; + --spectrum-splitview-vertical-gripper-outer-width: 100%; + --spectrum-splitview-vertical-gripper-reset: 0; + --spectrum-splitview-background-color: var(--spectrum-gray-100); + --spectrum-splitview-content-color: var(--spectrum-body-color); + --spectrum-splitview-handle-background-color: var(--spectrum-gray-300); + --spectrum-splitview-handle-background-color-hover: var(--spectrum-gray-400); + --spectrum-splitview-handle-background-color-down: var(--spectrum-gray-800); + --spectrum-splitview-handle-background-color-focus: var(--spectrum-focus-indicator-color); + --spectrum-splitview-handle-width: var(--spectrum-border-width-200); + --spectrum-splitview-gripper-border-radius: var(--spectrum-corner-radius-75); + --spectrum-splitview-gripper-width: var(--spectrum-border-width-400); + --spectrum-splitview-gripper-height: 16px; + --spectrum-splitview-gripper-border-width-horizontal: 3px; + --spectrum-splitview-gripper-border-width-vertical: var(--spectrum-border-width-400); + display: flex; + overflow: hidden; +} +.spectrum-SplitView-pane { + block-size: 100%; + background-color: var(--mod-splitview-background-color, var(--spectrum-splitview-background-color)); + color: var(--mod-splitview-content-color, var(--spectrum-splitview-content-color)); +} +.spectrum-SplitView-gripper { + content: ""; + display: block; + position: absolute; + border-style: solid; + border-radius: var(--mod-splitview-gripper-border-radius, var(--spectrum-splitview-gripper-border-radius)); + border-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); + inset-block-start: 50%; + transform: translateY(-50%); + touch-action: none; + inset-inline-start: calc((var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)) + (2 * var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical))) - var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width))) / 2 * -1); + inline-size: var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)); + block-size: var(--mod-splitview-gripper-height, var(--spectrum-splitview-gripper-height)); + border-block-width: var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical)); + border-inline-width: var(--mod-splitview-gripper-border-width-horizontal, var(--spectrum-splitview-gripper-border-width-horizontal)); +} +.spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); +} +.spectrum-SplitView-splitter { + position: relative; + background-color: var(--highcontrast-splitview-handle-background-color, var(--mod-splitview-handle-background-color, var(--spectrum-splitview-handle-background-color))); + -webkit-user-select: none; + user-select: none; + inline-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); + block-size: 100%; + z-index: 1; +} +.spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before, +.spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before { + content: ""; + position: absolute; + inset-block-start: 0; + inset-inline-start: calc(50% - var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)) / 2); + inline-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); + block-size: 100%; +} +.spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-inline-start: 0; +} +.spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper { + inset-inline-end: 0; + inset-inline-start: auto; +} +.spectrum-SplitView-splitter.is-draggable.is-hovered { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +.spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +.spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); +} +@media (hover: hover) { + .spectrum-SplitView-splitter.is-draggable:hover { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } + .spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } + .spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-hover, var(--mod-splitview-handle-background-color-hover, var(--spectrum-splitview-handle-background-color-hover))); + } +} +.spectrum-SplitView-splitter.is-draggable.is-active, +.spectrum-SplitView-splitter.is-draggable:active { + background-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper, +.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper:before, +.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-down, var(--mod-splitview-handle-background-color-down, var(--spectrum-splitview-handle-background-color-down))); +} +.spectrum-SplitView-splitter.is-draggable:focus { + outline: none; +} +.spectrum-SplitView-splitter.is-draggable:focus-visible { + outline: none; + background-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper { + border-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); + box-shadow: 0 0 0 1px var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper:before { + background-color: var(--highcontrast-splitview-handle-background-color-focus, var(--mod-splitview-handle-background-color-focus, var(--spectrum-splitview-handle-background-color-focus))); +} +.spectrum-SplitView--vertical { + flex-direction: column; +} +.spectrum-SplitView--vertical .spectrum-SplitView-pane { + block-size: auto; + inline-size: var(--mod-splitview-vertical-width, var(--spectrum-splitview-vertical-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-gripper { + inset-block-start: calc((var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)) + (2 * var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical))) - var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width))) / 2 * -1); + transform: translate(calc(var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)) * -1)); + inset-inline-start: var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)); + inline-size: var(--mod-splitview-gripper-height, var(--spectrum-splitview-gripper-height)); + block-size: var(--mod-splitview-gripper-width, var(--spectrum-splitview-gripper-width)); + border-block-width: var(--mod-splitview-gripper-border-width-horizontal, var(--spectrum-splitview-gripper-border-width-horizontal)); + border-inline-width: var(--mod-splitview-gripper-border-width-vertical, var(--spectrum-splitview-gripper-border-width-vertical)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter { + inline-size: var(--mod-splitview-vertical-width, var(--spectrum-splitview-vertical-width)); + block-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper, +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-inline-start: var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before, +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before { + inset-block-start: calc(var(--mod-splitview-vertical-gripper-width, var(--spectrum-splitview-vertical-gripper-width)) - var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)) / 2); + inset-inline-start: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); + inline-size: var(--mod-splitview-vertical-gripper-outer-width, var(--spectrum-splitview-vertical-gripper-outer-width)); + block-size: var(--mod-splitview-handle-width, var(--spectrum-splitview-handle-width)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper { + inset-block-start: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); +} +.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper { + inset-block-start: auto; + inset-block-end: var(--mod-splitview-vertical-gripper-reset, var(--spectrum-splitview-vertical-gripper-reset)); +} +@media (forced-colors: active) { + .spectrum-SplitView { + --highcontrast-splitview-handle-background-color: CanvasText; + --highcontrast-splitview-handle-background-color-hover: CanvasText; + --highcontrast-splitview-handle-background-color-down: CanvasText; + --highcontrast-splitview-handle-background-color-focus: Highlight; + } +} +/*# sourceMappingURL=components/splitview/index.css.map */ diff --git a/components/splitview/metadata.json b/components/splitview/metadata.json new file mode 100644 index 0000000000..9453226772 --- /dev/null +++ b/components/splitview/metadata.json @@ -0,0 +1,85 @@ +{ + "selectors": [ + ".spectrum-SplitView", + ".spectrum-SplitView--vertical", + ".spectrum-SplitView--vertical .spectrum-SplitView-gripper", + ".spectrum-SplitView--vertical .spectrum-SplitView-pane", + ".spectrum-SplitView--vertical .spectrum-SplitView-splitter", + ".spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper", + ".spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper,\n.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper", + ".spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before,\n.spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before", + ".spectrum-SplitView--vertical .spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper", + ".spectrum-SplitView-gripper", + ".spectrum-SplitView-gripper:before", + ".spectrum-SplitView-pane", + ".spectrum-SplitView-splitter", + ".spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper", + ".spectrum-SplitView-splitter.is-collapsed-end .spectrum-SplitView-gripper:before,\n.spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper:before", + ".spectrum-SplitView-splitter.is-collapsed-start .spectrum-SplitView-gripper", + ".spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper,\n.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper", + ".spectrum-SplitView-splitter.is-draggable.is-active .spectrum-SplitView-gripper:before,\n.spectrum-SplitView-splitter.is-draggable:active .spectrum-SplitView-gripper:before", + ".spectrum-SplitView-splitter.is-draggable.is-active,\n.spectrum-SplitView-splitter.is-draggable:active", + ".spectrum-SplitView-splitter.is-draggable.is-hovered", + ".spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper", + ".spectrum-SplitView-splitter.is-draggable.is-hovered .spectrum-SplitView-gripper:before", + ".spectrum-SplitView-splitter.is-draggable:focus", + ".spectrum-SplitView-splitter.is-draggable:focus-visible", + ".spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper", + ".spectrum-SplitView-splitter.is-draggable:focus-visible .spectrum-SplitView-gripper:before", + ".spectrum-SplitView-splitter.is-draggable:hover", + ".spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper", + ".spectrum-SplitView-splitter.is-draggable:hover .spectrum-SplitView-gripper:before" + ], + "mods": [ + "--mod-splitview-background-color", + "--mod-splitview-content-color", + "--mod-splitview-gripper-border-radius", + "--mod-splitview-gripper-border-width-horizontal", + "--mod-splitview-gripper-border-width-vertical", + "--mod-splitview-gripper-height", + "--mod-splitview-gripper-width", + "--mod-splitview-handle-background-color", + "--mod-splitview-handle-background-color-down", + "--mod-splitview-handle-background-color-focus", + "--mod-splitview-handle-background-color-hover", + "--mod-splitview-handle-width", + "--mod-splitview-vertical-gripper-outer-width", + "--mod-splitview-vertical-gripper-reset", + "--mod-splitview-vertical-gripper-width", + "--mod-splitview-vertical-width" + ], + "spectrum": [ + "--spectrum-body-color", + "--spectrum-border-width-200", + "--spectrum-border-width-400", + "--spectrum-corner-radius-75", + "--spectrum-focus-indicator-color", + "--spectrum-gray-100", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-800", + "--spectrum-splitview-background-color", + "--spectrum-splitview-content-color", + "--spectrum-splitview-gripper-border-radius", + "--spectrum-splitview-gripper-border-width-horizontal", + "--spectrum-splitview-gripper-border-width-vertical", + "--spectrum-splitview-gripper-height", + "--spectrum-splitview-gripper-width", + "--spectrum-splitview-handle-background-color", + "--spectrum-splitview-handle-background-color-down", + "--spectrum-splitview-handle-background-color-focus", + "--spectrum-splitview-handle-background-color-hover", + "--spectrum-splitview-handle-width", + "--spectrum-splitview-vertical-gripper-outer-width", + "--spectrum-splitview-vertical-gripper-reset", + "--spectrum-splitview-vertical-gripper-width", + "--spectrum-splitview-vertical-width" + ], + "system": [], + "a11y": [ + "--highcontrast-splitview-handle-background-color", + "--highcontrast-splitview-handle-background-color-down", + "--highcontrast-splitview-handle-background-color-focus", + "--highcontrast-splitview-handle-background-color-hover" + ] +} diff --git a/components/splitview/package.json b/components/splitview/package.json new file mode 100644 index 0000000000..3e1572138c --- /dev/null +++ b/components/splitview/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/splitview", + "version": "5.2.1", + "description": "The Spectrum CSS splitview component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/splitview", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/splitview" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/splitview/template.js b/components/splitview/template.js new file mode 100644 index 0000000000..c116589abb --- /dev/null +++ b/components/splitview/template.js @@ -0,0 +1,63 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-SplitView", + customClasses = [], + orientation = "horizontal", + isResizable = false, + isCollapsible = false, + collapsePosition, + panelLabels = [], + panelStyles = [], + componentHeight = "200px", +}) => { + const collapsible = isCollapsible; + const collapsibleStart = + (typeof collapsePosition !== "undefined" && collapsePosition === "left") || + collapsePosition === "top"; + const collapsibleEnd = + (typeof collapsePosition !== "undefined" && collapsePosition === "right") || + collapsePosition === "bottom"; + const collapsibleClassName = + collapsible && collapsibleStart + ? "start" + : collapsible && collapsibleEnd + ? "end" + : ""; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + > +
    + ${panelLabels[0]} +
    +
    + ${when( + isResizable, + () => html`
    ` + )} +
    +
    + ${panelLabels[1]} +
    +
    + `; +}; diff --git a/components/statuslight/index-base.css b/components/statuslight/index-base.css new file mode 100644 index 0000000000..fb71022487 --- /dev/null +++ b/components/statuslight/index-base.css @@ -0,0 +1,192 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-StatusLight { + --spectrum-statuslight-corner-radius: 50%; + --spectrum-statuslight-font-weight: 400; + --spectrum-statuslight-border-width: var(--spectrum-border-width-100); + --spectrum-statuslight-height: var(--spectrum-component-height-100); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-medium); + --spectrum-statuslight-line-height: var(--spectrum-line-height-100); + --spectrum-statuslight-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-statuslight-font-size: var(--spectrum-font-size-100); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-100); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-medium); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-100); + --spectrum-statuslight-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-statuslight-subdued-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-statuslight-semantic-neutral-color: var(--spectrum-neutral-visual-color); + --spectrum-statuslight-semantic-accent-color: var(--spectrum-accent-visual-color); + --spectrum-statuslight-semantic-negative-color: var(--spectrum-negative-visual-color); + --spectrum-statuslight-semantic-info-color: var(--spectrum-informative-visual-color); + --spectrum-statuslight-semantic-notice-color: var(--spectrum-notice-visual-color); + --spectrum-statuslight-semantic-positive-color: var(--spectrum-positive-visual-color); + --spectrum-statuslight-nonsemantic-gray-color: var(--spectrum-gray-visual-color); + --spectrum-statuslight-nonsemantic-red-color: var(--spectrum-red-visual-color); + --spectrum-statuslight-nonsemantic-orange-color: var(--spectrum-orange-visual-color); + --spectrum-statuslight-nonsemantic-yellow-color: var(--spectrum-yellow-visual-color); + --spectrum-statuslight-nonsemantic-chartreuse-color: var(--spectrum-chartreuse-visual-color); + --spectrum-statuslight-nonsemantic-celery-color: var(--spectrum-celery-visual-color); + --spectrum-statuslight-nonsemantic-green-color: var(--spectrum-green-visual-color); + --spectrum-statuslight-nonsemantic-seafoam-color: var(--spectrum-seafoam-visual-color); + --spectrum-statuslight-nonsemantic-cyan-color: var(--spectrum-cyan-visual-color); + --spectrum-statuslight-nonsemantic-blue-color: var(--spectrum-blue-visual-color); + --spectrum-statuslight-nonsemantic-indigo-color: var(--spectrum-indigo-visual-color); + --spectrum-statuslight-nonsemantic-purple-color: var(--spectrum-purple-visual-color); + --spectrum-statuslight-nonsemantic-fuchsia-color: var(--spectrum-fuchsia-visual-color); + --spectrum-statuslight-nonsemantic-magenta-color: var(--spectrum-magenta-visual-color); +} +.spectrum-StatusLight--sizeS { + --spectrum-statuslight-height: var(--spectrum-component-height-75); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-small); + --spectrum-statuslight-font-size: var(--spectrum-font-size-75); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-75); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-small); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-75); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-StatusLight--sizeM { + --spectrum-statuslight-height: var(--spectrum-component-height-100); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-medium); + --spectrum-statuslight-font-size: var(--spectrum-font-size-100); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-100); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-medium); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-100); +} +.spectrum-StatusLight--sizeL { + --spectrum-statuslight-height: var(--spectrum-component-height-200); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-large); + --spectrum-statuslight-font-size: var(--spectrum-font-size-200); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-200); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-large); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-200); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-200); +} +.spectrum-StatusLight--sizeXL { + --spectrum-statuslight-height: var(--spectrum-component-height-300); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-extra-large); + --spectrum-statuslight-font-size: var(--spectrum-font-size-300); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-300); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-extra-large); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-300); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-300); +} +.spectrum-StatusLight { + display: flex; + flex-direction: row; + align-items: flex-start; + min-block-size: var(--mod-statuslight-height, var(--spectrum-statuslight-height)); + padding-block-start: var(--mod-statuslight-spacing-top-to-label, var(--spectrum-statuslight-spacing-top-to-label)); + padding-block-end: var(--mod-statuslight-spacing-bottom-to-label, var(--spectrum-statuslight-spacing-bottom-to-label)); + padding-inline: 0; + box-sizing: border-box; + font-size: var(--mod-statuslight-font-size, var(--spectrum-statuslight-font-size)); + font-weight: var(--mod-statuslight-font-weight, var(--spectrum-statuslight-font-weight)); + line-height: var(--mod-statuslight-line-height, var(--spectrum-statuslight-line-height)); + color: var(--highcontrast-statuslight-content-color-default, var(--mod-statuslight-content-color-default, var(--spectrum-statuslight-content-color-default))); +} +.spectrum-StatusLight:lang(ja), +.spectrum-StatusLight:lang(ko), +.spectrum-StatusLight:lang(zh) { + line-height: var(--mod-statuslight-line-height-cjk, var(--spectrum-statuslight-line-height-cjk)); +} +.spectrum-StatusLight:before { + content: ""; + flex-grow: 0; + flex-shrink: 0; + display: inline-block; + inline-size: var(--mod-statuslight-dot-size, var(--spectrum-statuslight-dot-size)); + block-size: var(--mod-statuslight-dot-size, var(--spectrum-statuslight-dot-size)); + border-radius: var(--mod-statuslight-corner-radius, var(--spectrum-statuslight-corner-radius)); + --spectrum-statuslight-spacing-computed-top-to-dot: calc(var(--mod-statuslight-spacing-top-to-dot, var(--spectrum-statuslight-spacing-top-to-dot)) - var(--mod-statuslight-spacing-top-to-label, var(--spectrum-statuslight-spacing-top-to-label))); + margin-block-start: var(--spectrum-statuslight-spacing-computed-top-to-dot); + margin-inline-end: var(--mod-statuslight-spacing-dot-to-label, var(--spectrum-statuslight-spacing-dot-to-label)); +} +.spectrum-StatusLight--neutral { + font-style: italic; + color: var(--highcontrast-statuslight-subdued-content-color-default, var(--mod-statuslight-subdued-content-color-default, var(--spectrum-statuslight-subdued-content-color-default))); +} +.spectrum-StatusLight--neutral:before { + background-color: var(--mod-statuslight-semantic-neutral-color, var(--spectrum-statuslight-semantic-neutral-color)); +} +.spectrum-StatusLight--accent:before { + background-color: var(--mod-statuslight-semantic-accent-color, var(--spectrum-statuslight-semantic-accent-color)); +} +.spectrum-StatusLight--info:before { + background-color: var(--mod-statuslight-semantic-info-color, var(--spectrum-statuslight-semantic-info-color)); +} +.spectrum-StatusLight--negative:before { + background-color: var(--mod-statuslight-semantic-negative-color, var(--spectrum-statuslight-semantic-negative-color)); +} +.spectrum-StatusLight--notice:before { + background-color: var(--mod-statuslight-semantic-notice-color, var(--spectrum-statuslight-semantic-notice-color)); +} +.spectrum-StatusLight--positive:before { + background-color: var(--mod-statuslight-semantic-positive-color, var(--spectrum-statuslight-semantic-positive-color)); +} +.spectrum-StatusLight--gray:before { + background-color: var(--mod-statuslight-nonsemantic-gray-color, var(--spectrum-statuslight-nonsemantic-gray-color)); +} +.spectrum-StatusLight--red:before { + background-color: var(--mod-statuslight-nonsemantic-red-color, var(--spectrum-statuslight-nonsemantic-red-color)); +} +.spectrum-StatusLight--orange:before { + background-color: var(--mod-statuslight-nonsemantic-orange-color, var(--spectrum-statuslight-nonsemantic-orange-color)); +} +.spectrum-StatusLight--yellow:before { + background-color: var(--mod-statuslight-nonsemantic-yellow-color, var(--spectrum-statuslight-nonsemantic-yellow-color)); +} +.spectrum-StatusLight--chartreuse:before { + background-color: var(--mod-statuslight-nonsemantic-chartreuse-color, var(--spectrum-statuslight-nonsemantic-chartreuse-color)); +} +.spectrum-StatusLight--celery:before { + background-color: var(--mod-statuslight-nonsemantic-celery-color, var(--spectrum-statuslight-nonsemantic-celery-color)); +} +.spectrum-StatusLight--green:before { + background-color: var(--mod-statuslight-nonsemantic-green-color, var(--spectrum-statuslight-nonsemantic-green-color)); +} +.spectrum-StatusLight--seafoam:before { + background-color: var(--mod-statuslight-nonsemantic-seafoam-color, var(--spectrum-statuslight-nonsemantic-seafoam-color)); +} +.spectrum-StatusLight--cyan:before { + background-color: var(--mod-statuslight-nonsemantic-cyan-color, var(--spectrum-statuslight-nonsemantic-cyan-color)); +} +.spectrum-StatusLight--blue:before { + background-color: var(--mod-statuslight-nonsemantic-blue-color, var(--spectrum-statuslight-nonsemantic-blue-color)); +} +.spectrum-StatusLight--indigo:before { + background-color: var(--mod-statuslight-nonsemantic-indigo-color, var(--spectrum-statuslight-nonsemantic-indigo-color)); +} +.spectrum-StatusLight--purple:before { + background-color: var(--mod-statuslight-nonsemantic-purple-color, var(--spectrum-statuslight-nonsemantic-purple-color)); +} +.spectrum-StatusLight--fuchsia:before { + background-color: var(--mod-statuslight-nonsemantic-fuchsia-color, var(--spectrum-statuslight-nonsemantic-fuchsia-color)); +} +.spectrum-StatusLight--magenta:before { + background-color: var(--mod-statuslight-nonsemantic-magenta-color, var(--spectrum-statuslight-nonsemantic-magenta-color)); +} +@media (forced-colors: active) { + .spectrum-StatusLight { + forced-color-adjust: none; + --highcontrast-statuslight-content-color-default: CanvasText; + --highcontrast-statuslight-subdued-content-color-default: CanvasText; + } + .spectrum-StatusLight:before { + forced-color-adjust: none; + border: var(--mod-statuslight-border-width, var(--spectrum-statuslight-border-width)) solid ButtonText; + } +} +/*# sourceMappingURL=components/statuslight/index.css.map */ diff --git a/components/statuslight/index-vars.css b/components/statuslight/index-vars.css new file mode 100644 index 0000000000..fb71022487 --- /dev/null +++ b/components/statuslight/index-vars.css @@ -0,0 +1,192 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-StatusLight { + --spectrum-statuslight-corner-radius: 50%; + --spectrum-statuslight-font-weight: 400; + --spectrum-statuslight-border-width: var(--spectrum-border-width-100); + --spectrum-statuslight-height: var(--spectrum-component-height-100); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-medium); + --spectrum-statuslight-line-height: var(--spectrum-line-height-100); + --spectrum-statuslight-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-statuslight-font-size: var(--spectrum-font-size-100); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-100); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-medium); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-100); + --spectrum-statuslight-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-statuslight-subdued-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-statuslight-semantic-neutral-color: var(--spectrum-neutral-visual-color); + --spectrum-statuslight-semantic-accent-color: var(--spectrum-accent-visual-color); + --spectrum-statuslight-semantic-negative-color: var(--spectrum-negative-visual-color); + --spectrum-statuslight-semantic-info-color: var(--spectrum-informative-visual-color); + --spectrum-statuslight-semantic-notice-color: var(--spectrum-notice-visual-color); + --spectrum-statuslight-semantic-positive-color: var(--spectrum-positive-visual-color); + --spectrum-statuslight-nonsemantic-gray-color: var(--spectrum-gray-visual-color); + --spectrum-statuslight-nonsemantic-red-color: var(--spectrum-red-visual-color); + --spectrum-statuslight-nonsemantic-orange-color: var(--spectrum-orange-visual-color); + --spectrum-statuslight-nonsemantic-yellow-color: var(--spectrum-yellow-visual-color); + --spectrum-statuslight-nonsemantic-chartreuse-color: var(--spectrum-chartreuse-visual-color); + --spectrum-statuslight-nonsemantic-celery-color: var(--spectrum-celery-visual-color); + --spectrum-statuslight-nonsemantic-green-color: var(--spectrum-green-visual-color); + --spectrum-statuslight-nonsemantic-seafoam-color: var(--spectrum-seafoam-visual-color); + --spectrum-statuslight-nonsemantic-cyan-color: var(--spectrum-cyan-visual-color); + --spectrum-statuslight-nonsemantic-blue-color: var(--spectrum-blue-visual-color); + --spectrum-statuslight-nonsemantic-indigo-color: var(--spectrum-indigo-visual-color); + --spectrum-statuslight-nonsemantic-purple-color: var(--spectrum-purple-visual-color); + --spectrum-statuslight-nonsemantic-fuchsia-color: var(--spectrum-fuchsia-visual-color); + --spectrum-statuslight-nonsemantic-magenta-color: var(--spectrum-magenta-visual-color); +} +.spectrum-StatusLight--sizeS { + --spectrum-statuslight-height: var(--spectrum-component-height-75); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-small); + --spectrum-statuslight-font-size: var(--spectrum-font-size-75); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-75); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-small); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-75); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-StatusLight--sizeM { + --spectrum-statuslight-height: var(--spectrum-component-height-100); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-medium); + --spectrum-statuslight-font-size: var(--spectrum-font-size-100); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-100); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-medium); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-100); +} +.spectrum-StatusLight--sizeL { + --spectrum-statuslight-height: var(--spectrum-component-height-200); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-large); + --spectrum-statuslight-font-size: var(--spectrum-font-size-200); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-200); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-large); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-200); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-200); +} +.spectrum-StatusLight--sizeXL { + --spectrum-statuslight-height: var(--spectrum-component-height-300); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-extra-large); + --spectrum-statuslight-font-size: var(--spectrum-font-size-300); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-300); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-extra-large); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-300); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-300); +} +.spectrum-StatusLight { + display: flex; + flex-direction: row; + align-items: flex-start; + min-block-size: var(--mod-statuslight-height, var(--spectrum-statuslight-height)); + padding-block-start: var(--mod-statuslight-spacing-top-to-label, var(--spectrum-statuslight-spacing-top-to-label)); + padding-block-end: var(--mod-statuslight-spacing-bottom-to-label, var(--spectrum-statuslight-spacing-bottom-to-label)); + padding-inline: 0; + box-sizing: border-box; + font-size: var(--mod-statuslight-font-size, var(--spectrum-statuslight-font-size)); + font-weight: var(--mod-statuslight-font-weight, var(--spectrum-statuslight-font-weight)); + line-height: var(--mod-statuslight-line-height, var(--spectrum-statuslight-line-height)); + color: var(--highcontrast-statuslight-content-color-default, var(--mod-statuslight-content-color-default, var(--spectrum-statuslight-content-color-default))); +} +.spectrum-StatusLight:lang(ja), +.spectrum-StatusLight:lang(ko), +.spectrum-StatusLight:lang(zh) { + line-height: var(--mod-statuslight-line-height-cjk, var(--spectrum-statuslight-line-height-cjk)); +} +.spectrum-StatusLight:before { + content: ""; + flex-grow: 0; + flex-shrink: 0; + display: inline-block; + inline-size: var(--mod-statuslight-dot-size, var(--spectrum-statuslight-dot-size)); + block-size: var(--mod-statuslight-dot-size, var(--spectrum-statuslight-dot-size)); + border-radius: var(--mod-statuslight-corner-radius, var(--spectrum-statuslight-corner-radius)); + --spectrum-statuslight-spacing-computed-top-to-dot: calc(var(--mod-statuslight-spacing-top-to-dot, var(--spectrum-statuslight-spacing-top-to-dot)) - var(--mod-statuslight-spacing-top-to-label, var(--spectrum-statuslight-spacing-top-to-label))); + margin-block-start: var(--spectrum-statuslight-spacing-computed-top-to-dot); + margin-inline-end: var(--mod-statuslight-spacing-dot-to-label, var(--spectrum-statuslight-spacing-dot-to-label)); +} +.spectrum-StatusLight--neutral { + font-style: italic; + color: var(--highcontrast-statuslight-subdued-content-color-default, var(--mod-statuslight-subdued-content-color-default, var(--spectrum-statuslight-subdued-content-color-default))); +} +.spectrum-StatusLight--neutral:before { + background-color: var(--mod-statuslight-semantic-neutral-color, var(--spectrum-statuslight-semantic-neutral-color)); +} +.spectrum-StatusLight--accent:before { + background-color: var(--mod-statuslight-semantic-accent-color, var(--spectrum-statuslight-semantic-accent-color)); +} +.spectrum-StatusLight--info:before { + background-color: var(--mod-statuslight-semantic-info-color, var(--spectrum-statuslight-semantic-info-color)); +} +.spectrum-StatusLight--negative:before { + background-color: var(--mod-statuslight-semantic-negative-color, var(--spectrum-statuslight-semantic-negative-color)); +} +.spectrum-StatusLight--notice:before { + background-color: var(--mod-statuslight-semantic-notice-color, var(--spectrum-statuslight-semantic-notice-color)); +} +.spectrum-StatusLight--positive:before { + background-color: var(--mod-statuslight-semantic-positive-color, var(--spectrum-statuslight-semantic-positive-color)); +} +.spectrum-StatusLight--gray:before { + background-color: var(--mod-statuslight-nonsemantic-gray-color, var(--spectrum-statuslight-nonsemantic-gray-color)); +} +.spectrum-StatusLight--red:before { + background-color: var(--mod-statuslight-nonsemantic-red-color, var(--spectrum-statuslight-nonsemantic-red-color)); +} +.spectrum-StatusLight--orange:before { + background-color: var(--mod-statuslight-nonsemantic-orange-color, var(--spectrum-statuslight-nonsemantic-orange-color)); +} +.spectrum-StatusLight--yellow:before { + background-color: var(--mod-statuslight-nonsemantic-yellow-color, var(--spectrum-statuslight-nonsemantic-yellow-color)); +} +.spectrum-StatusLight--chartreuse:before { + background-color: var(--mod-statuslight-nonsemantic-chartreuse-color, var(--spectrum-statuslight-nonsemantic-chartreuse-color)); +} +.spectrum-StatusLight--celery:before { + background-color: var(--mod-statuslight-nonsemantic-celery-color, var(--spectrum-statuslight-nonsemantic-celery-color)); +} +.spectrum-StatusLight--green:before { + background-color: var(--mod-statuslight-nonsemantic-green-color, var(--spectrum-statuslight-nonsemantic-green-color)); +} +.spectrum-StatusLight--seafoam:before { + background-color: var(--mod-statuslight-nonsemantic-seafoam-color, var(--spectrum-statuslight-nonsemantic-seafoam-color)); +} +.spectrum-StatusLight--cyan:before { + background-color: var(--mod-statuslight-nonsemantic-cyan-color, var(--spectrum-statuslight-nonsemantic-cyan-color)); +} +.spectrum-StatusLight--blue:before { + background-color: var(--mod-statuslight-nonsemantic-blue-color, var(--spectrum-statuslight-nonsemantic-blue-color)); +} +.spectrum-StatusLight--indigo:before { + background-color: var(--mod-statuslight-nonsemantic-indigo-color, var(--spectrum-statuslight-nonsemantic-indigo-color)); +} +.spectrum-StatusLight--purple:before { + background-color: var(--mod-statuslight-nonsemantic-purple-color, var(--spectrum-statuslight-nonsemantic-purple-color)); +} +.spectrum-StatusLight--fuchsia:before { + background-color: var(--mod-statuslight-nonsemantic-fuchsia-color, var(--spectrum-statuslight-nonsemantic-fuchsia-color)); +} +.spectrum-StatusLight--magenta:before { + background-color: var(--mod-statuslight-nonsemantic-magenta-color, var(--spectrum-statuslight-nonsemantic-magenta-color)); +} +@media (forced-colors: active) { + .spectrum-StatusLight { + forced-color-adjust: none; + --highcontrast-statuslight-content-color-default: CanvasText; + --highcontrast-statuslight-subdued-content-color-default: CanvasText; + } + .spectrum-StatusLight:before { + forced-color-adjust: none; + border: var(--mod-statuslight-border-width, var(--spectrum-statuslight-border-width)) solid ButtonText; + } +} +/*# sourceMappingURL=components/statuslight/index.css.map */ diff --git a/components/statuslight/index.css b/components/statuslight/index.css new file mode 100644 index 0000000000..fb71022487 --- /dev/null +++ b/components/statuslight/index.css @@ -0,0 +1,192 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-StatusLight { + --spectrum-statuslight-corner-radius: 50%; + --spectrum-statuslight-font-weight: 400; + --spectrum-statuslight-border-width: var(--spectrum-border-width-100); + --spectrum-statuslight-height: var(--spectrum-component-height-100); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-medium); + --spectrum-statuslight-line-height: var(--spectrum-line-height-100); + --spectrum-statuslight-line-height-cjk: var(--spectrum-cjk-line-height-100); + --spectrum-statuslight-font-size: var(--spectrum-font-size-100); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-100); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-medium); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-100); + --spectrum-statuslight-content-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-statuslight-subdued-content-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-statuslight-semantic-neutral-color: var(--spectrum-neutral-visual-color); + --spectrum-statuslight-semantic-accent-color: var(--spectrum-accent-visual-color); + --spectrum-statuslight-semantic-negative-color: var(--spectrum-negative-visual-color); + --spectrum-statuslight-semantic-info-color: var(--spectrum-informative-visual-color); + --spectrum-statuslight-semantic-notice-color: var(--spectrum-notice-visual-color); + --spectrum-statuslight-semantic-positive-color: var(--spectrum-positive-visual-color); + --spectrum-statuslight-nonsemantic-gray-color: var(--spectrum-gray-visual-color); + --spectrum-statuslight-nonsemantic-red-color: var(--spectrum-red-visual-color); + --spectrum-statuslight-nonsemantic-orange-color: var(--spectrum-orange-visual-color); + --spectrum-statuslight-nonsemantic-yellow-color: var(--spectrum-yellow-visual-color); + --spectrum-statuslight-nonsemantic-chartreuse-color: var(--spectrum-chartreuse-visual-color); + --spectrum-statuslight-nonsemantic-celery-color: var(--spectrum-celery-visual-color); + --spectrum-statuslight-nonsemantic-green-color: var(--spectrum-green-visual-color); + --spectrum-statuslight-nonsemantic-seafoam-color: var(--spectrum-seafoam-visual-color); + --spectrum-statuslight-nonsemantic-cyan-color: var(--spectrum-cyan-visual-color); + --spectrum-statuslight-nonsemantic-blue-color: var(--spectrum-blue-visual-color); + --spectrum-statuslight-nonsemantic-indigo-color: var(--spectrum-indigo-visual-color); + --spectrum-statuslight-nonsemantic-purple-color: var(--spectrum-purple-visual-color); + --spectrum-statuslight-nonsemantic-fuchsia-color: var(--spectrum-fuchsia-visual-color); + --spectrum-statuslight-nonsemantic-magenta-color: var(--spectrum-magenta-visual-color); +} +.spectrum-StatusLight--sizeS { + --spectrum-statuslight-height: var(--spectrum-component-height-75); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-small); + --spectrum-statuslight-font-size: var(--spectrum-font-size-75); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-75); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-small); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-75); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-75); +} +.spectrum-StatusLight--sizeM { + --spectrum-statuslight-height: var(--spectrum-component-height-100); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-medium); + --spectrum-statuslight-font-size: var(--spectrum-font-size-100); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-100); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-medium); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-100); +} +.spectrum-StatusLight--sizeL { + --spectrum-statuslight-height: var(--spectrum-component-height-200); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-large); + --spectrum-statuslight-font-size: var(--spectrum-font-size-200); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-200); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-large); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-200); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-200); +} +.spectrum-StatusLight--sizeXL { + --spectrum-statuslight-height: var(--spectrum-component-height-300); + --spectrum-statuslight-dot-size: var(--spectrum-status-light-dot-size-extra-large); + --spectrum-statuslight-font-size: var(--spectrum-font-size-300); + --spectrum-statuslight-spacing-dot-to-label: var(--spectrum-text-to-visual-300); + --spectrum-statuslight-spacing-top-to-dot: var(--spectrum-status-light-top-to-dot-extra-large); + --spectrum-statuslight-spacing-top-to-label: var(--spectrum-component-top-to-text-300); + --spectrum-statuslight-spacing-bottom-to-label: var(--spectrum-component-bottom-to-text-300); +} +.spectrum-StatusLight { + display: flex; + flex-direction: row; + align-items: flex-start; + min-block-size: var(--mod-statuslight-height, var(--spectrum-statuslight-height)); + padding-block-start: var(--mod-statuslight-spacing-top-to-label, var(--spectrum-statuslight-spacing-top-to-label)); + padding-block-end: var(--mod-statuslight-spacing-bottom-to-label, var(--spectrum-statuslight-spacing-bottom-to-label)); + padding-inline: 0; + box-sizing: border-box; + font-size: var(--mod-statuslight-font-size, var(--spectrum-statuslight-font-size)); + font-weight: var(--mod-statuslight-font-weight, var(--spectrum-statuslight-font-weight)); + line-height: var(--mod-statuslight-line-height, var(--spectrum-statuslight-line-height)); + color: var(--highcontrast-statuslight-content-color-default, var(--mod-statuslight-content-color-default, var(--spectrum-statuslight-content-color-default))); +} +.spectrum-StatusLight:lang(ja), +.spectrum-StatusLight:lang(ko), +.spectrum-StatusLight:lang(zh) { + line-height: var(--mod-statuslight-line-height-cjk, var(--spectrum-statuslight-line-height-cjk)); +} +.spectrum-StatusLight:before { + content: ""; + flex-grow: 0; + flex-shrink: 0; + display: inline-block; + inline-size: var(--mod-statuslight-dot-size, var(--spectrum-statuslight-dot-size)); + block-size: var(--mod-statuslight-dot-size, var(--spectrum-statuslight-dot-size)); + border-radius: var(--mod-statuslight-corner-radius, var(--spectrum-statuslight-corner-radius)); + --spectrum-statuslight-spacing-computed-top-to-dot: calc(var(--mod-statuslight-spacing-top-to-dot, var(--spectrum-statuslight-spacing-top-to-dot)) - var(--mod-statuslight-spacing-top-to-label, var(--spectrum-statuslight-spacing-top-to-label))); + margin-block-start: var(--spectrum-statuslight-spacing-computed-top-to-dot); + margin-inline-end: var(--mod-statuslight-spacing-dot-to-label, var(--spectrum-statuslight-spacing-dot-to-label)); +} +.spectrum-StatusLight--neutral { + font-style: italic; + color: var(--highcontrast-statuslight-subdued-content-color-default, var(--mod-statuslight-subdued-content-color-default, var(--spectrum-statuslight-subdued-content-color-default))); +} +.spectrum-StatusLight--neutral:before { + background-color: var(--mod-statuslight-semantic-neutral-color, var(--spectrum-statuslight-semantic-neutral-color)); +} +.spectrum-StatusLight--accent:before { + background-color: var(--mod-statuslight-semantic-accent-color, var(--spectrum-statuslight-semantic-accent-color)); +} +.spectrum-StatusLight--info:before { + background-color: var(--mod-statuslight-semantic-info-color, var(--spectrum-statuslight-semantic-info-color)); +} +.spectrum-StatusLight--negative:before { + background-color: var(--mod-statuslight-semantic-negative-color, var(--spectrum-statuslight-semantic-negative-color)); +} +.spectrum-StatusLight--notice:before { + background-color: var(--mod-statuslight-semantic-notice-color, var(--spectrum-statuslight-semantic-notice-color)); +} +.spectrum-StatusLight--positive:before { + background-color: var(--mod-statuslight-semantic-positive-color, var(--spectrum-statuslight-semantic-positive-color)); +} +.spectrum-StatusLight--gray:before { + background-color: var(--mod-statuslight-nonsemantic-gray-color, var(--spectrum-statuslight-nonsemantic-gray-color)); +} +.spectrum-StatusLight--red:before { + background-color: var(--mod-statuslight-nonsemantic-red-color, var(--spectrum-statuslight-nonsemantic-red-color)); +} +.spectrum-StatusLight--orange:before { + background-color: var(--mod-statuslight-nonsemantic-orange-color, var(--spectrum-statuslight-nonsemantic-orange-color)); +} +.spectrum-StatusLight--yellow:before { + background-color: var(--mod-statuslight-nonsemantic-yellow-color, var(--spectrum-statuslight-nonsemantic-yellow-color)); +} +.spectrum-StatusLight--chartreuse:before { + background-color: var(--mod-statuslight-nonsemantic-chartreuse-color, var(--spectrum-statuslight-nonsemantic-chartreuse-color)); +} +.spectrum-StatusLight--celery:before { + background-color: var(--mod-statuslight-nonsemantic-celery-color, var(--spectrum-statuslight-nonsemantic-celery-color)); +} +.spectrum-StatusLight--green:before { + background-color: var(--mod-statuslight-nonsemantic-green-color, var(--spectrum-statuslight-nonsemantic-green-color)); +} +.spectrum-StatusLight--seafoam:before { + background-color: var(--mod-statuslight-nonsemantic-seafoam-color, var(--spectrum-statuslight-nonsemantic-seafoam-color)); +} +.spectrum-StatusLight--cyan:before { + background-color: var(--mod-statuslight-nonsemantic-cyan-color, var(--spectrum-statuslight-nonsemantic-cyan-color)); +} +.spectrum-StatusLight--blue:before { + background-color: var(--mod-statuslight-nonsemantic-blue-color, var(--spectrum-statuslight-nonsemantic-blue-color)); +} +.spectrum-StatusLight--indigo:before { + background-color: var(--mod-statuslight-nonsemantic-indigo-color, var(--spectrum-statuslight-nonsemantic-indigo-color)); +} +.spectrum-StatusLight--purple:before { + background-color: var(--mod-statuslight-nonsemantic-purple-color, var(--spectrum-statuslight-nonsemantic-purple-color)); +} +.spectrum-StatusLight--fuchsia:before { + background-color: var(--mod-statuslight-nonsemantic-fuchsia-color, var(--spectrum-statuslight-nonsemantic-fuchsia-color)); +} +.spectrum-StatusLight--magenta:before { + background-color: var(--mod-statuslight-nonsemantic-magenta-color, var(--spectrum-statuslight-nonsemantic-magenta-color)); +} +@media (forced-colors: active) { + .spectrum-StatusLight { + forced-color-adjust: none; + --highcontrast-statuslight-content-color-default: CanvasText; + --highcontrast-statuslight-subdued-content-color-default: CanvasText; + } + .spectrum-StatusLight:before { + forced-color-adjust: none; + border: var(--mod-statuslight-border-width, var(--spectrum-statuslight-border-width)) solid ButtonText; + } +} +/*# sourceMappingURL=components/statuslight/index.css.map */ diff --git a/components/statuslight/metadata.json b/components/statuslight/metadata.json new file mode 100644 index 0000000000..40abe7b15e --- /dev/null +++ b/components/statuslight/metadata.json @@ -0,0 +1,163 @@ +{ + "selectors": [ + ".spectrum-StatusLight", + ".spectrum-StatusLight--accent:before", + ".spectrum-StatusLight--blue:before", + ".spectrum-StatusLight--celery:before", + ".spectrum-StatusLight--chartreuse:before", + ".spectrum-StatusLight--cyan:before", + ".spectrum-StatusLight--fuchsia:before", + ".spectrum-StatusLight--gray:before", + ".spectrum-StatusLight--green:before", + ".spectrum-StatusLight--indigo:before", + ".spectrum-StatusLight--info:before", + ".spectrum-StatusLight--magenta:before", + ".spectrum-StatusLight--negative:before", + ".spectrum-StatusLight--neutral", + ".spectrum-StatusLight--neutral:before", + ".spectrum-StatusLight--notice:before", + ".spectrum-StatusLight--orange:before", + ".spectrum-StatusLight--positive:before", + ".spectrum-StatusLight--purple:before", + ".spectrum-StatusLight--red:before", + ".spectrum-StatusLight--seafoam:before", + ".spectrum-StatusLight--sizeL", + ".spectrum-StatusLight--sizeM", + ".spectrum-StatusLight--sizeS", + ".spectrum-StatusLight--sizeXL", + ".spectrum-StatusLight--yellow:before", + ".spectrum-StatusLight:before", + ".spectrum-StatusLight:lang(ja),\n.spectrum-StatusLight:lang(ko),\n.spectrum-StatusLight:lang(zh)" + ], + "mods": [ + "--mod-statuslight-border-width", + "--mod-statuslight-content-color-default", + "--mod-statuslight-corner-radius", + "--mod-statuslight-dot-size", + "--mod-statuslight-font-size", + "--mod-statuslight-font-weight", + "--mod-statuslight-height", + "--mod-statuslight-line-height", + "--mod-statuslight-line-height-cjk", + "--mod-statuslight-nonsemantic-blue-color", + "--mod-statuslight-nonsemantic-celery-color", + "--mod-statuslight-nonsemantic-chartreuse-color", + "--mod-statuslight-nonsemantic-cyan-color", + "--mod-statuslight-nonsemantic-fuchsia-color", + "--mod-statuslight-nonsemantic-gray-color", + "--mod-statuslight-nonsemantic-green-color", + "--mod-statuslight-nonsemantic-indigo-color", + "--mod-statuslight-nonsemantic-magenta-color", + "--mod-statuslight-nonsemantic-orange-color", + "--mod-statuslight-nonsemantic-purple-color", + "--mod-statuslight-nonsemantic-red-color", + "--mod-statuslight-nonsemantic-seafoam-color", + "--mod-statuslight-nonsemantic-yellow-color", + "--mod-statuslight-semantic-accent-color", + "--mod-statuslight-semantic-info-color", + "--mod-statuslight-semantic-negative-color", + "--mod-statuslight-semantic-neutral-color", + "--mod-statuslight-semantic-notice-color", + "--mod-statuslight-semantic-positive-color", + "--mod-statuslight-spacing-bottom-to-label", + "--mod-statuslight-spacing-dot-to-label", + "--mod-statuslight-spacing-top-to-dot", + "--mod-statuslight-spacing-top-to-label", + "--mod-statuslight-subdued-content-color-default" + ], + "spectrum": [ + "--spectrum-accent-visual-color", + "--spectrum-blue-visual-color", + "--spectrum-border-width-100", + "--spectrum-celery-visual-color", + "--spectrum-chartreuse-visual-color", + "--spectrum-cjk-line-height-100", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-cyan-visual-color", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-fuchsia-visual-color", + "--spectrum-gray-visual-color", + "--spectrum-green-visual-color", + "--spectrum-indigo-visual-color", + "--spectrum-informative-visual-color", + "--spectrum-line-height-100", + "--spectrum-magenta-visual-color", + "--spectrum-negative-visual-color", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-neutral-visual-color", + "--spectrum-notice-visual-color", + "--spectrum-orange-visual-color", + "--spectrum-positive-visual-color", + "--spectrum-purple-visual-color", + "--spectrum-red-visual-color", + "--spectrum-seafoam-visual-color", + "--spectrum-status-light-dot-size-extra-large", + "--spectrum-status-light-dot-size-large", + "--spectrum-status-light-dot-size-medium", + "--spectrum-status-light-dot-size-small", + "--spectrum-status-light-top-to-dot-extra-large", + "--spectrum-status-light-top-to-dot-large", + "--spectrum-status-light-top-to-dot-medium", + "--spectrum-status-light-top-to-dot-small", + "--spectrum-statuslight-border-width", + "--spectrum-statuslight-content-color-default", + "--spectrum-statuslight-corner-radius", + "--spectrum-statuslight-dot-size", + "--spectrum-statuslight-font-size", + "--spectrum-statuslight-font-weight", + "--spectrum-statuslight-height", + "--spectrum-statuslight-line-height", + "--spectrum-statuslight-line-height-cjk", + "--spectrum-statuslight-nonsemantic-blue-color", + "--spectrum-statuslight-nonsemantic-celery-color", + "--spectrum-statuslight-nonsemantic-chartreuse-color", + "--spectrum-statuslight-nonsemantic-cyan-color", + "--spectrum-statuslight-nonsemantic-fuchsia-color", + "--spectrum-statuslight-nonsemantic-gray-color", + "--spectrum-statuslight-nonsemantic-green-color", + "--spectrum-statuslight-nonsemantic-indigo-color", + "--spectrum-statuslight-nonsemantic-magenta-color", + "--spectrum-statuslight-nonsemantic-orange-color", + "--spectrum-statuslight-nonsemantic-purple-color", + "--spectrum-statuslight-nonsemantic-red-color", + "--spectrum-statuslight-nonsemantic-seafoam-color", + "--spectrum-statuslight-nonsemantic-yellow-color", + "--spectrum-statuslight-semantic-accent-color", + "--spectrum-statuslight-semantic-info-color", + "--spectrum-statuslight-semantic-negative-color", + "--spectrum-statuslight-semantic-neutral-color", + "--spectrum-statuslight-semantic-notice-color", + "--spectrum-statuslight-semantic-positive-color", + "--spectrum-statuslight-spacing-bottom-to-label", + "--spectrum-statuslight-spacing-computed-top-to-dot", + "--spectrum-statuslight-spacing-dot-to-label", + "--spectrum-statuslight-spacing-top-to-dot", + "--spectrum-statuslight-spacing-top-to-label", + "--spectrum-statuslight-subdued-content-color-default", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-75", + "--spectrum-yellow-visual-color" + ], + "system": [], + "a11y": [ + "--highcontrast-statuslight-content-color-default", + "--highcontrast-statuslight-subdued-content-color-default" + ] +} diff --git a/components/statuslight/package.json b/components/statuslight/package.json new file mode 100644 index 0000000000..77d076005a --- /dev/null +++ b/components/statuslight/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/statuslight", + "version": "7.2.0", + "description": "The Spectrum CSS statuslight component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/statuslight", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/statuslight" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/statuslight/template.js b/components/statuslight/template.js new file mode 100644 index 0000000000..c510d2fd75 --- /dev/null +++ b/components/statuslight/template.js @@ -0,0 +1,25 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-StatusLight", + size = "m", + variant = "info", + label, + customStyles = {}, +}) => html` +
    + ${label} +
    +`; diff --git a/components/steplist/index-base.css b/components/steplist/index-base.css new file mode 100644 index 0000000000..d6ce7cd5f7 --- /dev/null +++ b/components/steplist/index-base.css @@ -0,0 +1,220 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Steplist { + --spectrum-steplist-step-width: 80px; + --spectrum-steplist-marker-diameter: 8px; + --spectrum-steplist-marker-hitArea: 20px; + --spectrum-steplist-segment-height: 2px; + --spectrum-steplist-topPadding: 22px; + --spectrum-steplist-small-topPadding: 11px; + --spectrum-steplist-sidePadding: 60px; + --spectrum-steplist-label-labelOffset: 10px; + --spectrum-steplist-label-text-size: 12px; + --spectrum-steplist-current-label-text-color: var(--spectrum-gray-800); + --spectrum-steplist-current-marker-color: var(--spectrum-gray-800); + --spectrum-steplist-complete-label-text-color: var(--spectrum-gray-700); + --spectrum-steplist-incomplete-label-color: var(--spectrum-gray-600); + --spectrum-steplist-complete-marker-background-color: var(--spectrum-gray-600); + --spectrum-steplist-incomplete-marker-border-color: var(--spectrum-gray-300); + --spectrum-steplist-incomplete-segment-border-block-end-color: var(--spectrum-gray-300); + --spectrum-steplist-complete-segment-border-block-end-color: var(--spectrum-gray-600); + z-index: 0; + position: relative; + display: block; + vertical-align: top; + margin: 0; + padding-block-start: var(--mod-steplist-topPadding, var(--spectrum-steplist-topPadding)); + padding-inline-start: var(--mod-steplist-sidePadding, var(--spectrum-steplist-sidePadding)); + padding-inline-end: var(--mod-steplist-sidePadding, var(--spectrum-steplist-sidePadding)); + text-align: center; + white-space: nowrap; + font-size: 0; + line-height: 16px; +} +.spectrum-Steplist--interactive .spectrum-Steplist-label, +.spectrum-Steplist--interactive .spectrum-Steplist-markerContainer { + cursor: pointer; +} +.spectrum-Steplist--interactive .spectrum-Steplist-item :focus .spectrum-Steplist-marker, +.spectrum-Steplist--interactive .spectrum-Steplist-item.is-focused .spectrum-Steplist-marker, +.spectrum-Steplist--interactive .spectrum-Steplist-item:focus .spectrum-Steplist-marker { + background-color: var(--highcontrast-steplist-current-marker-color-key-focus, var(--mod-steplist-current-marker-color-key-focus, var(--spectrum-steplist-current-marker-color-key-focus))); +} +.spectrum-Steplist--small { + padding-block: var(--mod-steplist-small-topPadding, var(--spectrum-steplist-small-topPadding)); + padding-inline: 0; +} +.spectrum-Steplist--small .spectrum-Steplist-item { + padding-block: 0; + padding-inline: 0 40px; + inline-size: 80px; +} +.spectrum-Steplist--small .spectrum-Steplist-item .spectrum-Steplist-label { + display: none; +} +.spectrum-Steplist--small .spectrum-Steplist-item:first-child, +.spectrum-Steplist--small .spectrum-Steplist-item:last-child { + inline-size: 20px; +} +.spectrum-Steplist--small .spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer { + margin-inline-start: -10px; +} +.spectrum-Steplist--small .spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer { + margin-inline-end: -10px; +} +.spectrum-Steplist-item { + outline: none; + position: relative; + display: inline-block; + margin: 0; + vertical-align: bottom; + box-sizing: initial; + inline-size: var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)); + padding-block: 0; + padding-inline: 0 calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) / 2); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-label { + color: var(--mod-steplist-complete-label-text-color, var(--spectrum-steplist-complete-label-text-color)); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-marker { + background-color: var(--highcontrast-steplist-complete-marker-background-color, var(--mod-steplist-complete-marker-background-color, var(--spectrum-steplist-complete-marker-background-color))); + border: none; +} +.spectrum-Steplist-item.is-complete + .spectrum-Steplist-item .spectrum-Steplist-segment { + border-block-end-width: var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)); + border-block-end-style: solid; +} +.spectrum-Steplist-item.is-selected :focus, +.spectrum-Steplist-item.is-selected:focus { + outline: none; +} +.spectrum-Steplist-item.is-selected .spectrum-Steplist-label { + color: var(--mod-steplist-current-label-text-color, var(--spectrum-steplist-current-label-text-color)); +} +.spectrum-Steplist-item.is-selected .spectrum-Steplist-marker { + border: none; + background-color: var(--highcontrast-steplist-current-marker-color, var(--mod-steplist-current-marker-color, var(--spectrum-steplist-current-marker-color))); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-segment, +.spectrum-Steplist-item.is-selected .spectrum-Steplist-segment { + border-block-end-color: var(--mod-steplist-complete-segment-border-block-end-color, var(--spectrum-steplist-complete-segment-border-block-end-color)); +} +.spectrum-Steplist-label { + position: absolute; + inset-inline-start: 50%; + inset-block-end: var(--mod-steplist-label-labelOffset, var(--spectrum-steplist-label-labelOffset)); + display: block; + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) * 1.5); + font-size: var(--mod-steplist-label-text-size, var(--spectrum-steplist-label-text-size)); + white-space: normal; + transform: translateX(-50%); + color: var(--mod-steplist-incomplete-label-color, var(--spectrum-steplist-incomplete-label-color)); +} +.spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-label { + transform: translateX(50%); +} +.spectrum-Steplist-markerContainer { + display: block; + z-index: 2; + position: absolute; + inset-block-end: -10px; + inset-inline-start: 50%; + inline-size: var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)); + block-size: var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)); + margin-inline-start: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +.spectrum-Steplist-marker { + box-sizing: border-box; + display: block; + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + margin-block-start: calc(var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) / 2 * -1); + margin-inline-start: calc(var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) / 2 * -1); + inline-size: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + block-size: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + border-radius: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + border: 2px solid; + border-color: var(--mod-steplist-incomplete-marker-border-color, var(--spectrum-steplist-incomplete-marker-border-color)); + background: transparent; +} +.spectrum-Steplist-segment { + display: block; + z-index: 1; + position: absolute; + inset-inline-end: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 1.5); + box-sizing: initial; + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) * 1.5 - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 2); + inset-block-end: calc(var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)) / 2 * -1); + border-block-end-width: var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)); + border-block-end-style: dashed; + border-block-end-color: var(--mod-steplist-incomplete-segment-border-block-end-color, var(--spectrum-steplist-incomplete-segment-border-block-end-color)); +} +.spectrum-Steplist-item:first-child .spectrum-Steplist-label, +.spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer { + inset-inline-start: 0; +} +.spectrum-Steplist-item:first-child .spectrum-Steplist-segment { + display: none; +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-label { + inset-inline-start: auto; + inset-inline-end: 0; + transform: translateX(50%); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-item:last-child .spectrum-Steplist-label { + transform: translateX(-50%); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer { + inset-inline-start: auto; + inset-inline-end: 0; + margin-inline-start: 0; + margin-inline-end: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-segment { + inset-inline-end: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + inset-inline-start: auto; +} +.spectrum-Steplist-item:first-child, +.spectrum-Steplist-item:last-child { + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) / 2 - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 2.5); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-label { + inset-inline-start: 50%; + transform: translate(-50%); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-item:only-child .spectrum-Steplist-label { + transform: translateX(50%); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-markerContainer { + inset-inline-start: 50%; + margin-inline-end: 0; + margin-inline-start: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +@media (forced-colors: active) { + .spectrum-Steplist { + --highcontrast-steplist-complete-marker-background-color: CanvasText; + --highcontrast-steplist-current-marker-color: Highlight; + --highcontrast-steplist-current-marker-color-key-focus: Highlight; + } + @supports (color: SelectedItem) { + .spectrum-Steplist { + --highcontrast-steplist-current-marker-color: SelectedItem; + } + } +} +/*# sourceMappingURL=components/steplist/index.css.map */ diff --git a/components/steplist/index-vars.css b/components/steplist/index-vars.css new file mode 100644 index 0000000000..d6ce7cd5f7 --- /dev/null +++ b/components/steplist/index-vars.css @@ -0,0 +1,220 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Steplist { + --spectrum-steplist-step-width: 80px; + --spectrum-steplist-marker-diameter: 8px; + --spectrum-steplist-marker-hitArea: 20px; + --spectrum-steplist-segment-height: 2px; + --spectrum-steplist-topPadding: 22px; + --spectrum-steplist-small-topPadding: 11px; + --spectrum-steplist-sidePadding: 60px; + --spectrum-steplist-label-labelOffset: 10px; + --spectrum-steplist-label-text-size: 12px; + --spectrum-steplist-current-label-text-color: var(--spectrum-gray-800); + --spectrum-steplist-current-marker-color: var(--spectrum-gray-800); + --spectrum-steplist-complete-label-text-color: var(--spectrum-gray-700); + --spectrum-steplist-incomplete-label-color: var(--spectrum-gray-600); + --spectrum-steplist-complete-marker-background-color: var(--spectrum-gray-600); + --spectrum-steplist-incomplete-marker-border-color: var(--spectrum-gray-300); + --spectrum-steplist-incomplete-segment-border-block-end-color: var(--spectrum-gray-300); + --spectrum-steplist-complete-segment-border-block-end-color: var(--spectrum-gray-600); + z-index: 0; + position: relative; + display: block; + vertical-align: top; + margin: 0; + padding-block-start: var(--mod-steplist-topPadding, var(--spectrum-steplist-topPadding)); + padding-inline-start: var(--mod-steplist-sidePadding, var(--spectrum-steplist-sidePadding)); + padding-inline-end: var(--mod-steplist-sidePadding, var(--spectrum-steplist-sidePadding)); + text-align: center; + white-space: nowrap; + font-size: 0; + line-height: 16px; +} +.spectrum-Steplist--interactive .spectrum-Steplist-label, +.spectrum-Steplist--interactive .spectrum-Steplist-markerContainer { + cursor: pointer; +} +.spectrum-Steplist--interactive .spectrum-Steplist-item :focus .spectrum-Steplist-marker, +.spectrum-Steplist--interactive .spectrum-Steplist-item.is-focused .spectrum-Steplist-marker, +.spectrum-Steplist--interactive .spectrum-Steplist-item:focus .spectrum-Steplist-marker { + background-color: var(--highcontrast-steplist-current-marker-color-key-focus, var(--mod-steplist-current-marker-color-key-focus, var(--spectrum-steplist-current-marker-color-key-focus))); +} +.spectrum-Steplist--small { + padding-block: var(--mod-steplist-small-topPadding, var(--spectrum-steplist-small-topPadding)); + padding-inline: 0; +} +.spectrum-Steplist--small .spectrum-Steplist-item { + padding-block: 0; + padding-inline: 0 40px; + inline-size: 80px; +} +.spectrum-Steplist--small .spectrum-Steplist-item .spectrum-Steplist-label { + display: none; +} +.spectrum-Steplist--small .spectrum-Steplist-item:first-child, +.spectrum-Steplist--small .spectrum-Steplist-item:last-child { + inline-size: 20px; +} +.spectrum-Steplist--small .spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer { + margin-inline-start: -10px; +} +.spectrum-Steplist--small .spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer { + margin-inline-end: -10px; +} +.spectrum-Steplist-item { + outline: none; + position: relative; + display: inline-block; + margin: 0; + vertical-align: bottom; + box-sizing: initial; + inline-size: var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)); + padding-block: 0; + padding-inline: 0 calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) / 2); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-label { + color: var(--mod-steplist-complete-label-text-color, var(--spectrum-steplist-complete-label-text-color)); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-marker { + background-color: var(--highcontrast-steplist-complete-marker-background-color, var(--mod-steplist-complete-marker-background-color, var(--spectrum-steplist-complete-marker-background-color))); + border: none; +} +.spectrum-Steplist-item.is-complete + .spectrum-Steplist-item .spectrum-Steplist-segment { + border-block-end-width: var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)); + border-block-end-style: solid; +} +.spectrum-Steplist-item.is-selected :focus, +.spectrum-Steplist-item.is-selected:focus { + outline: none; +} +.spectrum-Steplist-item.is-selected .spectrum-Steplist-label { + color: var(--mod-steplist-current-label-text-color, var(--spectrum-steplist-current-label-text-color)); +} +.spectrum-Steplist-item.is-selected .spectrum-Steplist-marker { + border: none; + background-color: var(--highcontrast-steplist-current-marker-color, var(--mod-steplist-current-marker-color, var(--spectrum-steplist-current-marker-color))); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-segment, +.spectrum-Steplist-item.is-selected .spectrum-Steplist-segment { + border-block-end-color: var(--mod-steplist-complete-segment-border-block-end-color, var(--spectrum-steplist-complete-segment-border-block-end-color)); +} +.spectrum-Steplist-label { + position: absolute; + inset-inline-start: 50%; + inset-block-end: var(--mod-steplist-label-labelOffset, var(--spectrum-steplist-label-labelOffset)); + display: block; + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) * 1.5); + font-size: var(--mod-steplist-label-text-size, var(--spectrum-steplist-label-text-size)); + white-space: normal; + transform: translateX(-50%); + color: var(--mod-steplist-incomplete-label-color, var(--spectrum-steplist-incomplete-label-color)); +} +.spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-label { + transform: translateX(50%); +} +.spectrum-Steplist-markerContainer { + display: block; + z-index: 2; + position: absolute; + inset-block-end: -10px; + inset-inline-start: 50%; + inline-size: var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)); + block-size: var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)); + margin-inline-start: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +.spectrum-Steplist-marker { + box-sizing: border-box; + display: block; + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + margin-block-start: calc(var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) / 2 * -1); + margin-inline-start: calc(var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) / 2 * -1); + inline-size: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + block-size: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + border-radius: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + border: 2px solid; + border-color: var(--mod-steplist-incomplete-marker-border-color, var(--spectrum-steplist-incomplete-marker-border-color)); + background: transparent; +} +.spectrum-Steplist-segment { + display: block; + z-index: 1; + position: absolute; + inset-inline-end: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 1.5); + box-sizing: initial; + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) * 1.5 - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 2); + inset-block-end: calc(var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)) / 2 * -1); + border-block-end-width: var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)); + border-block-end-style: dashed; + border-block-end-color: var(--mod-steplist-incomplete-segment-border-block-end-color, var(--spectrum-steplist-incomplete-segment-border-block-end-color)); +} +.spectrum-Steplist-item:first-child .spectrum-Steplist-label, +.spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer { + inset-inline-start: 0; +} +.spectrum-Steplist-item:first-child .spectrum-Steplist-segment { + display: none; +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-label { + inset-inline-start: auto; + inset-inline-end: 0; + transform: translateX(50%); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-item:last-child .spectrum-Steplist-label { + transform: translateX(-50%); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer { + inset-inline-start: auto; + inset-inline-end: 0; + margin-inline-start: 0; + margin-inline-end: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-segment { + inset-inline-end: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + inset-inline-start: auto; +} +.spectrum-Steplist-item:first-child, +.spectrum-Steplist-item:last-child { + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) / 2 - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 2.5); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-label { + inset-inline-start: 50%; + transform: translate(-50%); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-item:only-child .spectrum-Steplist-label { + transform: translateX(50%); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-markerContainer { + inset-inline-start: 50%; + margin-inline-end: 0; + margin-inline-start: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +@media (forced-colors: active) { + .spectrum-Steplist { + --highcontrast-steplist-complete-marker-background-color: CanvasText; + --highcontrast-steplist-current-marker-color: Highlight; + --highcontrast-steplist-current-marker-color-key-focus: Highlight; + } + @supports (color: SelectedItem) { + .spectrum-Steplist { + --highcontrast-steplist-current-marker-color: SelectedItem; + } + } +} +/*# sourceMappingURL=components/steplist/index.css.map */ diff --git a/components/steplist/index.css b/components/steplist/index.css new file mode 100644 index 0000000000..d6ce7cd5f7 --- /dev/null +++ b/components/steplist/index.css @@ -0,0 +1,220 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Steplist { + --spectrum-steplist-step-width: 80px; + --spectrum-steplist-marker-diameter: 8px; + --spectrum-steplist-marker-hitArea: 20px; + --spectrum-steplist-segment-height: 2px; + --spectrum-steplist-topPadding: 22px; + --spectrum-steplist-small-topPadding: 11px; + --spectrum-steplist-sidePadding: 60px; + --spectrum-steplist-label-labelOffset: 10px; + --spectrum-steplist-label-text-size: 12px; + --spectrum-steplist-current-label-text-color: var(--spectrum-gray-800); + --spectrum-steplist-current-marker-color: var(--spectrum-gray-800); + --spectrum-steplist-complete-label-text-color: var(--spectrum-gray-700); + --spectrum-steplist-incomplete-label-color: var(--spectrum-gray-600); + --spectrum-steplist-complete-marker-background-color: var(--spectrum-gray-600); + --spectrum-steplist-incomplete-marker-border-color: var(--spectrum-gray-300); + --spectrum-steplist-incomplete-segment-border-block-end-color: var(--spectrum-gray-300); + --spectrum-steplist-complete-segment-border-block-end-color: var(--spectrum-gray-600); + z-index: 0; + position: relative; + display: block; + vertical-align: top; + margin: 0; + padding-block-start: var(--mod-steplist-topPadding, var(--spectrum-steplist-topPadding)); + padding-inline-start: var(--mod-steplist-sidePadding, var(--spectrum-steplist-sidePadding)); + padding-inline-end: var(--mod-steplist-sidePadding, var(--spectrum-steplist-sidePadding)); + text-align: center; + white-space: nowrap; + font-size: 0; + line-height: 16px; +} +.spectrum-Steplist--interactive .spectrum-Steplist-label, +.spectrum-Steplist--interactive .spectrum-Steplist-markerContainer { + cursor: pointer; +} +.spectrum-Steplist--interactive .spectrum-Steplist-item :focus .spectrum-Steplist-marker, +.spectrum-Steplist--interactive .spectrum-Steplist-item.is-focused .spectrum-Steplist-marker, +.spectrum-Steplist--interactive .spectrum-Steplist-item:focus .spectrum-Steplist-marker { + background-color: var(--highcontrast-steplist-current-marker-color-key-focus, var(--mod-steplist-current-marker-color-key-focus, var(--spectrum-steplist-current-marker-color-key-focus))); +} +.spectrum-Steplist--small { + padding-block: var(--mod-steplist-small-topPadding, var(--spectrum-steplist-small-topPadding)); + padding-inline: 0; +} +.spectrum-Steplist--small .spectrum-Steplist-item { + padding-block: 0; + padding-inline: 0 40px; + inline-size: 80px; +} +.spectrum-Steplist--small .spectrum-Steplist-item .spectrum-Steplist-label { + display: none; +} +.spectrum-Steplist--small .spectrum-Steplist-item:first-child, +.spectrum-Steplist--small .spectrum-Steplist-item:last-child { + inline-size: 20px; +} +.spectrum-Steplist--small .spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer { + margin-inline-start: -10px; +} +.spectrum-Steplist--small .spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer { + margin-inline-end: -10px; +} +.spectrum-Steplist-item { + outline: none; + position: relative; + display: inline-block; + margin: 0; + vertical-align: bottom; + box-sizing: initial; + inline-size: var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)); + padding-block: 0; + padding-inline: 0 calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) / 2); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-label { + color: var(--mod-steplist-complete-label-text-color, var(--spectrum-steplist-complete-label-text-color)); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-marker { + background-color: var(--highcontrast-steplist-complete-marker-background-color, var(--mod-steplist-complete-marker-background-color, var(--spectrum-steplist-complete-marker-background-color))); + border: none; +} +.spectrum-Steplist-item.is-complete + .spectrum-Steplist-item .spectrum-Steplist-segment { + border-block-end-width: var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)); + border-block-end-style: solid; +} +.spectrum-Steplist-item.is-selected :focus, +.spectrum-Steplist-item.is-selected:focus { + outline: none; +} +.spectrum-Steplist-item.is-selected .spectrum-Steplist-label { + color: var(--mod-steplist-current-label-text-color, var(--spectrum-steplist-current-label-text-color)); +} +.spectrum-Steplist-item.is-selected .spectrum-Steplist-marker { + border: none; + background-color: var(--highcontrast-steplist-current-marker-color, var(--mod-steplist-current-marker-color, var(--spectrum-steplist-current-marker-color))); +} +.spectrum-Steplist-item.is-complete .spectrum-Steplist-segment, +.spectrum-Steplist-item.is-selected .spectrum-Steplist-segment { + border-block-end-color: var(--mod-steplist-complete-segment-border-block-end-color, var(--spectrum-steplist-complete-segment-border-block-end-color)); +} +.spectrum-Steplist-label { + position: absolute; + inset-inline-start: 50%; + inset-block-end: var(--mod-steplist-label-labelOffset, var(--spectrum-steplist-label-labelOffset)); + display: block; + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) * 1.5); + font-size: var(--mod-steplist-label-text-size, var(--spectrum-steplist-label-text-size)); + white-space: normal; + transform: translateX(-50%); + color: var(--mod-steplist-incomplete-label-color, var(--spectrum-steplist-incomplete-label-color)); +} +.spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-label { + transform: translateX(50%); +} +.spectrum-Steplist-markerContainer { + display: block; + z-index: 2; + position: absolute; + inset-block-end: -10px; + inset-inline-start: 50%; + inline-size: var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)); + block-size: var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)); + margin-inline-start: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +.spectrum-Steplist-marker { + box-sizing: border-box; + display: block; + position: absolute; + inset-block-start: 50%; + inset-inline-start: 50%; + margin-block-start: calc(var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) / 2 * -1); + margin-inline-start: calc(var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) / 2 * -1); + inline-size: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + block-size: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + border-radius: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + border: 2px solid; + border-color: var(--mod-steplist-incomplete-marker-border-color, var(--spectrum-steplist-incomplete-marker-border-color)); + background: transparent; +} +.spectrum-Steplist-segment { + display: block; + z-index: 1; + position: absolute; + inset-inline-end: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 1.5); + box-sizing: initial; + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) * 1.5 - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 2); + inset-block-end: calc(var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)) / 2 * -1); + border-block-end-width: var(--mod-steplist-segment-height, var(--spectrum-steplist-segment-height)); + border-block-end-style: dashed; + border-block-end-color: var(--mod-steplist-incomplete-segment-border-block-end-color, var(--spectrum-steplist-incomplete-segment-border-block-end-color)); +} +.spectrum-Steplist-item:first-child .spectrum-Steplist-label, +.spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer { + inset-inline-start: 0; +} +.spectrum-Steplist-item:first-child .spectrum-Steplist-segment { + display: none; +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-label { + inset-inline-start: auto; + inset-inline-end: 0; + transform: translateX(50%); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-item:last-child .spectrum-Steplist-label { + transform: translateX(-50%); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer { + inset-inline-start: auto; + inset-inline-end: 0; + margin-inline-start: 0; + margin-inline-end: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +.spectrum-Steplist-item:last-child .spectrum-Steplist-segment { + inset-inline-end: var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)); + inset-inline-start: auto; +} +.spectrum-Steplist-item:first-child, +.spectrum-Steplist-item:last-child { + inline-size: calc(var(--mod-steplist-step-width, var(--spectrum-steplist-step-width)) / 2 - var(--mod-steplist-marker-diameter, var(--spectrum-steplist-marker-diameter)) * 2.5); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-label { + inset-inline-start: 50%; + transform: translate(-50%); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-label:dir(rtl), +[dir="rtl"] .spectrum-Steplist-item:only-child .spectrum-Steplist-label { + transform: translateX(50%); +} +.spectrum-Steplist-item:only-child .spectrum-Steplist-markerContainer { + inset-inline-start: 50%; + margin-inline-end: 0; + margin-inline-start: calc(var(--mod-steplist-marker-hitArea, var(--spectrum-steplist-marker-hitArea)) / 2 * -1); +} +@media (forced-colors: active) { + .spectrum-Steplist { + --highcontrast-steplist-complete-marker-background-color: CanvasText; + --highcontrast-steplist-current-marker-color: Highlight; + --highcontrast-steplist-current-marker-color-key-focus: Highlight; + } + @supports (color: SelectedItem) { + .spectrum-Steplist { + --highcontrast-steplist-current-marker-color: SelectedItem; + } + } +} +/*# sourceMappingURL=components/steplist/index.css.map */ diff --git a/components/steplist/metadata.json b/components/steplist/metadata.json new file mode 100644 index 0000000000..7611abc081 --- /dev/null +++ b/components/steplist/metadata.json @@ -0,0 +1,86 @@ +{ + "selectors": [ + ".spectrum-Steplist", + ".spectrum-Steplist--interactive .spectrum-Steplist-item :focus .spectrum-Steplist-marker,\n.spectrum-Steplist--interactive .spectrum-Steplist-item.is-focused .spectrum-Steplist-marker,\n.spectrum-Steplist--interactive .spectrum-Steplist-item:focus .spectrum-Steplist-marker", + ".spectrum-Steplist--interactive .spectrum-Steplist-label,\n.spectrum-Steplist--interactive .spectrum-Steplist-markerContainer", + ".spectrum-Steplist--small", + ".spectrum-Steplist--small .spectrum-Steplist-item", + ".spectrum-Steplist--small .spectrum-Steplist-item .spectrum-Steplist-label", + ".spectrum-Steplist--small .spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer", + ".spectrum-Steplist--small .spectrum-Steplist-item:first-child,\n.spectrum-Steplist--small .spectrum-Steplist-item:last-child", + ".spectrum-Steplist--small .spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer", + ".spectrum-Steplist-item", + ".spectrum-Steplist-item.is-complete + .spectrum-Steplist-item .spectrum-Steplist-segment", + ".spectrum-Steplist-item.is-complete .spectrum-Steplist-label", + ".spectrum-Steplist-item.is-complete .spectrum-Steplist-marker", + ".spectrum-Steplist-item.is-complete .spectrum-Steplist-segment,\n.spectrum-Steplist-item.is-selected .spectrum-Steplist-segment", + ".spectrum-Steplist-item.is-selected .spectrum-Steplist-label", + ".spectrum-Steplist-item.is-selected .spectrum-Steplist-marker", + ".spectrum-Steplist-item.is-selected :focus,\n.spectrum-Steplist-item.is-selected:focus", + ".spectrum-Steplist-item:first-child .spectrum-Steplist-label,\n.spectrum-Steplist-item:first-child .spectrum-Steplist-markerContainer", + ".spectrum-Steplist-item:first-child .spectrum-Steplist-segment", + ".spectrum-Steplist-item:first-child,\n.spectrum-Steplist-item:last-child", + ".spectrum-Steplist-item:last-child .spectrum-Steplist-label", + ".spectrum-Steplist-item:last-child .spectrum-Steplist-label:dir(rtl),\n[dir=\"rtl\"] .spectrum-Steplist-item:last-child .spectrum-Steplist-label", + ".spectrum-Steplist-item:last-child .spectrum-Steplist-markerContainer", + ".spectrum-Steplist-item:last-child .spectrum-Steplist-segment", + ".spectrum-Steplist-item:only-child .spectrum-Steplist-label", + ".spectrum-Steplist-item:only-child .spectrum-Steplist-label:dir(rtl),\n[dir=\"rtl\"] .spectrum-Steplist-item:only-child .spectrum-Steplist-label", + ".spectrum-Steplist-item:only-child .spectrum-Steplist-markerContainer", + ".spectrum-Steplist-label", + ".spectrum-Steplist-label:dir(rtl),\n[dir=\"rtl\"] .spectrum-Steplist-label", + ".spectrum-Steplist-marker", + ".spectrum-Steplist-markerContainer", + ".spectrum-Steplist-segment" + ], + "mods": [ + "--mod-steplist-complete-label-text-color", + "--mod-steplist-complete-marker-background-color", + "--mod-steplist-complete-segment-border-block-end-color", + "--mod-steplist-current-label-text-color", + "--mod-steplist-current-marker-color", + "--mod-steplist-current-marker-color-key-focus", + "--mod-steplist-incomplete-label-color", + "--mod-steplist-incomplete-marker-border-color", + "--mod-steplist-incomplete-segment-border-block-end-color", + "--mod-steplist-label-labelOffset", + "--mod-steplist-label-text-size", + "--mod-steplist-marker-diameter", + "--mod-steplist-marker-hitArea", + "--mod-steplist-segment-height", + "--mod-steplist-sidePadding", + "--mod-steplist-small-topPadding", + "--mod-steplist-step-width", + "--mod-steplist-topPadding" + ], + "spectrum": [ + "--spectrum-gray-300", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-800", + "--spectrum-steplist-complete-label-text-color", + "--spectrum-steplist-complete-marker-background-color", + "--spectrum-steplist-complete-segment-border-block-end-color", + "--spectrum-steplist-current-label-text-color", + "--spectrum-steplist-current-marker-color", + "--spectrum-steplist-current-marker-color-key-focus", + "--spectrum-steplist-incomplete-label-color", + "--spectrum-steplist-incomplete-marker-border-color", + "--spectrum-steplist-incomplete-segment-border-block-end-color", + "--spectrum-steplist-label-labelOffset", + "--spectrum-steplist-label-text-size", + "--spectrum-steplist-marker-diameter", + "--spectrum-steplist-marker-hitArea", + "--spectrum-steplist-segment-height", + "--spectrum-steplist-sidePadding", + "--spectrum-steplist-small-topPadding", + "--spectrum-steplist-step-width", + "--spectrum-steplist-topPadding" + ], + "system": [], + "a11y": [ + "--highcontrast-steplist-complete-marker-background-color", + "--highcontrast-steplist-current-marker-color", + "--highcontrast-steplist-current-marker-color-key-focus" + ] +} diff --git a/components/steplist/package.json b/components/steplist/package.json new file mode 100644 index 0000000000..ef0c723e3c --- /dev/null +++ b/components/steplist/package.json @@ -0,0 +1,48 @@ +{ + "name": "@spectrum-css/steplist", + "version": "5.1.1", + "description": "The Spectrum CSS steplist component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/steplist", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/steplist" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14", + "@spectrum-css/tooltip": ">=6" + }, + "peerDependenciesMeta": { + "@spectrum-css/tooltip": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^", + "@spectrum-css/tooltip": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/steplist/template.js b/components/steplist/template.js new file mode 100644 index 0000000000..ae7b9bd40e --- /dev/null +++ b/components/steplist/template.js @@ -0,0 +1,109 @@ +import { Template as Tooltip } from "@spectrum-css/tooltip/stories/template.js"; +import { html, nothing } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; + +import "../index.css"; + +export const SteplistItem = ({ + rootClass, + isSmall = false, + isInteractive = false, + withTooltip = false, + label, + ariaPosInSet = 1, + ariaSetSize = 4, + isComplete = false, + isSelected = false, + id, +} = {}, context = {}) => { + const labelMarkup = + !isSmall && !withTooltip && typeof label !== "undefined" + ? html`${label}` + : nothing; + + const markerContainer = html` + + ${withTooltip && !isSmall && typeof label !== "undefined" + ? Tooltip({ + label, + isOpen: false, + placement: "top", + showOnHover: true, + }, context) + : nothing} + + + `; + + return html` +
    + ${isInteractive + ? html` + ${labelMarkup} ${markerContainer} + ` + : html` ${labelMarkup} ${markerContainer}`} + +
    + `; +}; + +export const Template = ({ + rootClass = "spectrum-Steplist", + items, + isSmall = false, + isInteractive = false, + withTooltip = false, + id, + customClasses = [], +} = {}, context = {}) => { + if (!items || !items.length) return html``; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + role="list" + > + ${repeat(items, (args, idx) => + SteplistItem({ + rootClass: `${rootClass}`, + isSmall, + isInteractive, + withTooltip, + ...args, + ariaPosInSet: idx + 1, + ariaSetSize: items.length, + }, context) + )} +
    + `; +}; diff --git a/components/stepper/index-base.css b/components/stepper/index-base.css new file mode 100644 index 0000000000..d53394bf47 --- /dev/null +++ b/components/stepper/index-base.css @@ -0,0 +1,277 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Stepper { + --spectrum-stepper-height: var(--spectrum-component-height-100); + --spectrum-stepper-border-radius: var(--spectrum-corner-radius-100); + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-medium); + --spectrum-stepper-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-stepper-width: calc(var(--mod-stepper-height, var(--spectrum-stepper-height)) * var(--mod-stepper-min-width-multiplier, var(--spectrum-text-field-minimum-width-multiplier)) + var(--mod-stepper-button-width, var(--spectrum-stepper-button-width)) + var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)) * 2); + --spectrum-stepper-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-stepper-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-stepper-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-stepper-button-offset: calc(var(--spectrum-stepper-button-width) / 2); + --spectrum-stepper-animation-duration: var(--spectrum-animation-duration-100); + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-buttons-border-color, var(--spectrum-stepper-buttons-border-color))); + --mod-infield-button-border-width: var(--mod-stepper-button-border-width, var(--spectrum-stepper-button-border-width)); + --mod-textfield-border-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); +} +.spectrum-Stepper.spectrum-Stepper--sizeS { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-small); + --spectrum-stepper-height: var(--spectrum-component-height-75); +} +.spectrum-Stepper.spectrum-Stepper--sizeL { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-large); + --spectrum-stepper-height: var(--spectrum-component-height-200); +} +.spectrum-Stepper.spectrum-Stepper--sizeXL { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-extra-large); + --spectrum-stepper-height: var(--spectrum-component-height-300); +} +.spectrum-Stepper.spectrum-Stepper--quiet { + --mod-infield-button-width-stacked: var(--mod-stepper-button-width-quiet, var(--spectrum-stepper-button-width)); + --mod-textfield-focus-indicator-color: transparent; +} +.spectrum-Stepper.is-disabled { + --mod-infield-button-border-color-quiet-disabled: var(--spectrum-disabled-border-color); +} +.spectrum-Stepper.is-invalid { + --mod-stepper-border-color: var(--mod-stepper-border-color-invalid, var(--spectrum-negative-border-color-default)); + --mod-stepper-border-color-hover: var(--mod-stepper-border-color-hover-invalid, var(--spectrum-negative-border-color-hover)); + --mod-stepper-border-color-focus: var(--mod-stepper-border-color-focus-invalid, var(--spectrum-negative-border-color-focus)); + --mod-stepper-border-color-focus-hover: var(--mod-stepper-border-color-focus-hover-invalid, var(--spectrum-negative-border-color-focus-hover)); + --mod-stepper-border-color-keyboard-focus: var(--mod-stepper-border-color-keyboard-focus-invalid, var(--spectrum-negative-border-color-key-focus)); + --mod-infield-button-border-color: var(--mod-stepper-border-color-invalid, var(--spectrum-stepper-border-color-invalid)); + --mod-textfield-icon-spacing-inline-start-invalid: 0; +} +.spectrum-Stepper.is-invalid.is-focused, +.spectrum-Stepper.is-invalid:focus { + --mod-infield-button-border-color: var(--mod-stepper-border-color-focus-invalid, var(--spectrum-stepper-border-color-focus-invalid)); +} +.spectrum-Stepper.is-invalid.is-keyboardFocused, +.spectrum-Stepper.is-invalid:focus-visible { + --mod-infield-button-border-color: var(--mod-stepper-border-color-keyboard-focus-invalid, var(--spectrum-stepper-border-color-keyboard-focus-invalid)); +} +.x { + border-radius: var(--spectrum-stepper-button-border-radius-reset); +} +.spectrum-Stepper { + position: relative; + display: inline-flex; + flex-flow: row nowrap; + inline-size: var(--mod-stepper-width, var(--spectrum-stepper-width)); + block-size: var(--mod-stepper-height, var(--spectrum-stepper-height)); + border-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); +} +.spectrum-Stepper, +.spectrum-Stepper .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); +} +.spectrum-Stepper .spectrum-Stepper-input { + border-start-end-radius: 0; + border-end-end-radius: 0; + border-inline-end-width: 0; +} +.spectrum-Stepper.is-focused, +.spectrum-Stepper:focus { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-buttons-border-color-focus, var(--spectrum-stepper-buttons-border-color-focus))); +} +.spectrum-Stepper.is-focused .spectrum-Stepper-input, +.spectrum-Stepper:focus .spectrum-Stepper-input { + outline: none; +} +.spectrum-Stepper.is-focused .spectrum-Stepper-buttons, +.spectrum-Stepper.is-focused .spectrum-Stepper-input, +.spectrum-Stepper:focus .spectrum-Stepper-buttons, +.spectrum-Stepper:focus .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-border-color-focus, var(--spectrum-stepper-border-color-focus))); +} +.spectrum-Stepper.is-keyboardFocused, +.spectrum-Stepper:focus-visible { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-buttons-border-color-keyboard-focus, var(--spectrum-stepper-buttons-border-color-keyboard-focus))); + outline: var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width)) solid; + outline-color: var(--highcontrast-stepper-focus-indicator-color, var(--mod-stepper-focus-indicator-color, var(--spectrum-stepper-focus-indicator-color))); + outline-offset: var(--mod-stepper-focus-indicator-gap, var(--spectrum-stepper-focus-indicator-gap)); +} +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input, +.spectrum-Stepper:focus-visible .spectrum-Stepper-input { + outline: none; +} +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-buttons, +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input, +.spectrum-Stepper:focus-visible .spectrum-Stepper-buttons, +.spectrum-Stepper:focus-visible .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-border-color-keyboard-focus, var(--spectrum-stepper-border-color-keyboard-focus))); +} +.spectrum-Stepper.spectrum-Stepper--quiet { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet.hide-stepper .spectrum-Stepper-input { + border-inline-end-width: 0; + border-end-end-radius: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet:after { + content: ""; + position: absolute; + inset-block-end: calc((var(--mod-stepper-focus-indicator-gap, var(--spectrum-stepper-focus-indicator-gap)) + var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width))) * -1); + inset-inline-start: 0; + inline-size: 100%; + block-size: var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width)); +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons { + border: none; +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-button { + --mod-infield-button-border-block-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + --mod-infield-button-stacked-bottom-border-block-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + --mod-infield-button-stacked-bottom-border-radius-end-end: 0; + --mod-infield-button-stacked-bottom-border-radius-end-start: 0; + --mod-infield-button-fill-justify-content: flex-end; + padding: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons, +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-input { + background-color: initial; +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-focused, +.spectrum-Stepper.spectrum-Stepper--quiet:focus { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-border-color-focus, var(--spectrum-stepper-border-color-focus))); +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-border-color-keyboard-focus, var(--spectrum-stepper-border-color-keyboard-focus))); + outline: none; +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:after { + background-color: var(--highcontrast-stepper-focus-indicator-color, var(--mod-stepper-focus-indicator-color, var(--spectrum-stepper-focus-indicator-color))); +} +@media (hover: hover) { + .spectrum-Stepper.is-invalid:hover { + --mod-infield-button-border-color: var(--mod-stepper-border-color-hover-invalid, var(--spectrum-negative-border-color-hover)); + } + .spectrum-Stepper.is-invalid.is-focused:hover, + .spectrum-Stepper.is-invalid:focus:hover { + --mod-infield-button-border-color: var(--mod-stepper-border-color-focus-hover-invalid, var(--spectrum-stepper-border-color-focus-hover-invalid)); + } + .spectrum-Stepper:hover:not(.is-disabled, .is-invalid) { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-buttons-border-color-hover, var(--spectrum-stepper-buttons-border-color-hover))); + } + .spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-buttons, + .spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } + .spectrum-Stepper.is-focused:hover, + .spectrum-Stepper:focus:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-buttons-border-color-focus-hover, var(--spectrum-stepper-buttons-border-color-focus-hover))); + } + .spectrum-Stepper.is-focused:hover .spectrum-Stepper-buttons, + .spectrum-Stepper.is-focused:hover .spectrum-Stepper-input, + .spectrum-Stepper:focus:hover .spectrum-Stepper-buttons, + .spectrum-Stepper:focus:hover .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-border-color-focus-hover, var(--spectrum-stepper-border-color-focus-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled) { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled) .spectrum-Stepper-buttons { + background-color: initial; + } + .spectrum-Stepper.spectrum-Stepper--quiet.is-focused:hover, + .spectrum-Stepper.spectrum-Stepper--quiet:focus:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-border-color-focus-hover, var(--spectrum-stepper-border-color-focus-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } +} +.spectrum-Stepper:before { + content: ""; +} +.spectrum-Stepper-buttons { + display: flex; + flex-direction: column; + justify-content: center; + box-sizing: border-box; + block-size: var(--mod-stepper-height, var(--spectrum-stepper-height)); + inline-size: var(--mod-stepper-button-width, var(--spectrum-stepper-button-width)); + border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); + border-style: var(--mod-stepper-buttons-border-style, var(--spectrum-stepper-buttons-border-style)); + border-width: var(--highcontrast-stepper-buttons-border-width, var(--mod-stepper-buttons-border-width, var(--spectrum-stepper-buttons-border-width))); + border-inline-start-width: 0; + background-color: var(--highcontrast-stepper-buttons-background-color, var(--mod-stepper-buttons-background-color, var(--spectrum-stepper-buttons-background-color))); + transition: border-color var(--mod-stepper-animation-duration, var(--spectrum-stepper-animation-duration)) ease-in-out; +} +.spectrum-Stepper-buttons, +.spectrum-Stepper.hide-stepper .spectrum-Stepper-input { + border-start-end-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); + border-end-end-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); +} +.spectrum-Stepper.hide-stepper .spectrum-Stepper-input { + border-inline-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); +} +@media (forced-colors: active) { + .spectrum-Stepper { + --highcontrast-stepper-border-color: CanvasText; + --highcontrast-stepper-border-color-hover: Highlight; + --highcontrast-stepper-border-color-focus: Highlight; + --highcontrast-stepper-border-color-focus-hover: Highlight; + --highcontrast-stepper-border-color-keyboard-focus: CanvasText; + --highcontrast-stepper-button-background-color-default: Canvas; + --highcontrast-stepper-button-background-color-hover: Canvas; + --highcontrast-stepper-button-background-color-focus: Canvas; + --highcontrast-stepper-button-background-color-keyboard-focus: Canvas; + --highcontrast-stepper-focus-indicator-color: Highlight; + } + .spectrum-Stepper.is-disabled { + --highcontrast-stepper-border-color: GrayText; + --highcontrast-stepper-buttons-border-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + } + .spectrum-Stepper.is-invalid { + --highcontrast-stepper-border-color: Highlight; + --highcontrast-stepper-border-color-hover: Highlight; + --highcontrast-stepper-border-color-focus: Highlight; + --highcontrast-stepper-border-color-focus-hover: Highlight; + --highcontrast-stepper-border-color-keyboard-focus: Highlight; + } +} +.spectrum-Stepper { + --spectrum-stepper-border-width: var(--system-spectrum-stepper-border-width); + --spectrum-stepper-buttons-border-style: var(--system-spectrum-stepper-buttons-border-style); + --spectrum-stepper-buttons-border-width: var(--system-spectrum-stepper-buttons-border-width); + --spectrum-stepper-buttons-border-color: var(--system-spectrum-stepper-buttons-border-color); + --spectrum-stepper-buttons-background-color: var(--system-spectrum-stepper-buttons-background-color); + --spectrum-stepper-buttons-border-color-hover: var(--system-spectrum-stepper-buttons-border-color-hover); + --spectrum-stepper-buttons-border-color-focus: var(--system-spectrum-stepper-buttons-border-color-focus); + --spectrum-stepper-buttons-border-color-keyboard-focus: var(--system-spectrum-stepper-buttons-border-color-keyboard-focus); + --spectrum-stepper-button-border-radius-reset: var(--system-spectrum-stepper-button-border-radius-reset); + --spectrum-stepper-button-border-width: var(--system-spectrum-stepper-button-border-width); + --spectrum-stepper-border-color: var(--system-spectrum-stepper-border-color); + --spectrum-stepper-border-color-hover: var(--system-spectrum-stepper-border-color-hover); + --spectrum-stepper-border-color-focus: var(--system-spectrum-stepper-border-color-focus); + --spectrum-stepper-border-color-focus-hover: var(--system-spectrum-stepper-border-color-focus-hover); + --spectrum-stepper-border-color-keyboard-focus: var(--system-spectrum-stepper-border-color-keyboard-focus); + --spectrum-stepper-border-color-invalid: var(--system-spectrum-stepper-border-color-invalid); + --spectrum-stepper-border-color-focus-invalid: var(--system-spectrum-stepper-border-color-focus-invalid); + --spectrum-stepper-border-color-focus-hover-invalid: var(--system-spectrum-stepper-border-color-focus-hover-invalid); + --spectrum-stepper-border-color-keyboard-focus-invalid: var(--system-spectrum-stepper-border-color-keyboard-focus-invalid); + --spectrum-stepper-button-background-color-focus: var(--system-spectrum-stepper-button-background-color-focus); + --spectrum-stepper-button-background-color-keyboard-focus: var(--system-spectrum-stepper-button-background-color-keyboard-focus); +} +.spectrum-Stepper.is-disabled { + --spectrum-stepper-buttons-background-color: var(--system-spectrum-stepper-disabled-buttons-background-color); + --spectrum-stepper-buttons-border-width: var(--system-spectrum-stepper-disabled-buttons-border-width); +} +/*# sourceMappingURL=components/stepper/index.css.map */ diff --git a/components/stepper/index-theme.css b/components/stepper/index-theme.css new file mode 100644 index 0000000000..05dd2f34a1 --- /dev/null +++ b/components/stepper/index-theme.css @@ -0,0 +1,62 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-buttons-border-style: none; + --system-spectrum-stepper-buttons-border-width: 0; + --system-spectrum-stepper-buttons-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-buttons-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-buttons-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-button-border-radius-reset: 0px; + --system-spectrum-stepper-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: var(--spectrum-negative-border-color-default); + --system-spectrum-stepper-border-color-focus-invalid: var(--spectrum-negative-border-color-focus); + --system-spectrum-stepper-border-color-focus-hover-invalid: var(--spectrum-negative-border-color-focus-hover); + --system-spectrum-stepper-border-color-keyboard-focus-invalid: var(--spectrum-negative-border-color-key-focus); + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-style: solid; + --system-spectrum-stepper-buttons-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-color: transparent; + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: transparent; + --system-spectrum-stepper-buttons-border-color-focus: transparent; + --system-spectrum-stepper-buttons-border-color-keyboard-focus: transparent; + --system-spectrum-stepper-button-border-radius-reset: var(--spectrum-in-field-button-fill-stacked-inner-border-rounding); + --system-spectrum-stepper-button-border-width: 0; + --system-spectrum-stepper-border-color: var(--spectrum-gray-400); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: transparent; + --system-spectrum-stepper-border-color-focus-invalid: transparent; + --system-spectrum-stepper-border-color-focus-hover-invalid: transparent; + --system-spectrum-stepper-border-color-keyboard-focus-invalid: transparent; + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-400); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-disabled-buttons-background-color: var(--spectrum-disabled-background-color); + --system-spectrum-stepper-disabled-buttons-border-width: 0; +} +/*# sourceMappingURL=components/stepper/themes/express.css.map */ diff --git a/components/stepper/index-vars.css b/components/stepper/index-vars.css new file mode 100644 index 0000000000..6ec5984962 --- /dev/null +++ b/components/stepper/index-vars.css @@ -0,0 +1,325 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-buttons-border-style: none; + --system-spectrum-stepper-buttons-border-width: 0; + --system-spectrum-stepper-buttons-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-buttons-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-buttons-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-button-border-radius-reset: 0px; + --system-spectrum-stepper-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: var(--spectrum-negative-border-color-default); + --system-spectrum-stepper-border-color-focus-invalid: var(--spectrum-negative-border-color-focus); + --system-spectrum-stepper-border-color-focus-hover-invalid: var(--spectrum-negative-border-color-focus-hover); + --system-spectrum-stepper-border-color-keyboard-focus-invalid: var(--spectrum-negative-border-color-key-focus); + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-style: solid; + --system-spectrum-stepper-buttons-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-color: transparent; + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: transparent; + --system-spectrum-stepper-buttons-border-color-focus: transparent; + --system-spectrum-stepper-buttons-border-color-keyboard-focus: transparent; + --system-spectrum-stepper-button-border-radius-reset: var(--spectrum-in-field-button-fill-stacked-inner-border-rounding); + --system-spectrum-stepper-button-border-width: 0; + --system-spectrum-stepper-border-color: var(--spectrum-gray-400); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: transparent; + --system-spectrum-stepper-border-color-focus-invalid: transparent; + --system-spectrum-stepper-border-color-focus-hover-invalid: transparent; + --system-spectrum-stepper-border-color-keyboard-focus-invalid: transparent; + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-400); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-disabled-buttons-background-color: var(--spectrum-disabled-background-color); + --system-spectrum-stepper-disabled-buttons-border-width: 0; +} +.spectrum-Stepper { + --spectrum-stepper-height: var(--spectrum-component-height-100); + --spectrum-stepper-border-radius: var(--spectrum-corner-radius-100); + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-medium); + --spectrum-stepper-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-stepper-width: calc(var(--mod-stepper-height, var(--spectrum-stepper-height)) * var(--mod-stepper-min-width-multiplier, var(--spectrum-text-field-minimum-width-multiplier)) + var(--mod-stepper-button-width, var(--spectrum-stepper-button-width)) + var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)) * 2); + --spectrum-stepper-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-stepper-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-stepper-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-stepper-button-offset: calc(var(--spectrum-stepper-button-width) / 2); + --spectrum-stepper-animation-duration: var(--spectrum-animation-duration-100); + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-buttons-border-color, var(--spectrum-stepper-buttons-border-color))); + --mod-infield-button-border-width: var(--mod-stepper-button-border-width, var(--spectrum-stepper-button-border-width)); + --mod-textfield-border-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); +} +.spectrum-Stepper.spectrum-Stepper--sizeS { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-small); + --spectrum-stepper-height: var(--spectrum-component-height-75); +} +.spectrum-Stepper.spectrum-Stepper--sizeL { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-large); + --spectrum-stepper-height: var(--spectrum-component-height-200); +} +.spectrum-Stepper.spectrum-Stepper--sizeXL { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-extra-large); + --spectrum-stepper-height: var(--spectrum-component-height-300); +} +.spectrum-Stepper.spectrum-Stepper--quiet { + --mod-infield-button-width-stacked: var(--mod-stepper-button-width-quiet, var(--spectrum-stepper-button-width)); + --mod-textfield-focus-indicator-color: transparent; +} +.spectrum-Stepper.is-disabled { + --mod-infield-button-border-color-quiet-disabled: var(--spectrum-disabled-border-color); +} +.spectrum-Stepper.is-invalid { + --mod-stepper-border-color: var(--mod-stepper-border-color-invalid, var(--spectrum-negative-border-color-default)); + --mod-stepper-border-color-hover: var(--mod-stepper-border-color-hover-invalid, var(--spectrum-negative-border-color-hover)); + --mod-stepper-border-color-focus: var(--mod-stepper-border-color-focus-invalid, var(--spectrum-negative-border-color-focus)); + --mod-stepper-border-color-focus-hover: var(--mod-stepper-border-color-focus-hover-invalid, var(--spectrum-negative-border-color-focus-hover)); + --mod-stepper-border-color-keyboard-focus: var(--mod-stepper-border-color-keyboard-focus-invalid, var(--spectrum-negative-border-color-key-focus)); + --mod-infield-button-border-color: var(--mod-stepper-border-color-invalid, var(--spectrum-stepper-border-color-invalid)); + --mod-textfield-icon-spacing-inline-start-invalid: 0; +} +.spectrum-Stepper.is-invalid.is-focused, +.spectrum-Stepper.is-invalid:focus { + --mod-infield-button-border-color: var(--mod-stepper-border-color-focus-invalid, var(--spectrum-stepper-border-color-focus-invalid)); +} +.spectrum-Stepper.is-invalid.is-keyboardFocused, +.spectrum-Stepper.is-invalid:focus-visible { + --mod-infield-button-border-color: var(--mod-stepper-border-color-keyboard-focus-invalid, var(--spectrum-stepper-border-color-keyboard-focus-invalid)); +} +.x { + border-radius: var(--spectrum-stepper-button-border-radius-reset); +} +.spectrum-Stepper { + position: relative; + display: inline-flex; + flex-flow: row nowrap; + inline-size: var(--mod-stepper-width, var(--spectrum-stepper-width)); + block-size: var(--mod-stepper-height, var(--spectrum-stepper-height)); + border-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); +} +.spectrum-Stepper, +.spectrum-Stepper .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); +} +.spectrum-Stepper .spectrum-Stepper-input { + border-start-end-radius: 0; + border-end-end-radius: 0; + border-inline-end-width: 0; +} +.spectrum-Stepper.is-focused, +.spectrum-Stepper:focus { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-buttons-border-color-focus, var(--spectrum-stepper-buttons-border-color-focus))); +} +.spectrum-Stepper.is-focused .spectrum-Stepper-input, +.spectrum-Stepper:focus .spectrum-Stepper-input { + outline: none; +} +.spectrum-Stepper.is-focused .spectrum-Stepper-buttons, +.spectrum-Stepper.is-focused .spectrum-Stepper-input, +.spectrum-Stepper:focus .spectrum-Stepper-buttons, +.spectrum-Stepper:focus .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-border-color-focus, var(--spectrum-stepper-border-color-focus))); +} +.spectrum-Stepper.is-keyboardFocused, +.spectrum-Stepper:focus-visible { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-buttons-border-color-keyboard-focus, var(--spectrum-stepper-buttons-border-color-keyboard-focus))); + outline: var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width)) solid; + outline-color: var(--highcontrast-stepper-focus-indicator-color, var(--mod-stepper-focus-indicator-color, var(--spectrum-stepper-focus-indicator-color))); + outline-offset: var(--mod-stepper-focus-indicator-gap, var(--spectrum-stepper-focus-indicator-gap)); +} +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input, +.spectrum-Stepper:focus-visible .spectrum-Stepper-input { + outline: none; +} +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-buttons, +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input, +.spectrum-Stepper:focus-visible .spectrum-Stepper-buttons, +.spectrum-Stepper:focus-visible .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-border-color-keyboard-focus, var(--spectrum-stepper-border-color-keyboard-focus))); +} +.spectrum-Stepper.spectrum-Stepper--quiet { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet.hide-stepper .spectrum-Stepper-input { + border-inline-end-width: 0; + border-end-end-radius: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet:after { + content: ""; + position: absolute; + inset-block-end: calc((var(--mod-stepper-focus-indicator-gap, var(--spectrum-stepper-focus-indicator-gap)) + var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width))) * -1); + inset-inline-start: 0; + inline-size: 100%; + block-size: var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width)); +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons { + border: none; +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-button { + --mod-infield-button-border-block-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + --mod-infield-button-stacked-bottom-border-block-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + --mod-infield-button-stacked-bottom-border-radius-end-end: 0; + --mod-infield-button-stacked-bottom-border-radius-end-start: 0; + --mod-infield-button-fill-justify-content: flex-end; + padding: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons, +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-input { + background-color: initial; +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-focused, +.spectrum-Stepper.spectrum-Stepper--quiet:focus { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-border-color-focus, var(--spectrum-stepper-border-color-focus))); +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-border-color-keyboard-focus, var(--spectrum-stepper-border-color-keyboard-focus))); + outline: none; +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:after { + background-color: var(--highcontrast-stepper-focus-indicator-color, var(--mod-stepper-focus-indicator-color, var(--spectrum-stepper-focus-indicator-color))); +} +@media (hover: hover) { + .spectrum-Stepper.is-invalid:hover { + --mod-infield-button-border-color: var(--mod-stepper-border-color-hover-invalid, var(--spectrum-negative-border-color-hover)); + } + .spectrum-Stepper.is-invalid.is-focused:hover, + .spectrum-Stepper.is-invalid:focus:hover { + --mod-infield-button-border-color: var(--mod-stepper-border-color-focus-hover-invalid, var(--spectrum-stepper-border-color-focus-hover-invalid)); + } + .spectrum-Stepper:hover:not(.is-disabled, .is-invalid) { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-buttons-border-color-hover, var(--spectrum-stepper-buttons-border-color-hover))); + } + .spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-buttons, + .spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } + .spectrum-Stepper.is-focused:hover, + .spectrum-Stepper:focus:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-buttons-border-color-focus-hover, var(--spectrum-stepper-buttons-border-color-focus-hover))); + } + .spectrum-Stepper.is-focused:hover .spectrum-Stepper-buttons, + .spectrum-Stepper.is-focused:hover .spectrum-Stepper-input, + .spectrum-Stepper:focus:hover .spectrum-Stepper-buttons, + .spectrum-Stepper:focus:hover .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-border-color-focus-hover, var(--spectrum-stepper-border-color-focus-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled) { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled) .spectrum-Stepper-buttons { + background-color: initial; + } + .spectrum-Stepper.spectrum-Stepper--quiet.is-focused:hover, + .spectrum-Stepper.spectrum-Stepper--quiet:focus:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-border-color-focus-hover, var(--spectrum-stepper-border-color-focus-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } +} +.spectrum-Stepper:before { + content: ""; +} +.spectrum-Stepper-buttons { + display: flex; + flex-direction: column; + justify-content: center; + box-sizing: border-box; + block-size: var(--mod-stepper-height, var(--spectrum-stepper-height)); + inline-size: var(--mod-stepper-button-width, var(--spectrum-stepper-button-width)); + border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); + border-style: var(--mod-stepper-buttons-border-style, var(--spectrum-stepper-buttons-border-style)); + border-width: var(--highcontrast-stepper-buttons-border-width, var(--mod-stepper-buttons-border-width, var(--spectrum-stepper-buttons-border-width))); + border-inline-start-width: 0; + background-color: var(--highcontrast-stepper-buttons-background-color, var(--mod-stepper-buttons-background-color, var(--spectrum-stepper-buttons-background-color))); + transition: border-color var(--mod-stepper-animation-duration, var(--spectrum-stepper-animation-duration)) ease-in-out; +} +.spectrum-Stepper-buttons, +.spectrum-Stepper.hide-stepper .spectrum-Stepper-input { + border-start-end-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); + border-end-end-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); +} +.spectrum-Stepper.hide-stepper .spectrum-Stepper-input { + border-inline-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); +} +@media (forced-colors: active) { + .spectrum-Stepper { + --highcontrast-stepper-border-color: CanvasText; + --highcontrast-stepper-border-color-hover: Highlight; + --highcontrast-stepper-border-color-focus: Highlight; + --highcontrast-stepper-border-color-focus-hover: Highlight; + --highcontrast-stepper-border-color-keyboard-focus: CanvasText; + --highcontrast-stepper-button-background-color-default: Canvas; + --highcontrast-stepper-button-background-color-hover: Canvas; + --highcontrast-stepper-button-background-color-focus: Canvas; + --highcontrast-stepper-button-background-color-keyboard-focus: Canvas; + --highcontrast-stepper-focus-indicator-color: Highlight; + } + .spectrum-Stepper.is-disabled { + --highcontrast-stepper-border-color: GrayText; + --highcontrast-stepper-buttons-border-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + } + .spectrum-Stepper.is-invalid { + --highcontrast-stepper-border-color: Highlight; + --highcontrast-stepper-border-color-hover: Highlight; + --highcontrast-stepper-border-color-focus: Highlight; + --highcontrast-stepper-border-color-focus-hover: Highlight; + --highcontrast-stepper-border-color-keyboard-focus: Highlight; + } +} +.spectrum-Stepper { + --spectrum-stepper-border-width: var(--system-spectrum-stepper-border-width); + --spectrum-stepper-buttons-border-style: var(--system-spectrum-stepper-buttons-border-style); + --spectrum-stepper-buttons-border-width: var(--system-spectrum-stepper-buttons-border-width); + --spectrum-stepper-buttons-border-color: var(--system-spectrum-stepper-buttons-border-color); + --spectrum-stepper-buttons-background-color: var(--system-spectrum-stepper-buttons-background-color); + --spectrum-stepper-buttons-border-color-hover: var(--system-spectrum-stepper-buttons-border-color-hover); + --spectrum-stepper-buttons-border-color-focus: var(--system-spectrum-stepper-buttons-border-color-focus); + --spectrum-stepper-buttons-border-color-keyboard-focus: var(--system-spectrum-stepper-buttons-border-color-keyboard-focus); + --spectrum-stepper-button-border-radius-reset: var(--system-spectrum-stepper-button-border-radius-reset); + --spectrum-stepper-button-border-width: var(--system-spectrum-stepper-button-border-width); + --spectrum-stepper-border-color: var(--system-spectrum-stepper-border-color); + --spectrum-stepper-border-color-hover: var(--system-spectrum-stepper-border-color-hover); + --spectrum-stepper-border-color-focus: var(--system-spectrum-stepper-border-color-focus); + --spectrum-stepper-border-color-focus-hover: var(--system-spectrum-stepper-border-color-focus-hover); + --spectrum-stepper-border-color-keyboard-focus: var(--system-spectrum-stepper-border-color-keyboard-focus); + --spectrum-stepper-border-color-invalid: var(--system-spectrum-stepper-border-color-invalid); + --spectrum-stepper-border-color-focus-invalid: var(--system-spectrum-stepper-border-color-focus-invalid); + --spectrum-stepper-border-color-focus-hover-invalid: var(--system-spectrum-stepper-border-color-focus-hover-invalid); + --spectrum-stepper-border-color-keyboard-focus-invalid: var(--system-spectrum-stepper-border-color-keyboard-focus-invalid); + --spectrum-stepper-button-background-color-focus: var(--system-spectrum-stepper-button-background-color-focus); + --spectrum-stepper-button-background-color-keyboard-focus: var(--system-spectrum-stepper-button-background-color-keyboard-focus); +} +.spectrum-Stepper.is-disabled { + --spectrum-stepper-buttons-background-color: var(--system-spectrum-stepper-disabled-buttons-background-color); + --spectrum-stepper-buttons-border-width: var(--system-spectrum-stepper-disabled-buttons-border-width); +} +/*# sourceMappingURL=components/stepper/index.css.map */ diff --git a/components/stepper/index.css b/components/stepper/index.css new file mode 100644 index 0000000000..6ec5984962 --- /dev/null +++ b/components/stepper/index.css @@ -0,0 +1,325 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-buttons-border-style: none; + --system-spectrum-stepper-buttons-border-width: 0; + --system-spectrum-stepper-buttons-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-buttons-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-buttons-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-button-border-radius-reset: 0px; + --system-spectrum-stepper-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: var(--spectrum-negative-border-color-default); + --system-spectrum-stepper-border-color-focus-invalid: var(--spectrum-negative-border-color-focus); + --system-spectrum-stepper-border-color-focus-hover-invalid: var(--spectrum-negative-border-color-focus-hover); + --system-spectrum-stepper-border-color-keyboard-focus-invalid: var(--spectrum-negative-border-color-key-focus); + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-200); +} +.spectrum--express { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-style: solid; + --system-spectrum-stepper-buttons-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-color: transparent; + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: transparent; + --system-spectrum-stepper-buttons-border-color-focus: transparent; + --system-spectrum-stepper-buttons-border-color-keyboard-focus: transparent; + --system-spectrum-stepper-button-border-radius-reset: var(--spectrum-in-field-button-fill-stacked-inner-border-rounding); + --system-spectrum-stepper-button-border-width: 0; + --system-spectrum-stepper-border-color: var(--spectrum-gray-400); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: transparent; + --system-spectrum-stepper-border-color-focus-invalid: transparent; + --system-spectrum-stepper-border-color-focus-hover-invalid: transparent; + --system-spectrum-stepper-border-color-keyboard-focus-invalid: transparent; + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-400); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-disabled-buttons-background-color: var(--spectrum-disabled-background-color); + --system-spectrum-stepper-disabled-buttons-border-width: 0; +} +.spectrum-Stepper { + --spectrum-stepper-height: var(--spectrum-component-height-100); + --spectrum-stepper-border-radius: var(--spectrum-corner-radius-100); + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-medium); + --spectrum-stepper-button-padding: var(--spectrum-in-field-button-edge-to-fill); + --spectrum-stepper-width: calc(var(--mod-stepper-height, var(--spectrum-stepper-height)) * var(--mod-stepper-min-width-multiplier, var(--spectrum-text-field-minimum-width-multiplier)) + var(--mod-stepper-button-width, var(--spectrum-stepper-button-width)) + var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)) * 2); + --spectrum-stepper-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-stepper-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-stepper-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-stepper-button-offset: calc(var(--spectrum-stepper-button-width) / 2); + --spectrum-stepper-animation-duration: var(--spectrum-animation-duration-100); + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-buttons-border-color, var(--spectrum-stepper-buttons-border-color))); + --mod-infield-button-border-width: var(--mod-stepper-button-border-width, var(--spectrum-stepper-button-border-width)); + --mod-textfield-border-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); +} +.spectrum-Stepper.spectrum-Stepper--sizeS { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-small); + --spectrum-stepper-height: var(--spectrum-component-height-75); +} +.spectrum-Stepper.spectrum-Stepper--sizeL { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-large); + --spectrum-stepper-height: var(--spectrum-component-height-200); +} +.spectrum-Stepper.spectrum-Stepper--sizeXL { + --spectrum-stepper-button-width: var(--spectrum-in-field-button-width-stacked-extra-large); + --spectrum-stepper-height: var(--spectrum-component-height-300); +} +.spectrum-Stepper.spectrum-Stepper--quiet { + --mod-infield-button-width-stacked: var(--mod-stepper-button-width-quiet, var(--spectrum-stepper-button-width)); + --mod-textfield-focus-indicator-color: transparent; +} +.spectrum-Stepper.is-disabled { + --mod-infield-button-border-color-quiet-disabled: var(--spectrum-disabled-border-color); +} +.spectrum-Stepper.is-invalid { + --mod-stepper-border-color: var(--mod-stepper-border-color-invalid, var(--spectrum-negative-border-color-default)); + --mod-stepper-border-color-hover: var(--mod-stepper-border-color-hover-invalid, var(--spectrum-negative-border-color-hover)); + --mod-stepper-border-color-focus: var(--mod-stepper-border-color-focus-invalid, var(--spectrum-negative-border-color-focus)); + --mod-stepper-border-color-focus-hover: var(--mod-stepper-border-color-focus-hover-invalid, var(--spectrum-negative-border-color-focus-hover)); + --mod-stepper-border-color-keyboard-focus: var(--mod-stepper-border-color-keyboard-focus-invalid, var(--spectrum-negative-border-color-key-focus)); + --mod-infield-button-border-color: var(--mod-stepper-border-color-invalid, var(--spectrum-stepper-border-color-invalid)); + --mod-textfield-icon-spacing-inline-start-invalid: 0; +} +.spectrum-Stepper.is-invalid.is-focused, +.spectrum-Stepper.is-invalid:focus { + --mod-infield-button-border-color: var(--mod-stepper-border-color-focus-invalid, var(--spectrum-stepper-border-color-focus-invalid)); +} +.spectrum-Stepper.is-invalid.is-keyboardFocused, +.spectrum-Stepper.is-invalid:focus-visible { + --mod-infield-button-border-color: var(--mod-stepper-border-color-keyboard-focus-invalid, var(--spectrum-stepper-border-color-keyboard-focus-invalid)); +} +.x { + border-radius: var(--spectrum-stepper-button-border-radius-reset); +} +.spectrum-Stepper { + position: relative; + display: inline-flex; + flex-flow: row nowrap; + inline-size: var(--mod-stepper-width, var(--spectrum-stepper-width)); + block-size: var(--mod-stepper-height, var(--spectrum-stepper-height)); + border-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); +} +.spectrum-Stepper, +.spectrum-Stepper .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); +} +.spectrum-Stepper .spectrum-Stepper-input { + border-start-end-radius: 0; + border-end-end-radius: 0; + border-inline-end-width: 0; +} +.spectrum-Stepper.is-focused, +.spectrum-Stepper:focus { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-buttons-border-color-focus, var(--spectrum-stepper-buttons-border-color-focus))); +} +.spectrum-Stepper.is-focused .spectrum-Stepper-input, +.spectrum-Stepper:focus .spectrum-Stepper-input { + outline: none; +} +.spectrum-Stepper.is-focused .spectrum-Stepper-buttons, +.spectrum-Stepper.is-focused .spectrum-Stepper-input, +.spectrum-Stepper:focus .spectrum-Stepper-buttons, +.spectrum-Stepper:focus .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-border-color-focus, var(--spectrum-stepper-border-color-focus))); +} +.spectrum-Stepper.is-keyboardFocused, +.spectrum-Stepper:focus-visible { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-buttons-border-color-keyboard-focus, var(--spectrum-stepper-buttons-border-color-keyboard-focus))); + outline: var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width)) solid; + outline-color: var(--highcontrast-stepper-focus-indicator-color, var(--mod-stepper-focus-indicator-color, var(--spectrum-stepper-focus-indicator-color))); + outline-offset: var(--mod-stepper-focus-indicator-gap, var(--spectrum-stepper-focus-indicator-gap)); +} +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input, +.spectrum-Stepper:focus-visible .spectrum-Stepper-input { + outline: none; +} +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-buttons, +.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input, +.spectrum-Stepper:focus-visible .spectrum-Stepper-buttons, +.spectrum-Stepper:focus-visible .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-border-color-keyboard-focus, var(--spectrum-stepper-border-color-keyboard-focus))); +} +.spectrum-Stepper.spectrum-Stepper--quiet { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); + border-start-start-radius: 0; + border-start-end-radius: 0; + border-end-start-radius: 0; + border-end-end-radius: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet.hide-stepper .spectrum-Stepper-input { + border-inline-end-width: 0; + border-end-end-radius: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet:after { + content: ""; + position: absolute; + inset-block-end: calc((var(--mod-stepper-focus-indicator-gap, var(--spectrum-stepper-focus-indicator-gap)) + var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width))) * -1); + inset-inline-start: 0; + inline-size: 100%; + block-size: var(--mod-stepper-focus-indicator-width, var(--spectrum-stepper-focus-indicator-width)); +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons { + border: none; +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-button { + --mod-infield-button-border-block-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + --mod-infield-button-stacked-bottom-border-block-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + --mod-infield-button-stacked-bottom-border-radius-end-end: 0; + --mod-infield-button-stacked-bottom-border-radius-end-start: 0; + --mod-infield-button-fill-justify-content: flex-end; + padding: 0; +} +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons, +.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-input { + background-color: initial; +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-focused, +.spectrum-Stepper.spectrum-Stepper--quiet:focus { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus, var(--mod-stepper-border-color-focus, var(--spectrum-stepper-border-color-focus))); +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-keyboard-focus, var(--mod-stepper-border-color-keyboard-focus, var(--spectrum-stepper-border-color-keyboard-focus))); + outline: none; +} +.spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:after { + background-color: var(--highcontrast-stepper-focus-indicator-color, var(--mod-stepper-focus-indicator-color, var(--spectrum-stepper-focus-indicator-color))); +} +@media (hover: hover) { + .spectrum-Stepper.is-invalid:hover { + --mod-infield-button-border-color: var(--mod-stepper-border-color-hover-invalid, var(--spectrum-negative-border-color-hover)); + } + .spectrum-Stepper.is-invalid.is-focused:hover, + .spectrum-Stepper.is-invalid:focus:hover { + --mod-infield-button-border-color: var(--mod-stepper-border-color-focus-hover-invalid, var(--spectrum-stepper-border-color-focus-hover-invalid)); + } + .spectrum-Stepper:hover:not(.is-disabled, .is-invalid) { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-buttons-border-color-hover, var(--spectrum-stepper-buttons-border-color-hover))); + } + .spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-buttons, + .spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } + .spectrum-Stepper.is-focused:hover, + .spectrum-Stepper:focus:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-buttons-border-color-focus-hover, var(--spectrum-stepper-buttons-border-color-focus-hover))); + } + .spectrum-Stepper.is-focused:hover .spectrum-Stepper-buttons, + .spectrum-Stepper.is-focused:hover .spectrum-Stepper-input, + .spectrum-Stepper:focus:hover .spectrum-Stepper-buttons, + .spectrum-Stepper:focus:hover .spectrum-Stepper-input { + border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-border-color-focus-hover, var(--spectrum-stepper-border-color-focus-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled) { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled) .spectrum-Stepper-buttons { + background-color: initial; + } + .spectrum-Stepper.spectrum-Stepper--quiet.is-focused:hover, + .spectrum-Stepper.spectrum-Stepper--quiet:focus:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-focus-hover, var(--mod-stepper-border-color-focus-hover, var(--spectrum-stepper-border-color-focus-hover))); + } + .spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:hover { + --mod-infield-button-border-color: var(--highcontrast-stepper-border-color-hover, var(--mod-stepper-border-color-hover, var(--spectrum-stepper-border-color-hover))); + } +} +.spectrum-Stepper:before { + content: ""; +} +.spectrum-Stepper-buttons { + display: flex; + flex-direction: column; + justify-content: center; + box-sizing: border-box; + block-size: var(--mod-stepper-height, var(--spectrum-stepper-height)); + inline-size: var(--mod-stepper-button-width, var(--spectrum-stepper-button-width)); + border-color: var(--highcontrast-stepper-border-color, var(--mod-stepper-border-color, var(--spectrum-stepper-border-color))); + border-style: var(--mod-stepper-buttons-border-style, var(--spectrum-stepper-buttons-border-style)); + border-width: var(--highcontrast-stepper-buttons-border-width, var(--mod-stepper-buttons-border-width, var(--spectrum-stepper-buttons-border-width))); + border-inline-start-width: 0; + background-color: var(--highcontrast-stepper-buttons-background-color, var(--mod-stepper-buttons-background-color, var(--spectrum-stepper-buttons-background-color))); + transition: border-color var(--mod-stepper-animation-duration, var(--spectrum-stepper-animation-duration)) ease-in-out; +} +.spectrum-Stepper-buttons, +.spectrum-Stepper.hide-stepper .spectrum-Stepper-input { + border-start-end-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); + border-end-end-radius: var(--mod-stepper-border-radius, var(--spectrum-stepper-border-radius)); +} +.spectrum-Stepper.hide-stepper .spectrum-Stepper-input { + border-inline-end-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); +} +@media (forced-colors: active) { + .spectrum-Stepper { + --highcontrast-stepper-border-color: CanvasText; + --highcontrast-stepper-border-color-hover: Highlight; + --highcontrast-stepper-border-color-focus: Highlight; + --highcontrast-stepper-border-color-focus-hover: Highlight; + --highcontrast-stepper-border-color-keyboard-focus: CanvasText; + --highcontrast-stepper-button-background-color-default: Canvas; + --highcontrast-stepper-button-background-color-hover: Canvas; + --highcontrast-stepper-button-background-color-focus: Canvas; + --highcontrast-stepper-button-background-color-keyboard-focus: Canvas; + --highcontrast-stepper-focus-indicator-color: Highlight; + } + .spectrum-Stepper.is-disabled { + --highcontrast-stepper-border-color: GrayText; + --highcontrast-stepper-buttons-border-width: var(--mod-stepper-border-width, var(--spectrum-stepper-border-width)); + } + .spectrum-Stepper.is-invalid { + --highcontrast-stepper-border-color: Highlight; + --highcontrast-stepper-border-color-hover: Highlight; + --highcontrast-stepper-border-color-focus: Highlight; + --highcontrast-stepper-border-color-focus-hover: Highlight; + --highcontrast-stepper-border-color-keyboard-focus: Highlight; + } +} +.spectrum-Stepper { + --spectrum-stepper-border-width: var(--system-spectrum-stepper-border-width); + --spectrum-stepper-buttons-border-style: var(--system-spectrum-stepper-buttons-border-style); + --spectrum-stepper-buttons-border-width: var(--system-spectrum-stepper-buttons-border-width); + --spectrum-stepper-buttons-border-color: var(--system-spectrum-stepper-buttons-border-color); + --spectrum-stepper-buttons-background-color: var(--system-spectrum-stepper-buttons-background-color); + --spectrum-stepper-buttons-border-color-hover: var(--system-spectrum-stepper-buttons-border-color-hover); + --spectrum-stepper-buttons-border-color-focus: var(--system-spectrum-stepper-buttons-border-color-focus); + --spectrum-stepper-buttons-border-color-keyboard-focus: var(--system-spectrum-stepper-buttons-border-color-keyboard-focus); + --spectrum-stepper-button-border-radius-reset: var(--system-spectrum-stepper-button-border-radius-reset); + --spectrum-stepper-button-border-width: var(--system-spectrum-stepper-button-border-width); + --spectrum-stepper-border-color: var(--system-spectrum-stepper-border-color); + --spectrum-stepper-border-color-hover: var(--system-spectrum-stepper-border-color-hover); + --spectrum-stepper-border-color-focus: var(--system-spectrum-stepper-border-color-focus); + --spectrum-stepper-border-color-focus-hover: var(--system-spectrum-stepper-border-color-focus-hover); + --spectrum-stepper-border-color-keyboard-focus: var(--system-spectrum-stepper-border-color-keyboard-focus); + --spectrum-stepper-border-color-invalid: var(--system-spectrum-stepper-border-color-invalid); + --spectrum-stepper-border-color-focus-invalid: var(--system-spectrum-stepper-border-color-focus-invalid); + --spectrum-stepper-border-color-focus-hover-invalid: var(--system-spectrum-stepper-border-color-focus-hover-invalid); + --spectrum-stepper-border-color-keyboard-focus-invalid: var(--system-spectrum-stepper-border-color-keyboard-focus-invalid); + --spectrum-stepper-button-background-color-focus: var(--system-spectrum-stepper-button-background-color-focus); + --spectrum-stepper-button-background-color-keyboard-focus: var(--system-spectrum-stepper-button-background-color-keyboard-focus); +} +.spectrum-Stepper.is-disabled { + --spectrum-stepper-buttons-background-color: var(--system-spectrum-stepper-disabled-buttons-background-color); + --spectrum-stepper-buttons-border-width: var(--system-spectrum-stepper-disabled-buttons-border-width); +} +/*# sourceMappingURL=components/stepper/index.css.map */ diff --git a/components/stepper/metadata.json b/components/stepper/metadata.json new file mode 100644 index 0000000000..aa40f11248 --- /dev/null +++ b/components/stepper/metadata.json @@ -0,0 +1,176 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Stepper", + ".spectrum-Stepper .spectrum-Stepper-input", + ".spectrum-Stepper,\n.spectrum-Stepper .spectrum-Stepper-input", + ".spectrum-Stepper-buttons", + ".spectrum-Stepper-buttons,\n.spectrum-Stepper.hide-stepper .spectrum-Stepper-input", + ".spectrum-Stepper.hide-stepper .spectrum-Stepper-input", + ".spectrum-Stepper.is-disabled", + ".spectrum-Stepper.is-focused .spectrum-Stepper-buttons,\n.spectrum-Stepper.is-focused .spectrum-Stepper-input,\n.spectrum-Stepper:focus .spectrum-Stepper-buttons,\n.spectrum-Stepper:focus .spectrum-Stepper-input", + ".spectrum-Stepper.is-focused .spectrum-Stepper-input,\n.spectrum-Stepper:focus .spectrum-Stepper-input", + ".spectrum-Stepper.is-focused,\n.spectrum-Stepper:focus", + ".spectrum-Stepper.is-focused:hover .spectrum-Stepper-buttons,\n\t.spectrum-Stepper.is-focused:hover .spectrum-Stepper-input,\n\t.spectrum-Stepper:focus:hover .spectrum-Stepper-buttons,\n\t.spectrum-Stepper:focus:hover .spectrum-Stepper-input", + ".spectrum-Stepper.is-focused:hover,\n\t.spectrum-Stepper:focus:hover", + ".spectrum-Stepper.is-invalid", + ".spectrum-Stepper.is-invalid.is-focused,\n.spectrum-Stepper.is-invalid:focus", + ".spectrum-Stepper.is-invalid.is-focused:hover,\n\t.spectrum-Stepper.is-invalid:focus:hover", + ".spectrum-Stepper.is-invalid.is-keyboardFocused,\n.spectrum-Stepper.is-invalid:focus-visible", + ".spectrum-Stepper.is-invalid:hover", + ".spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-buttons,\n.spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input,\n.spectrum-Stepper:focus-visible .spectrum-Stepper-buttons,\n.spectrum-Stepper:focus-visible .spectrum-Stepper-input", + ".spectrum-Stepper.is-keyboardFocused .spectrum-Stepper-input,\n.spectrum-Stepper:focus-visible .spectrum-Stepper-input", + ".spectrum-Stepper.is-keyboardFocused,\n.spectrum-Stepper:focus-visible", + ".spectrum-Stepper.spectrum-Stepper--quiet", + ".spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-button", + ".spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons", + ".spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-buttons,\n.spectrum-Stepper.spectrum-Stepper--quiet .spectrum-Stepper-input", + ".spectrum-Stepper.spectrum-Stepper--quiet.hide-stepper .spectrum-Stepper-input", + ".spectrum-Stepper.spectrum-Stepper--quiet.is-focused,\n.spectrum-Stepper.spectrum-Stepper--quiet:focus", + ".spectrum-Stepper.spectrum-Stepper--quiet.is-focused:hover,\n\t.spectrum-Stepper.spectrum-Stepper--quiet:focus:hover", + ".spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused", + ".spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:after", + ".spectrum-Stepper.spectrum-Stepper--quiet.is-keyboardFocused:hover", + ".spectrum-Stepper.spectrum-Stepper--quiet:after", + ".spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled)", + ".spectrum-Stepper.spectrum-Stepper--quiet:hover:not(.is-disabled) .spectrum-Stepper-buttons", + ".spectrum-Stepper.spectrum-Stepper--sizeL", + ".spectrum-Stepper.spectrum-Stepper--sizeS", + ".spectrum-Stepper.spectrum-Stepper--sizeXL", + ".spectrum-Stepper:before", + ".spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-buttons,\n\t.spectrum-Stepper:hover:not(.is-disabled) .spectrum-Stepper-input", + ".spectrum-Stepper:hover:not(.is-disabled, .is-invalid)", + ".x" + ], + "mods": [ + "--mod-stepper-animation-duration", + "--mod-stepper-border-color", + "--mod-stepper-border-color-focus", + "--mod-stepper-border-color-focus-hover", + "--mod-stepper-border-color-focus-hover-invalid", + "--mod-stepper-border-color-focus-invalid", + "--mod-stepper-border-color-hover", + "--mod-stepper-border-color-hover-invalid", + "--mod-stepper-border-color-invalid", + "--mod-stepper-border-color-keyboard-focus", + "--mod-stepper-border-color-keyboard-focus-invalid", + "--mod-stepper-border-radius", + "--mod-stepper-border-width", + "--mod-stepper-button-border-width", + "--mod-stepper-button-width", + "--mod-stepper-button-width-quiet", + "--mod-stepper-buttons-background-color", + "--mod-stepper-buttons-border-color", + "--mod-stepper-buttons-border-color-focus", + "--mod-stepper-buttons-border-color-focus-hover", + "--mod-stepper-buttons-border-color-hover", + "--mod-stepper-buttons-border-color-keyboard-focus", + "--mod-stepper-buttons-border-style", + "--mod-stepper-buttons-border-width", + "--mod-stepper-focus-indicator-color", + "--mod-stepper-focus-indicator-gap", + "--mod-stepper-focus-indicator-width", + "--mod-stepper-height", + "--mod-stepper-min-width-multiplier", + "--mod-stepper-width" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-border-width-100", + "--spectrum-border-width-200", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-corner-radius-100", + "--spectrum-disabled-background-color", + "--spectrum-disabled-border-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-in-field-button-edge-to-fill", + "--spectrum-in-field-button-fill-stacked-inner-border-rounding", + "--spectrum-in-field-button-width-stacked-extra-large", + "--spectrum-in-field-button-width-stacked-large", + "--spectrum-in-field-button-width-stacked-medium", + "--spectrum-in-field-button-width-stacked-small", + "--spectrum-negative-border-color-default", + "--spectrum-negative-border-color-focus", + "--spectrum-negative-border-color-focus-hover", + "--spectrum-negative-border-color-hover", + "--spectrum-negative-border-color-key-focus", + "--spectrum-stepper-animation-duration", + "--spectrum-stepper-border-color", + "--spectrum-stepper-border-color-focus", + "--spectrum-stepper-border-color-focus-hover", + "--spectrum-stepper-border-color-focus-hover-invalid", + "--spectrum-stepper-border-color-focus-invalid", + "--spectrum-stepper-border-color-hover", + "--spectrum-stepper-border-color-invalid", + "--spectrum-stepper-border-color-keyboard-focus", + "--spectrum-stepper-border-color-keyboard-focus-invalid", + "--spectrum-stepper-border-radius", + "--spectrum-stepper-border-width", + "--spectrum-stepper-button-border-radius-reset", + "--spectrum-stepper-button-border-width", + "--spectrum-stepper-button-width", + "--spectrum-stepper-buttons-background-color", + "--spectrum-stepper-buttons-border-color", + "--spectrum-stepper-buttons-border-color-focus", + "--spectrum-stepper-buttons-border-color-focus-hover", + "--spectrum-stepper-buttons-border-color-hover", + "--spectrum-stepper-buttons-border-color-keyboard-focus", + "--spectrum-stepper-buttons-border-style", + "--spectrum-stepper-buttons-border-width", + "--spectrum-stepper-focus-indicator-color", + "--spectrum-stepper-focus-indicator-gap", + "--spectrum-stepper-focus-indicator-width", + "--spectrum-stepper-height", + "--spectrum-stepper-width", + "--spectrum-text-field-minimum-width-multiplier" + ], + "system": [ + "--system-spectrum-stepper-border-color", + "--system-spectrum-stepper-border-color-focus", + "--system-spectrum-stepper-border-color-focus-hover", + "--system-spectrum-stepper-border-color-focus-hover-invalid", + "--system-spectrum-stepper-border-color-focus-invalid", + "--system-spectrum-stepper-border-color-hover", + "--system-spectrum-stepper-border-color-invalid", + "--system-spectrum-stepper-border-color-keyboard-focus", + "--system-spectrum-stepper-border-color-keyboard-focus-invalid", + "--system-spectrum-stepper-border-width", + "--system-spectrum-stepper-button-background-color-focus", + "--system-spectrum-stepper-button-background-color-keyboard-focus", + "--system-spectrum-stepper-button-border-radius-reset", + "--system-spectrum-stepper-button-border-width", + "--system-spectrum-stepper-buttons-background-color", + "--system-spectrum-stepper-buttons-border-color", + "--system-spectrum-stepper-buttons-border-color-focus", + "--system-spectrum-stepper-buttons-border-color-hover", + "--system-spectrum-stepper-buttons-border-color-keyboard-focus", + "--system-spectrum-stepper-buttons-border-style", + "--system-spectrum-stepper-buttons-border-width", + "--system-spectrum-stepper-disabled-buttons-background-color", + "--system-spectrum-stepper-disabled-buttons-border-width" + ], + "a11y": [ + "--highcontrast-stepper-border-color", + "--highcontrast-stepper-border-color-focus", + "--highcontrast-stepper-border-color-focus-hover", + "--highcontrast-stepper-border-color-hover", + "--highcontrast-stepper-border-color-keyboard-focus", + "--highcontrast-stepper-buttons-background-color", + "--highcontrast-stepper-buttons-border-width", + "--highcontrast-stepper-focus-indicator-color" + ] +} diff --git a/components/stepper/package.json b/components/stepper/package.json new file mode 100644 index 0000000000..85713904a3 --- /dev/null +++ b/components/stepper/package.json @@ -0,0 +1,52 @@ +{ + "name": "@spectrum-css/stepper", + "version": "6.1.2", + "description": "The Spectrum CSS stepper component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/stepper", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/stepper" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/actionbutton": ">=6", + "@spectrum-css/icon": ">=7", + "@spectrum-css/infieldbutton": ">=5", + "@spectrum-css/textfield": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/infieldbutton": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/actionbutton": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/infieldbutton": "workspace:^", + "@spectrum-css/textfield": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/stepper/template.js b/components/stepper/template.js new file mode 100644 index 0000000000..eee52b061b --- /dev/null +++ b/components/stepper/template.js @@ -0,0 +1,94 @@ +import { Template as InfieldButton } from "@spectrum-css/infieldbutton/stories/template.js"; +import { Template as Textfield } from "@spectrum-css/textfield/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Stepper", + size = "m", + isQuiet = false, + isFocused = false, + isKeyboardFocused = false, + isInvalid = false, + isDisabled = false, + hideStepper = false, + customClasses = [], + id, + style = { + "--mod-actionbutton-icon-size": "10px", + }, +} = {}, context = {}) => { + let iconSize = "75"; + switch (size) { + case "s": + iconSize = "50"; + break; + case "l": + iconSize = "100"; + break; + case "xl": + iconSize = "200"; + break; + default: + iconSize = "75"; + } + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(style)} + > + ${Textfield({ + size, + type: "number", + min: "-2", + max: "2", + step: "0.5", + value: "0", + isDisabled, + isQuiet, + id: id ? `${id}-input` : undefined, + customClasses: [`${rootClass}-textfield`], + customInputClasses: [`${rootClass}-input`], + }, context)} + ${when(!hideStepper, () => html` + + ${InfieldButton({ + size, + customClasses: [`${rootClass}-button`], + iconName: `ChevronUp${iconSize}`, + isDisabled, + isQuiet, + position: "top", + tabIndex: "-1" + }, context)} + ${InfieldButton({ + size, + customClasses: [`${rootClass}-button`], + iconName: `ChevronDown${iconSize}`, + isDisabled, + isQuiet, + position: "bottom", + tabIndex: "-1" + }, context)} + + `)} +
    + `; +}; diff --git a/components/stepper/themes/express.css b/components/stepper/themes/express.css new file mode 100644 index 0000000000..700486b638 --- /dev/null +++ b/components/stepper/themes/express.css @@ -0,0 +1,39 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-style: solid; + --system-spectrum-stepper-buttons-border-width: var(--spectrum-border-width-200); + --system-spectrum-stepper-buttons-border-color: transparent; + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: transparent; + --system-spectrum-stepper-buttons-border-color-focus: transparent; + --system-spectrum-stepper-buttons-border-color-keyboard-focus: transparent; + --system-spectrum-stepper-button-border-radius-reset: var(--spectrum-in-field-button-fill-stacked-inner-border-rounding); + --system-spectrum-stepper-button-border-width: 0; + --system-spectrum-stepper-border-color: var(--spectrum-gray-400); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: transparent; + --system-spectrum-stepper-border-color-focus-invalid: transparent; + --system-spectrum-stepper-border-color-focus-hover-invalid: transparent; + --system-spectrum-stepper-border-color-keyboard-focus-invalid: transparent; + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-400); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-disabled-buttons-background-color: var(--spectrum-disabled-background-color); + --system-spectrum-stepper-disabled-buttons-border-width: 0; +} +/*# sourceMappingURL=components/stepper/themes/express.css.map */ diff --git a/components/stepper/themes/spectrum.css b/components/stepper/themes/spectrum.css new file mode 100644 index 0000000000..76ffc7c803 --- /dev/null +++ b/components/stepper/themes/spectrum.css @@ -0,0 +1,37 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-stepper-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-buttons-border-style: none; + --system-spectrum-stepper-buttons-border-width: 0; + --system-spectrum-stepper-buttons-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-buttons-background-color: var(--spectrum-gray-50); + --system-spectrum-stepper-buttons-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-buttons-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-buttons-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-button-border-radius-reset: 0px; + --system-spectrum-stepper-button-border-width: var(--spectrum-border-width-100); + --system-spectrum-stepper-border-color: var(--spectrum-gray-500); + --system-spectrum-stepper-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-stepper-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-focus-hover: var(--spectrum-gray-800); + --system-spectrum-stepper-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-stepper-border-color-invalid: var(--spectrum-negative-border-color-default); + --system-spectrum-stepper-border-color-focus-invalid: var(--spectrum-negative-border-color-focus); + --system-spectrum-stepper-border-color-focus-hover-invalid: var(--spectrum-negative-border-color-focus-hover); + --system-spectrum-stepper-border-color-keyboard-focus-invalid: var(--spectrum-negative-border-color-key-focus); + --system-spectrum-stepper-button-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-stepper-button-background-color-keyboard-focus: var(--spectrum-gray-200); +} +/*# sourceMappingURL=components/stepper/themes/spectrum.css.map */ diff --git a/components/swatch/index-base.css b/components/swatch/index-base.css new file mode 100644 index 0000000000..bcc836b943 --- /dev/null +++ b/components/swatch/index-base.css @@ -0,0 +1,246 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Swatch { + --spectrum-swatch-focus-indicator-border-radius: 8px; + --spectrum-swatch-icon-border-color: rgba(0, 0, 0, 0.51); + --spectrum-swatch-size: var(--spectrum-swatch-size-small); + --spectrum-swatch-border-radius: var(--spectrum-corner-radius-100); + --spectrum-swatch-border-thickness: var(--spectrum-border-width-100); + --spectrum-swatch-border-thickness-selected: var(--spectrum-border-width-200); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-small); + --spectrum-swatch-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-swatch-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-swatch-border-color: rgba(0, 0, 0, 0.51); + --spectrum-swatch-border-color-selected: var(--spectrum-gray-900); + --spectrum-swatch-inner-border-color-selected: var(--spectrum-gray-50); + --spectrum-swatch-disabled-icon-border-color: var(--spectrum-swatch-disabled-icon-border-color); + --spectrum-swatch-disabled-icon-color: var(--spectrum-white); + --spectrum-swatch-dash-icon-color: var(--spectrum-gray-800); + --spectrum-swatch-slash-icon-color: var(--spectrum-red-900); + --spectrum-swatch-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +.spectrum--light .spectrum-Swatch { + --spectrum-swatch-border-color: rgba(0, 0, 0, 0.51); +} +.spectrum--dark .spectrum-Swatch, +.spectrum--darkest .spectrum-Swatch { + --spectrum-swatch-border-color: rgba(255, 255, 255, 0.51); +} +.spectrum-Swatch--sizeXS { + --spectrum-swatch-size: var(--spectrum-swatch-size-extra-small); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-extra-small); +} +.spectrum-Swatch--sizeS { + --spectrum-swatch-size: var(--spectrum-swatch-size-small); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-small); +} +.spectrum-Swatch--sizeM { + --spectrum-swatch-size: var(--spectrum-swatch-size-medium); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-medium); +} +.spectrum-Swatch--sizeL { + --spectrum-swatch-size: var(--spectrum-swatch-size-large); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-large); +} +@media (forced-colors: active) { + .spectrum-Swatch { + --highcontrast-swatch-disabled-icon-color: GrayText; + --highcontrast-swatch-focus-indicator-color: ButtonText; + --highcontrast-swatch-background-color-selected: Background; + --highcontrast-swatch-border-color-selected: Highlight; + --highcontrast-swatch-border-color: ButtonText; + --highcontrast-swatch-fill-foreground-color: ButtonText; + } + .spectrum-Swatch .spectrum-Swatch-fill { + forced-color-adjust: none; + } + .spectrum-Swatch.is-disabled, + .spectrum-Swatch[disabled] { + --highcontrast-swatch-border-color: GrayText; + } +} +.spectrum-Swatch { + inline-size: var(--mod-swatch-size, var(--spectrum-swatch-size)); + block-size: var(--mod-swatch-size, var(--spectrum-swatch-size)); + display: flex; + align-items: center; + justify-content: center; + position: relative; + outline: none; + -webkit-user-select: none; + user-select: none; +} +.spectrum-Swatch .spectrum-Swatch-disabledIcon { + inline-size: var(--mod-swatch-disabled-icon-size, var(--spectrum-swatch-disabled-icon-size)); + block-size: var(--mod-swatch-disabled-icon-size, var(--spectrum-swatch-disabled-icon-size)); +} +.spectrum-Swatch, +.spectrum-Swatch:before { + border-radius: var(--mod-swatch-border-radius, var(--spectrum-swatch-border-radius)); +} +.spectrum-Swatch.is-selected { + background-color: var(--highcontrast-swatch-background-color-selected, var(--mod-swatch-inner-border-color-selected, var(--spectrum-swatch-inner-border-color-selected))); +} +.spectrum-Swatch.is-selected .spectrum-Swatch-fill { + clip-path: polygon( + calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) + ); + border-radius: 0; +} +.spectrum-Swatch.is-selected .spectrum-Swatch-fill:before { + border-radius: 0; + box-shadow: none; +} +.spectrum-Swatch.is-selected:before { + opacity: 1; +} +.spectrum-Swatch.is-image .spectrum-Swatch-fill:before { + background-color: initial; +} +.spectrum-Swatch.is-mixedValue .spectrum-Swatch-fill { + background: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch.is-mixedValue .spectrum-Swatch-mixedValueIcon { + color: var(--spectrum-swatch-dash-icon-color); + display: block; +} +.spectrum-Swatch.is-nothing .spectrum-Swatch-fill { + background-color: var(--spectrum-picked-color, transparent); + background-image: none; +} +.spectrum-Swatch.is-nothing .spectrum-Swatch-fill:after { + inline-size: var(--mod-swatch-slash-thickness, var(--spectrum-swatch-slash-thickness)); + content: ""; + position: absolute; + transform: rotate(-45deg); + block-size: 200%; + background: var(--highcontrast-swatch-fill-foreground-color, var(--mod-swatch-slash-icon-color, var(--spectrum-swatch-slash-icon-color))); +} +.spectrum-Swatch.is-nothing.spectrum-Swatch--rectangle .spectrum-Swatch-fill:after { + transform: rotate(-25deg); +} +.spectrum-Swatch.is-disabled .spectrum-Swatch-disabledIcon, +.spectrum-Swatch[disabled] .spectrum-Swatch-disabledIcon { + display: block; +} +.spectrum-Swatch:before { + content: ""; + position: absolute; + inset: 0; + border-width: var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)); + border-style: solid; + border-color: var(--highcontrast-swatch-border-color-selected, var(--mod-swatch-border-color-selected, var(--spectrum-swatch-border-color-selected))); + opacity: 0; + pointer-events: none; +} +.spectrum-Swatch:after { + content: ""; + position: absolute; + inset: calc(var(--mod-swatch-focus-indicator-gap, var(--spectrum-swatch-focus-indicator-gap)) * -2); + opacity: 0; + border-width: var(--mod-swatch-focus-indicator-thickness, var(--spectrum-swatch-focus-indicator-thickness)); + border-style: solid; + border-color: var(--highcontrast-swatch-focus-indicator-color, var(--mod-swatch-focus-indicator-color, var(--spectrum-swatch-focus-indicator-color))); + border-radius: var(--mod-swatch-focus-indicator-border-radius, var(--spectrum-swatch-focus-indicator-border-radius)); + transition: opacity var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; +} +.spectrum-Swatch:focus-visible:after { + opacity: 1; +} +.spectrum-Swatch-fill { + display: flex; + align-items: center; + justify-content: center; + inline-size: 100%; + block-size: 100%; + box-sizing: border-box; + position: relative; + overflow: hidden; +} +.spectrum-Swatch-fill, +.spectrum-Swatch-fill:before { + border-radius: var(--mod-swatch-border-radius, var(--spectrum-swatch-border-radius)); +} +.spectrum-Swatch-fill:before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + background-color: var(--spectrum-picked-color, transparent); + box-shadow: inset 0 0 0 var(--mod-swatch-border-thickness, var(--spectrum-swatch-border-thickness)) var(--highcontrast-swatch-border-color, var(--mod-swatch-border-color, var(--spectrum-swatch-border-color))); +} +.spectrum-Swatch--noBorder .spectrum-Swatch-fill:before { + box-shadow: none; + background-color: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch-mixedValueIcon { + display: none; + pointer-events: none; + color: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch-disabledIcon { + position: relative; + z-index: 1; + display: none; + pointer-events: none; + color: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); + stroke: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); +} +.spectrum-Swatch-disabledIcon path:first-child { + fill: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); +} +.spectrum-Swatch-disabledIcon path:last-child { + fill: var(--mod-swatch-icon-border-color, var(--spectrum-swatch-icon-border-color)); +} +.spectrum-Swatch--rectangle { + inline-size: calc(var(--mod-swatch-size, var(--spectrum-swatch-size)) * 2); +} +.spectrum-Swatch--roundingNone, +.spectrum-Swatch--roundingNone .spectrum-Swatch-fill, +.spectrum-Swatch--roundingNone .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill, +.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingNone:after, +.spectrum-Swatch--roundingNone:before { + border-radius: 0; +} +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill, +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle), +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):after, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):before { + border-radius: 100%; +} +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill { + clip-path: circle(calc(50% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) at 50% 50%); +} +.spectrum-Swatch-image { + object-fit: contain; + inline-size: 100%; + block-size: 100%; + transition: + width var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + height var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; +} +/*# sourceMappingURL=components/swatch/index.css.map */ diff --git a/components/swatch/index-vars.css b/components/swatch/index-vars.css new file mode 100644 index 0000000000..bcc836b943 --- /dev/null +++ b/components/swatch/index-vars.css @@ -0,0 +1,246 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Swatch { + --spectrum-swatch-focus-indicator-border-radius: 8px; + --spectrum-swatch-icon-border-color: rgba(0, 0, 0, 0.51); + --spectrum-swatch-size: var(--spectrum-swatch-size-small); + --spectrum-swatch-border-radius: var(--spectrum-corner-radius-100); + --spectrum-swatch-border-thickness: var(--spectrum-border-width-100); + --spectrum-swatch-border-thickness-selected: var(--spectrum-border-width-200); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-small); + --spectrum-swatch-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-swatch-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-swatch-border-color: rgba(0, 0, 0, 0.51); + --spectrum-swatch-border-color-selected: var(--spectrum-gray-900); + --spectrum-swatch-inner-border-color-selected: var(--spectrum-gray-50); + --spectrum-swatch-disabled-icon-border-color: var(--spectrum-swatch-disabled-icon-border-color); + --spectrum-swatch-disabled-icon-color: var(--spectrum-white); + --spectrum-swatch-dash-icon-color: var(--spectrum-gray-800); + --spectrum-swatch-slash-icon-color: var(--spectrum-red-900); + --spectrum-swatch-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +.spectrum--light .spectrum-Swatch { + --spectrum-swatch-border-color: rgba(0, 0, 0, 0.51); +} +.spectrum--dark .spectrum-Swatch, +.spectrum--darkest .spectrum-Swatch { + --spectrum-swatch-border-color: rgba(255, 255, 255, 0.51); +} +.spectrum-Swatch--sizeXS { + --spectrum-swatch-size: var(--spectrum-swatch-size-extra-small); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-extra-small); +} +.spectrum-Swatch--sizeS { + --spectrum-swatch-size: var(--spectrum-swatch-size-small); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-small); +} +.spectrum-Swatch--sizeM { + --spectrum-swatch-size: var(--spectrum-swatch-size-medium); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-medium); +} +.spectrum-Swatch--sizeL { + --spectrum-swatch-size: var(--spectrum-swatch-size-large); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-large); +} +@media (forced-colors: active) { + .spectrum-Swatch { + --highcontrast-swatch-disabled-icon-color: GrayText; + --highcontrast-swatch-focus-indicator-color: ButtonText; + --highcontrast-swatch-background-color-selected: Background; + --highcontrast-swatch-border-color-selected: Highlight; + --highcontrast-swatch-border-color: ButtonText; + --highcontrast-swatch-fill-foreground-color: ButtonText; + } + .spectrum-Swatch .spectrum-Swatch-fill { + forced-color-adjust: none; + } + .spectrum-Swatch.is-disabled, + .spectrum-Swatch[disabled] { + --highcontrast-swatch-border-color: GrayText; + } +} +.spectrum-Swatch { + inline-size: var(--mod-swatch-size, var(--spectrum-swatch-size)); + block-size: var(--mod-swatch-size, var(--spectrum-swatch-size)); + display: flex; + align-items: center; + justify-content: center; + position: relative; + outline: none; + -webkit-user-select: none; + user-select: none; +} +.spectrum-Swatch .spectrum-Swatch-disabledIcon { + inline-size: var(--mod-swatch-disabled-icon-size, var(--spectrum-swatch-disabled-icon-size)); + block-size: var(--mod-swatch-disabled-icon-size, var(--spectrum-swatch-disabled-icon-size)); +} +.spectrum-Swatch, +.spectrum-Swatch:before { + border-radius: var(--mod-swatch-border-radius, var(--spectrum-swatch-border-radius)); +} +.spectrum-Swatch.is-selected { + background-color: var(--highcontrast-swatch-background-color-selected, var(--mod-swatch-inner-border-color-selected, var(--spectrum-swatch-inner-border-color-selected))); +} +.spectrum-Swatch.is-selected .spectrum-Swatch-fill { + clip-path: polygon( + calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) + ); + border-radius: 0; +} +.spectrum-Swatch.is-selected .spectrum-Swatch-fill:before { + border-radius: 0; + box-shadow: none; +} +.spectrum-Swatch.is-selected:before { + opacity: 1; +} +.spectrum-Swatch.is-image .spectrum-Swatch-fill:before { + background-color: initial; +} +.spectrum-Swatch.is-mixedValue .spectrum-Swatch-fill { + background: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch.is-mixedValue .spectrum-Swatch-mixedValueIcon { + color: var(--spectrum-swatch-dash-icon-color); + display: block; +} +.spectrum-Swatch.is-nothing .spectrum-Swatch-fill { + background-color: var(--spectrum-picked-color, transparent); + background-image: none; +} +.spectrum-Swatch.is-nothing .spectrum-Swatch-fill:after { + inline-size: var(--mod-swatch-slash-thickness, var(--spectrum-swatch-slash-thickness)); + content: ""; + position: absolute; + transform: rotate(-45deg); + block-size: 200%; + background: var(--highcontrast-swatch-fill-foreground-color, var(--mod-swatch-slash-icon-color, var(--spectrum-swatch-slash-icon-color))); +} +.spectrum-Swatch.is-nothing.spectrum-Swatch--rectangle .spectrum-Swatch-fill:after { + transform: rotate(-25deg); +} +.spectrum-Swatch.is-disabled .spectrum-Swatch-disabledIcon, +.spectrum-Swatch[disabled] .spectrum-Swatch-disabledIcon { + display: block; +} +.spectrum-Swatch:before { + content: ""; + position: absolute; + inset: 0; + border-width: var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)); + border-style: solid; + border-color: var(--highcontrast-swatch-border-color-selected, var(--mod-swatch-border-color-selected, var(--spectrum-swatch-border-color-selected))); + opacity: 0; + pointer-events: none; +} +.spectrum-Swatch:after { + content: ""; + position: absolute; + inset: calc(var(--mod-swatch-focus-indicator-gap, var(--spectrum-swatch-focus-indicator-gap)) * -2); + opacity: 0; + border-width: var(--mod-swatch-focus-indicator-thickness, var(--spectrum-swatch-focus-indicator-thickness)); + border-style: solid; + border-color: var(--highcontrast-swatch-focus-indicator-color, var(--mod-swatch-focus-indicator-color, var(--spectrum-swatch-focus-indicator-color))); + border-radius: var(--mod-swatch-focus-indicator-border-radius, var(--spectrum-swatch-focus-indicator-border-radius)); + transition: opacity var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; +} +.spectrum-Swatch:focus-visible:after { + opacity: 1; +} +.spectrum-Swatch-fill { + display: flex; + align-items: center; + justify-content: center; + inline-size: 100%; + block-size: 100%; + box-sizing: border-box; + position: relative; + overflow: hidden; +} +.spectrum-Swatch-fill, +.spectrum-Swatch-fill:before { + border-radius: var(--mod-swatch-border-radius, var(--spectrum-swatch-border-radius)); +} +.spectrum-Swatch-fill:before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + background-color: var(--spectrum-picked-color, transparent); + box-shadow: inset 0 0 0 var(--mod-swatch-border-thickness, var(--spectrum-swatch-border-thickness)) var(--highcontrast-swatch-border-color, var(--mod-swatch-border-color, var(--spectrum-swatch-border-color))); +} +.spectrum-Swatch--noBorder .spectrum-Swatch-fill:before { + box-shadow: none; + background-color: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch-mixedValueIcon { + display: none; + pointer-events: none; + color: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch-disabledIcon { + position: relative; + z-index: 1; + display: none; + pointer-events: none; + color: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); + stroke: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); +} +.spectrum-Swatch-disabledIcon path:first-child { + fill: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); +} +.spectrum-Swatch-disabledIcon path:last-child { + fill: var(--mod-swatch-icon-border-color, var(--spectrum-swatch-icon-border-color)); +} +.spectrum-Swatch--rectangle { + inline-size: calc(var(--mod-swatch-size, var(--spectrum-swatch-size)) * 2); +} +.spectrum-Swatch--roundingNone, +.spectrum-Swatch--roundingNone .spectrum-Swatch-fill, +.spectrum-Swatch--roundingNone .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill, +.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingNone:after, +.spectrum-Swatch--roundingNone:before { + border-radius: 0; +} +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill, +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle), +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):after, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):before { + border-radius: 100%; +} +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill { + clip-path: circle(calc(50% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) at 50% 50%); +} +.spectrum-Swatch-image { + object-fit: contain; + inline-size: 100%; + block-size: 100%; + transition: + width var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + height var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; +} +/*# sourceMappingURL=components/swatch/index.css.map */ diff --git a/components/swatch/index.css b/components/swatch/index.css new file mode 100644 index 0000000000..bcc836b943 --- /dev/null +++ b/components/swatch/index.css @@ -0,0 +1,246 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Swatch { + --spectrum-swatch-focus-indicator-border-radius: 8px; + --spectrum-swatch-icon-border-color: rgba(0, 0, 0, 0.51); + --spectrum-swatch-size: var(--spectrum-swatch-size-small); + --spectrum-swatch-border-radius: var(--spectrum-corner-radius-100); + --spectrum-swatch-border-thickness: var(--spectrum-border-width-100); + --spectrum-swatch-border-thickness-selected: var(--spectrum-border-width-200); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-small); + --spectrum-swatch-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-swatch-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-swatch-border-color: rgba(0, 0, 0, 0.51); + --spectrum-swatch-border-color-selected: var(--spectrum-gray-900); + --spectrum-swatch-inner-border-color-selected: var(--spectrum-gray-50); + --spectrum-swatch-disabled-icon-border-color: var(--spectrum-swatch-disabled-icon-border-color); + --spectrum-swatch-disabled-icon-color: var(--spectrum-white); + --spectrum-swatch-dash-icon-color: var(--spectrum-gray-800); + --spectrum-swatch-slash-icon-color: var(--spectrum-red-900); + --spectrum-swatch-focus-indicator-color: var(--spectrum-focus-indicator-color); +} +.spectrum--light .spectrum-Swatch { + --spectrum-swatch-border-color: rgba(0, 0, 0, 0.51); +} +.spectrum--dark .spectrum-Swatch, +.spectrum--darkest .spectrum-Swatch { + --spectrum-swatch-border-color: rgba(255, 255, 255, 0.51); +} +.spectrum-Swatch--sizeXS { + --spectrum-swatch-size: var(--spectrum-swatch-size-extra-small); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-extra-small); +} +.spectrum-Swatch--sizeS { + --spectrum-swatch-size: var(--spectrum-swatch-size-small); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-small); +} +.spectrum-Swatch--sizeM { + --spectrum-swatch-size: var(--spectrum-swatch-size-medium); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-medium); +} +.spectrum-Swatch--sizeL { + --spectrum-swatch-size: var(--spectrum-swatch-size-large); + --spectrum-swatch-disabled-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-swatch-slash-thickness: var(--spectrum-swatch-slash-thickness-large); +} +@media (forced-colors: active) { + .spectrum-Swatch { + --highcontrast-swatch-disabled-icon-color: GrayText; + --highcontrast-swatch-focus-indicator-color: ButtonText; + --highcontrast-swatch-background-color-selected: Background; + --highcontrast-swatch-border-color-selected: Highlight; + --highcontrast-swatch-border-color: ButtonText; + --highcontrast-swatch-fill-foreground-color: ButtonText; + } + .spectrum-Swatch .spectrum-Swatch-fill { + forced-color-adjust: none; + } + .spectrum-Swatch.is-disabled, + .spectrum-Swatch[disabled] { + --highcontrast-swatch-border-color: GrayText; + } +} +.spectrum-Swatch { + inline-size: var(--mod-swatch-size, var(--spectrum-swatch-size)); + block-size: var(--mod-swatch-size, var(--spectrum-swatch-size)); + display: flex; + align-items: center; + justify-content: center; + position: relative; + outline: none; + -webkit-user-select: none; + user-select: none; +} +.spectrum-Swatch .spectrum-Swatch-disabledIcon { + inline-size: var(--mod-swatch-disabled-icon-size, var(--spectrum-swatch-disabled-icon-size)); + block-size: var(--mod-swatch-disabled-icon-size, var(--spectrum-swatch-disabled-icon-size)); +} +.spectrum-Swatch, +.spectrum-Swatch:before { + border-radius: var(--mod-swatch-border-radius, var(--spectrum-swatch-border-radius)); +} +.spectrum-Swatch.is-selected { + background-color: var(--highcontrast-swatch-background-color-selected, var(--mod-swatch-inner-border-color-selected, var(--spectrum-swatch-inner-border-color-selected))); +} +.spectrum-Swatch.is-selected .spectrum-Swatch-fill { + clip-path: polygon( + calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2), + calc(var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) calc(100% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) + ); + border-radius: 0; +} +.spectrum-Swatch.is-selected .spectrum-Swatch-fill:before { + border-radius: 0; + box-shadow: none; +} +.spectrum-Swatch.is-selected:before { + opacity: 1; +} +.spectrum-Swatch.is-image .spectrum-Swatch-fill:before { + background-color: initial; +} +.spectrum-Swatch.is-mixedValue .spectrum-Swatch-fill { + background: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch.is-mixedValue .spectrum-Swatch-mixedValueIcon { + color: var(--spectrum-swatch-dash-icon-color); + display: block; +} +.spectrum-Swatch.is-nothing .spectrum-Swatch-fill { + background-color: var(--spectrum-picked-color, transparent); + background-image: none; +} +.spectrum-Swatch.is-nothing .spectrum-Swatch-fill:after { + inline-size: var(--mod-swatch-slash-thickness, var(--spectrum-swatch-slash-thickness)); + content: ""; + position: absolute; + transform: rotate(-45deg); + block-size: 200%; + background: var(--highcontrast-swatch-fill-foreground-color, var(--mod-swatch-slash-icon-color, var(--spectrum-swatch-slash-icon-color))); +} +.spectrum-Swatch.is-nothing.spectrum-Swatch--rectangle .spectrum-Swatch-fill:after { + transform: rotate(-25deg); +} +.spectrum-Swatch.is-disabled .spectrum-Swatch-disabledIcon, +.spectrum-Swatch[disabled] .spectrum-Swatch-disabledIcon { + display: block; +} +.spectrum-Swatch:before { + content: ""; + position: absolute; + inset: 0; + border-width: var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)); + border-style: solid; + border-color: var(--highcontrast-swatch-border-color-selected, var(--mod-swatch-border-color-selected, var(--spectrum-swatch-border-color-selected))); + opacity: 0; + pointer-events: none; +} +.spectrum-Swatch:after { + content: ""; + position: absolute; + inset: calc(var(--mod-swatch-focus-indicator-gap, var(--spectrum-swatch-focus-indicator-gap)) * -2); + opacity: 0; + border-width: var(--mod-swatch-focus-indicator-thickness, var(--spectrum-swatch-focus-indicator-thickness)); + border-style: solid; + border-color: var(--highcontrast-swatch-focus-indicator-color, var(--mod-swatch-focus-indicator-color, var(--spectrum-swatch-focus-indicator-color))); + border-radius: var(--mod-swatch-focus-indicator-border-radius, var(--spectrum-swatch-focus-indicator-border-radius)); + transition: opacity var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; +} +.spectrum-Swatch:focus-visible:after { + opacity: 1; +} +.spectrum-Swatch-fill { + display: flex; + align-items: center; + justify-content: center; + inline-size: 100%; + block-size: 100%; + box-sizing: border-box; + position: relative; + overflow: hidden; +} +.spectrum-Swatch-fill, +.spectrum-Swatch-fill:before { + border-radius: var(--mod-swatch-border-radius, var(--spectrum-swatch-border-radius)); +} +.spectrum-Swatch-fill:before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + background-color: var(--spectrum-picked-color, transparent); + box-shadow: inset 0 0 0 var(--mod-swatch-border-thickness, var(--spectrum-swatch-border-thickness)) var(--highcontrast-swatch-border-color, var(--mod-swatch-border-color, var(--spectrum-swatch-border-color))); +} +.spectrum-Swatch--noBorder .spectrum-Swatch-fill:before { + box-shadow: none; + background-color: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch-mixedValueIcon { + display: none; + pointer-events: none; + color: var(--spectrum-picked-color, transparent); +} +.spectrum-Swatch-disabledIcon { + position: relative; + z-index: 1; + display: none; + pointer-events: none; + color: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); + stroke: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); +} +.spectrum-Swatch-disabledIcon path:first-child { + fill: var(--highcontrast-swatch-disabled-icon-color, var(--mod-swatch-disabled-icon-color, var(--spectrum-swatch-disabled-icon-color))); +} +.spectrum-Swatch-disabledIcon path:last-child { + fill: var(--mod-swatch-icon-border-color, var(--spectrum-swatch-icon-border-color)); +} +.spectrum-Swatch--rectangle { + inline-size: calc(var(--mod-swatch-size, var(--spectrum-swatch-size)) * 2); +} +.spectrum-Swatch--roundingNone, +.spectrum-Swatch--roundingNone .spectrum-Swatch-fill, +.spectrum-Swatch--roundingNone .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill, +.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingNone:after, +.spectrum-Swatch--roundingNone:before { + border-radius: 0; +} +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill, +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle), +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):after, +.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):before { + border-radius: 100%; +} +.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill { + clip-path: circle(calc(50% - var(--mod-swatch-border-thickness-selected, var(--spectrum-swatch-border-thickness-selected)) * 2) at 50% 50%); +} +.spectrum-Swatch-image { + object-fit: contain; + inline-size: 100%; + block-size: 100%; + transition: + width var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + height var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; +} +/*# sourceMappingURL=components/swatch/index.css.map */ diff --git a/components/swatch/metadata.json b/components/swatch/metadata.json new file mode 100644 index 0000000000..0a556c1f10 --- /dev/null +++ b/components/swatch/metadata.json @@ -0,0 +1,115 @@ +{ + "selectors": [ + ".spectrum--dark .spectrum-Swatch,\n.spectrum--darkest .spectrum-Swatch", + ".spectrum--light .spectrum-Swatch", + ".spectrum-Swatch", + ".spectrum-Swatch .spectrum-Swatch-disabledIcon", + ".spectrum-Swatch .spectrum-Swatch-fill", + ".spectrum-Swatch,\n.spectrum-Swatch:before", + ".spectrum-Swatch--noBorder .spectrum-Swatch-fill:before", + ".spectrum-Swatch--rectangle", + ".spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill", + ".spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill,\n.spectrum-Swatch--roundingFull.is-selected:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before,\n.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle),\n.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill,\n.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle) .spectrum-Swatch-fill:before,\n.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):after,\n.spectrum-Swatch--roundingFull:not(.spectrum-Swatch--rectangle):before", + ".spectrum-Swatch--roundingNone,\n.spectrum-Swatch--roundingNone .spectrum-Swatch-fill,\n.spectrum-Swatch--roundingNone .spectrum-Swatch-fill:before,\n.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill,\n.spectrum-Swatch--roundingNone.is-selected .spectrum-Swatch-fill:before,\n.spectrum-Swatch--roundingNone:after,\n.spectrum-Swatch--roundingNone:before", + ".spectrum-Swatch--sizeL", + ".spectrum-Swatch--sizeM", + ".spectrum-Swatch--sizeS", + ".spectrum-Swatch--sizeXS", + ".spectrum-Swatch-disabledIcon", + ".spectrum-Swatch-disabledIcon path:first-child", + ".spectrum-Swatch-disabledIcon path:last-child", + ".spectrum-Swatch-fill", + ".spectrum-Swatch-fill,\n.spectrum-Swatch-fill:before", + ".spectrum-Swatch-fill:before", + ".spectrum-Swatch-image", + ".spectrum-Swatch-mixedValueIcon", + ".spectrum-Swatch.is-disabled .spectrum-Swatch-disabledIcon,\n.spectrum-Swatch[disabled] .spectrum-Swatch-disabledIcon", + ".spectrum-Swatch.is-disabled,\n\t.spectrum-Swatch[disabled]", + ".spectrum-Swatch.is-image .spectrum-Swatch-fill:before", + ".spectrum-Swatch.is-mixedValue .spectrum-Swatch-fill", + ".spectrum-Swatch.is-mixedValue .spectrum-Swatch-mixedValueIcon", + ".spectrum-Swatch.is-nothing .spectrum-Swatch-fill", + ".spectrum-Swatch.is-nothing .spectrum-Swatch-fill:after", + ".spectrum-Swatch.is-nothing.spectrum-Swatch--rectangle .spectrum-Swatch-fill:after", + ".spectrum-Swatch.is-selected", + ".spectrum-Swatch.is-selected .spectrum-Swatch-fill", + ".spectrum-Swatch.is-selected .spectrum-Swatch-fill:before", + ".spectrum-Swatch.is-selected:before", + ".spectrum-Swatch:after", + ".spectrum-Swatch:before", + ".spectrum-Swatch:focus-visible:after" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-swatch-border-color", + "--mod-swatch-border-color-selected", + "--mod-swatch-border-radius", + "--mod-swatch-border-thickness", + "--mod-swatch-border-thickness-selected", + "--mod-swatch-disabled-icon-color", + "--mod-swatch-disabled-icon-size", + "--mod-swatch-focus-indicator-border-radius", + "--mod-swatch-focus-indicator-color", + "--mod-swatch-focus-indicator-gap", + "--mod-swatch-focus-indicator-thickness", + "--mod-swatch-icon-border-color", + "--mod-swatch-inner-border-color-selected", + "--mod-swatch-size", + "--mod-swatch-slash-icon-color", + "--mod-swatch-slash-thickness" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-border-width-100", + "--spectrum-border-width-200", + "--spectrum-corner-radius-100", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-gray-50", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-picked-color", + "--spectrum-red-900", + "--spectrum-swatch-border-color", + "--spectrum-swatch-border-color-selected", + "--spectrum-swatch-border-radius", + "--spectrum-swatch-border-thickness", + "--spectrum-swatch-border-thickness-selected", + "--spectrum-swatch-dash-icon-color", + "--spectrum-swatch-disabled-icon-border-color", + "--spectrum-swatch-disabled-icon-color", + "--spectrum-swatch-disabled-icon-size", + "--spectrum-swatch-focus-indicator-border-radius", + "--spectrum-swatch-focus-indicator-color", + "--spectrum-swatch-focus-indicator-gap", + "--spectrum-swatch-focus-indicator-thickness", + "--spectrum-swatch-icon-border-color", + "--spectrum-swatch-inner-border-color-selected", + "--spectrum-swatch-size", + "--spectrum-swatch-size-extra-small", + "--spectrum-swatch-size-large", + "--spectrum-swatch-size-medium", + "--spectrum-swatch-size-small", + "--spectrum-swatch-slash-icon-color", + "--spectrum-swatch-slash-thickness", + "--spectrum-swatch-slash-thickness-extra-small", + "--spectrum-swatch-slash-thickness-large", + "--spectrum-swatch-slash-thickness-medium", + "--spectrum-swatch-slash-thickness-small", + "--spectrum-white", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-50", + "--spectrum-workflow-icon-size-75" + ], + "system": [], + "a11y": [ + "--highcontrast-swatch-background-color-selected", + "--highcontrast-swatch-border-color", + "--highcontrast-swatch-border-color-selected", + "--highcontrast-swatch-disabled-icon-color", + "--highcontrast-swatch-fill-foreground-color", + "--highcontrast-swatch-focus-indicator-color" + ] +} diff --git a/components/swatch/package.json b/components/swatch/package.json new file mode 100644 index 0000000000..df6524d166 --- /dev/null +++ b/components/swatch/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/swatch", + "version": "6.1.1", + "description": "The Spectrum CSS Color swatch component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/swatch", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/swatch" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/opacitycheckerboard": ">=2", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/opacitycheckerboard": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/swatch/template.js b/components/swatch/template.js new file mode 100644 index 0000000000..df9e6d61ea --- /dev/null +++ b/components/swatch/template.js @@ -0,0 +1,102 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as OpacityCheckerboard } from "@spectrum-css/opacitycheckerboard/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { capitalize, lowerCase } from "lodash-es"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Swatch", + size = "m", + isSelected = false, + isDisabled = false, + rounding = "regular", + customClasses = [], + swatchColor, + customStyles = {}, + id, +} = {}, context = {}) => { + const { updateArgs } = context; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + ?disabled=${isDisabled} + id=${ifDefined(id)} + style=${ifDefined(styleMap({ + "--spectrum-picked-color": swatchColor, + ...customStyles, + }))} + tabindex="0" + @click=${() => { + updateArgs({ isSelected: !isSelected }); + }} + @focusout=${() => updateArgs({ isSelected: false })} + @keypress=${(e) => { + if (e.key !== "Enter" && e.key !== " ") return; + updateArgs({ isSelected: !isSelected }); + }} + > + ${OpacityCheckerboard({ + customClasses: [`${rootClass}-fill`], + content: [ + ...(isDisabled ? [Icon({ + customClasses: [`${rootClass}-disabledIcon`], + setName: "workflow", + iconName: "Cancel", + }, context)] : []), + ] + }, context)} +
    + `; +}; + +export const SwatchGroup = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${Template(args, context)} + ${Template({ ...args, swatchColor: "rgba(174, 216, 230, 0.3)" }, context)} + ${Template({ ...args, swatchColor: undefined }, context)} + ${Template({ ...args, rounding: "none" }, context)} + ${Template({ ...args, rounding: "full" }, context)} +
    +`; + +export const States = (args, context) => html` +
    + ${Template(args, context)} +
    +
    + ${SwatchGroup(args, context)} + ${SwatchGroup({ ...args, isDisabled: true }, context)} + ${SwatchGroup({ ...args, isSelected: true }, context)} +
    +`; diff --git a/components/swatchgroup/index-base.css b/components/swatchgroup/index-base.css new file mode 100644 index 0000000000..c788e91ccb --- /dev/null +++ b/components/swatchgroup/index-base.css @@ -0,0 +1,30 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SwatchGroup { + --spectrum-swatchgroup-spacing-compact: var(--spectrum-spacing-50); + --spectrum-swatchgroup-spacing-regular: var(--spectrum-spacing-75); + --spectrum-swatchgroup-spacing-spacious: var(--spectrum-spacing-100); + display: inline-flex; + flex-flow: row wrap; + align-items: flex-start; + justify-content: flex-start; + gap: var(--mod-swatchgroup-spacing-regular, var(--spectrum-swatchgroup-spacing-regular)); +} +.spectrum-SwatchGroup--compact { + gap: var(--mod-swatchgroup-spacing-compact, var(--spectrum-swatchgroup-spacing-compact)); +} +.spectrum-SwatchGroup--spacious { + gap: var(--mod-swatchgroup-spacing-spacious, var(--spectrum-swatchgroup-spacing-spacious)); +} +/*# sourceMappingURL=components/swatchgroup/index.css.map */ diff --git a/components/swatchgroup/index-vars.css b/components/swatchgroup/index-vars.css new file mode 100644 index 0000000000..c788e91ccb --- /dev/null +++ b/components/swatchgroup/index-vars.css @@ -0,0 +1,30 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SwatchGroup { + --spectrum-swatchgroup-spacing-compact: var(--spectrum-spacing-50); + --spectrum-swatchgroup-spacing-regular: var(--spectrum-spacing-75); + --spectrum-swatchgroup-spacing-spacious: var(--spectrum-spacing-100); + display: inline-flex; + flex-flow: row wrap; + align-items: flex-start; + justify-content: flex-start; + gap: var(--mod-swatchgroup-spacing-regular, var(--spectrum-swatchgroup-spacing-regular)); +} +.spectrum-SwatchGroup--compact { + gap: var(--mod-swatchgroup-spacing-compact, var(--spectrum-swatchgroup-spacing-compact)); +} +.spectrum-SwatchGroup--spacious { + gap: var(--mod-swatchgroup-spacing-spacious, var(--spectrum-swatchgroup-spacing-spacious)); +} +/*# sourceMappingURL=components/swatchgroup/index.css.map */ diff --git a/components/swatchgroup/index.css b/components/swatchgroup/index.css new file mode 100644 index 0000000000..c788e91ccb --- /dev/null +++ b/components/swatchgroup/index.css @@ -0,0 +1,30 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-SwatchGroup { + --spectrum-swatchgroup-spacing-compact: var(--spectrum-spacing-50); + --spectrum-swatchgroup-spacing-regular: var(--spectrum-spacing-75); + --spectrum-swatchgroup-spacing-spacious: var(--spectrum-spacing-100); + display: inline-flex; + flex-flow: row wrap; + align-items: flex-start; + justify-content: flex-start; + gap: var(--mod-swatchgroup-spacing-regular, var(--spectrum-swatchgroup-spacing-regular)); +} +.spectrum-SwatchGroup--compact { + gap: var(--mod-swatchgroup-spacing-compact, var(--spectrum-swatchgroup-spacing-compact)); +} +.spectrum-SwatchGroup--spacious { + gap: var(--mod-swatchgroup-spacing-spacious, var(--spectrum-swatchgroup-spacing-spacious)); +} +/*# sourceMappingURL=components/swatchgroup/index.css.map */ diff --git a/components/swatchgroup/metadata.json b/components/swatchgroup/metadata.json new file mode 100644 index 0000000000..a3442504a5 --- /dev/null +++ b/components/swatchgroup/metadata.json @@ -0,0 +1,22 @@ +{ + "selectors": [ + ".spectrum-SwatchGroup", + ".spectrum-SwatchGroup--compact", + ".spectrum-SwatchGroup--spacious" + ], + "mods": [ + "--mod-swatchgroup-spacing-compact", + "--mod-swatchgroup-spacing-regular", + "--mod-swatchgroup-spacing-spacious" + ], + "spectrum": [ + "--spectrum-spacing-100", + "--spectrum-spacing-50", + "--spectrum-spacing-75", + "--spectrum-swatchgroup-spacing-compact", + "--spectrum-swatchgroup-spacing-regular", + "--spectrum-swatchgroup-spacing-spacious" + ], + "system": [], + "a11y": [] +} diff --git a/components/swatchgroup/package.json b/components/swatchgroup/package.json new file mode 100644 index 0000000000..c1ca596d19 --- /dev/null +++ b/components/swatchgroup/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/swatchgroup", + "version": "3.1.1", + "description": "The Spectrum CSS Color swatch group component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/swatchgroup", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/swatchgroup" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/swatch": ">=6", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/swatch": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/swatchgroup/template.js b/components/swatchgroup/template.js new file mode 100644 index 0000000000..3584081e28 --- /dev/null +++ b/components/swatchgroup/template.js @@ -0,0 +1,38 @@ +import { Template as Swatch } from "@spectrum-css/swatch/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-SwatchGroup", + customClasses = [], + size = "m", + density = "regular", + rounding = "regular", + items = [], + customStyles = {}, + id, +}, context) => html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap({ + ...customStyles, + size: `calc(${items.length} / 10 * 32px)`, + })} + id=${ifDefined(id)} + > + ${items.map((swatch) => Swatch({ + size, + rounding, + ...swatch, + }, context))} +
    +`; diff --git a/components/switch/index-base.css b/components/switch/index-base.css new file mode 100644 index 0000000000..086c08bf7d --- /dev/null +++ b/components/switch/index-base.css @@ -0,0 +1,366 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Switch { + --spectrum-switch-label-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-switch-label-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-switch-label-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-switch-label-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-switch-label-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-switch-background-color: var(--spectrum-gray-300); + --spectrum-switch-background-color-disabled: var(--spectrum-gray-300); + --spectrum-switch-background-color-selected-disabled: var(--spectrum-disabled-content-color); + --spectrum-switch-background-color-selected-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-switch-background-color-selected-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-switch-background-color-selected-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-switch-background-color-selected-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-switch-focus-indicator-thickness: var(--mod-focus-indicator-thickness, var(--spectrum-focus-indicator-thickness)); + --spectrum-switch-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-switch-handle-background-color: var(--spectrum-gray-75); + --spectrum-switch-handle-border-color-disabled: var(--spectrum-disabled-content-color); +} +.spectrum-Switch--disabled { + --spectrum-switch-label-color-default: var(--spectrum-disabled-content-color); +} +.spectrum-Switch.spectrum-Switch--emphasized { + --spectrum-switch-background-color-selected-default: var(--spectrum-accent-color-900); + --spectrum-switch-background-color-selected-hover: var(--spectrum-accent-color-1000); + --spectrum-switch-background-color-selected-down: var(--spectrum-accent-color-1100); + --spectrum-switch-background-color-selected-focus: var(--spectrum-accent-color-1000); + --spectrum-switch-handle-border-color-selected-default: var(--spectrum-accent-color-900); + --spectrum-switch-handle-border-color-selected-hover: var(--spectrum-accent-color-1000); + --spectrum-switch-handle-border-color-selected-down: var(--spectrum-accent-color-1100); + --spectrum-switch-handle-border-color-selected-focus: var(--spectrum-accent-color-1000); +} +.spectrum-Switch--sizeS { + --spectrum-switch-min-height: var(--spectrum-component-height-75); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-small); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-small); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-75); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-small); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-75); + --spectrum-switch-font-size: var(--spectrum-font-size-75); +} +.spectrum-Switch--sizeM { + --spectrum-switch-min-height: var(--spectrum-component-height-100); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-medium); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-medium); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-100); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-medium); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-switch-font-size: var(--spectrum-font-size-100); +} +.spectrum-Switch--sizeL { + --spectrum-switch-min-height: var(--spectrum-component-height-200); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-large); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-large); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-200); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-large); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-200); + --spectrum-switch-font-size: var(--spectrum-font-size-200); +} +.spectrum-Switch--sizeXL { + --spectrum-switch-min-height: var(--spectrum-component-height-300); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-extra-large); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-extra-large); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-300); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-extra-large); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-300); + --spectrum-switch-font-size: var(--spectrum-font-size-300); +} +.spectrum-Switch { + display: inline-flex; + align-items: flex-start; + position: relative; + min-block-size: var(--mod-switch-height, var(--spectrum-switch-min-height)); + max-inline-size: 100%; + vertical-align: top; +} +.spectrum-Switch-input { + margin: 0; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + inset-block-start: 0; + inset-inline-start: 0; + opacity: 0; + z-index: 1; + cursor: pointer; +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + transform: translateX(calc(var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%)); +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:dir(rtl):before, +[dir="rtl"] .spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + transform: translateX(calc((var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%) * -1)); +} +.spectrum-Switch-input:disabled, +.spectrum-Switch-input[disabled] { + cursor: default; +} +.spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -1); +} +.spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-default, var(--mod-switch-label-color-default, var(--spectrum-switch-label-color-default))); + margin-inline: var(--mod-switch-control-label-spacing, var(--spectrum-switch-control-label-spacing)); + margin-block-start: var(--mod-switch-spacing-top-to-label, var(--spectrum-switch-spacing-top-to-label)); + margin-block-end: 0; + font-size: var(--mod-switch-font-size, var(--spectrum-switch-font-size)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + transition: color var(--mod-animation-duration-200, var(--spectrum-animation-duration-200)) ease-in-out; +} +.spectrum-Switch-switch { + display: inline-block; + box-sizing: border-box; + position: relative; + inline-size: var(--mod-switch-control-width, var(--spectrum-switch-control-width)); + margin-block: calc(var(--mod-switch-height, var(--spectrum-switch-min-height)) - var(--mod-switch-control-height, var(--spectrum-switch-control-height)) - var(--mod-switch-spacing-top-to-control, var(--spectrum-switch-spacing-top-to-control))); + margin-inline: 0; + flex-grow: 0; + flex-shrink: 0; + vertical-align: middle; + transition: + background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + border var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + block-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + inset-inline-start: 0; + inset-inline-end: 0; + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); +} +.spectrum-Switch-switch:before { + box-sizing: border-box; + transition: + background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + border var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + transform var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + box-shadow var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + inline-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + block-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + border-width: var(--mod-border-width-200, var(--spectrum-border-width-200)); + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); + border-style: solid; +} +.spectrum-Switch-switch:after, +.spectrum-Switch-switch:before { + display: block; + position: absolute; + content: ""; + inset-block-start: 0; + inset-inline-start: 0; +} +.spectrum-Switch-switch:after { + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2 + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); + inset-inline-end: 0; + inset-block-end: 0; + margin: 0; + transition: + opacity var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + margin var(--spectrum-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out; +} +.spectrum-Switch .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color, var(--mod-switch-background-color, var(--spectrum-switch-background-color))); +} +.spectrum-Switch .spectrum-Switch-switch:before { + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color, var(--spectrum-switch-handle-background-color))); + border-color: var(--highcontrast-switch-handle-border-color-default, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color-default))); +} +.spectrum-Switch:active .spectrum-Switch-input + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-down, var(--mod-switch-handle-border-color-down, var(--spectrum-switch-handle-border-color-down))); +} +.spectrum-Switch:active .spectrum-Switch-input ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-down, var(--mod-switch-label-color-down, var(--spectrum-switch-label-color-down))); +} +.spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-down, var(--mod-switch-background-color-selected-down, var(--spectrum-switch-background-color-selected-down))); +} +.spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-down, var(--mod-switch-handle-border-color-selected-down, var(--spectrum-switch-handle-border-color-selected-down))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + box-shadow: 0 0 0 var(--mod-switch-focus-indicator-thickness, var(--spectrum-switch-focus-indicator-thickness)) var(--highcontrast-switch-focus-indicator-color, var(--mod-switch-focus-indicator-color, var(--spectrum-switch-focus-indicator-color))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-focus, var(--mod-switch-label-color-focus, var(--spectrum-switch-label-color-focus))); +} +@media (hover: hover) { + .spectrum-Switch:hover .spectrum-Switch-input + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-hover, var(--mod-switch-handle-border-color-hover, var(--spectrum-switch-handle-border-color-hover))); + box-shadow: none; + } + .spectrum-Switch:hover .spectrum-Switch-input ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-hover, var(--mod-switch-label-color-hover, var(--spectrum-switch-label-color-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-hover, var(--mod-switch-background-color-selected-hover, var(--spectrum-switch-background-color-selected-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-hover, var(--mod-switch-handle-border-color-selected-hover, var(--spectrum-switch-handle-border-color-selected-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-disabled, var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled ~ .spectrum-Switch-label, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-disabled, var(--mod-switch-background-color-selected-disabled, var(--spectrum-switch-background-color-selected-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked ~ .spectrum-Switch-label, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + box-shadow: 0 0 0 var(--mod-switch-focus-indicator-thickness, var(--spectrum-switch-focus-indicator-thickness)) var(--highcontrast-switch-focus-indicator-color, var(--mod-switch-focus-indicator-color, var(--spectrum-switch-focus-indicator-color))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-focus, var(--mod-switch-label-color-focus, var(--spectrum-switch-label-color-focus))); + } +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-default, var(--mod-switch-background-color-selected-default, var(--spectrum-switch-background-color-selected-default))); +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-default, var(--mod-switch-handle-border-color-selected-default, var(--spectrum-switch-handle-border-color-selected-default))); +} +.spectrum-Switch-input:disabled + .spectrum-Switch-switch, +.spectrum-Switch-input[disabled] + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-disabled, var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled))); +} +.spectrum-Switch-input:disabled + .spectrum-Switch-switch:before, +.spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); +} +.spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, +.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-disabled, var(--mod-switch-background-color-selected-disabled, var(--spectrum-switch-background-color-selected-disabled))); +} +.spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, +.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); +} +.spectrum-Switch-input:disabled ~ .spectrum-Switch-label, +.spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Switch { + forced-color-adjust: none; + --highcontrast-switch-label-color-default: ButtonText; + --highcontrast-switch-label-color-hover: ButtonText; + --highcontrast-switch-label-color-down: ButtonText; + --highcontrast-switch-label-color-focus: ButtonText; + --highcontrast-switch-label-color-disabled: GrayText; + --highcontrast-switch-handle-background-color: ButtonFace; + --highcontrast-switch-handle-border-color-default: ButtonText; + --highcontrast-switch-handle-border-color-hover: Highlight; + --highcontrast-switch-handle-border-color-down: Highlight; + --highcontrast-switch-handle-border-color-focus: Highlight; + --highcontrast-switch-handle-border-color-disabled: Highlight; + --highcontrast-switch-handle-border-color-selected-default: Highlight; + --highcontrast-switch-handle-border-color-selected-hover: Highlight; + --highcontrast-switch-handle-border-color-selected-down: Highlight; + --highcontrast-switch-handle-border-color-selected-focus: Highlight; + --highcontrast-switch-background-color: ButtonFace; + --highcontrast-switch-background-color-selected-default: Highlight; + --highcontrast-switch-background-color-selected-hover: Highlight; + --highcontrast-switch-background-color-selected-down: Highlight; + --highcontrast-switch-background-color-selected-focus: Highlight; + --highcontrast-switch-background-color-selected-disabled: Highlight; + --highcontrast-switch-focus-indicator-color: ButtonText; + } + .spectrum-Switch .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px ButtonText; + } + @media (hover: hover) { + .spectrum-Switch:hover .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px Highlight; + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: GrayText; + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + } + .spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch, + .spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch:before, + .spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: GrayText; + } + .spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled ~ .spectrum-Switch-label, + .spectrum-Switch .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: GrayText; + } +} +.spectrum-Switch { + --spectrum-switch-handle-border-color-default: var(--system-spectrum-switch-handle-border-color-default); + --spectrum-switch-handle-border-color-hover: var(--system-spectrum-switch-handle-border-color-hover); + --spectrum-switch-handle-border-color-down: var(--system-spectrum-switch-handle-border-color-down); + --spectrum-switch-handle-border-color-focus: var(--system-spectrum-switch-handle-border-color-focus); + --spectrum-switch-handle-border-color-selected-default: var(--system-spectrum-switch-handle-border-color-selected-default); + --spectrum-switch-handle-border-color-selected-hover: var(--system-spectrum-switch-handle-border-color-selected-hover); + --spectrum-switch-handle-border-color-selected-down: var(--system-spectrum-switch-handle-border-color-selected-down); + --spectrum-switch-handle-border-color-selected-focus: var(--system-spectrum-switch-handle-border-color-selected-focus); +} +/*# sourceMappingURL=components/switch/index.css.map */ diff --git a/components/switch/index-theme.css b/components/switch/index-theme.css new file mode 100644 index 0000000000..aaeac887cf --- /dev/null +++ b/components/switch/index-theme.css @@ -0,0 +1,34 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-600); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-800); +} +.spectrum--express { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-900); +} +/*# sourceMappingURL=components/switch/themes/express.css.map */ diff --git a/components/switch/index-vars.css b/components/switch/index-vars.css new file mode 100644 index 0000000000..d5872c5124 --- /dev/null +++ b/components/switch/index-vars.css @@ -0,0 +1,386 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-600); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-800); +} +.spectrum--express { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-900); +} +.spectrum-Switch { + --spectrum-switch-label-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-switch-label-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-switch-label-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-switch-label-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-switch-label-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-switch-background-color: var(--spectrum-gray-300); + --spectrum-switch-background-color-disabled: var(--spectrum-gray-300); + --spectrum-switch-background-color-selected-disabled: var(--spectrum-disabled-content-color); + --spectrum-switch-background-color-selected-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-switch-background-color-selected-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-switch-background-color-selected-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-switch-background-color-selected-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-switch-focus-indicator-thickness: var(--mod-focus-indicator-thickness, var(--spectrum-focus-indicator-thickness)); + --spectrum-switch-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-switch-handle-background-color: var(--spectrum-gray-75); + --spectrum-switch-handle-border-color-disabled: var(--spectrum-disabled-content-color); +} +.spectrum-Switch--disabled { + --spectrum-switch-label-color-default: var(--spectrum-disabled-content-color); +} +.spectrum-Switch.spectrum-Switch--emphasized { + --spectrum-switch-background-color-selected-default: var(--spectrum-accent-color-900); + --spectrum-switch-background-color-selected-hover: var(--spectrum-accent-color-1000); + --spectrum-switch-background-color-selected-down: var(--spectrum-accent-color-1100); + --spectrum-switch-background-color-selected-focus: var(--spectrum-accent-color-1000); + --spectrum-switch-handle-border-color-selected-default: var(--spectrum-accent-color-900); + --spectrum-switch-handle-border-color-selected-hover: var(--spectrum-accent-color-1000); + --spectrum-switch-handle-border-color-selected-down: var(--spectrum-accent-color-1100); + --spectrum-switch-handle-border-color-selected-focus: var(--spectrum-accent-color-1000); +} +.spectrum-Switch--sizeS { + --spectrum-switch-min-height: var(--spectrum-component-height-75); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-small); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-small); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-75); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-small); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-75); + --spectrum-switch-font-size: var(--spectrum-font-size-75); +} +.spectrum-Switch--sizeM { + --spectrum-switch-min-height: var(--spectrum-component-height-100); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-medium); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-medium); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-100); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-medium); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-switch-font-size: var(--spectrum-font-size-100); +} +.spectrum-Switch--sizeL { + --spectrum-switch-min-height: var(--spectrum-component-height-200); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-large); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-large); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-200); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-large); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-200); + --spectrum-switch-font-size: var(--spectrum-font-size-200); +} +.spectrum-Switch--sizeXL { + --spectrum-switch-min-height: var(--spectrum-component-height-300); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-extra-large); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-extra-large); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-300); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-extra-large); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-300); + --spectrum-switch-font-size: var(--spectrum-font-size-300); +} +.spectrum-Switch { + display: inline-flex; + align-items: flex-start; + position: relative; + min-block-size: var(--mod-switch-height, var(--spectrum-switch-min-height)); + max-inline-size: 100%; + vertical-align: top; +} +.spectrum-Switch-input { + margin: 0; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + inset-block-start: 0; + inset-inline-start: 0; + opacity: 0; + z-index: 1; + cursor: pointer; +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + transform: translateX(calc(var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%)); +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:dir(rtl):before, +[dir="rtl"] .spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + transform: translateX(calc((var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%) * -1)); +} +.spectrum-Switch-input:disabled, +.spectrum-Switch-input[disabled] { + cursor: default; +} +.spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -1); +} +.spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-default, var(--mod-switch-label-color-default, var(--spectrum-switch-label-color-default))); + margin-inline: var(--mod-switch-control-label-spacing, var(--spectrum-switch-control-label-spacing)); + margin-block-start: var(--mod-switch-spacing-top-to-label, var(--spectrum-switch-spacing-top-to-label)); + margin-block-end: 0; + font-size: var(--mod-switch-font-size, var(--spectrum-switch-font-size)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + transition: color var(--mod-animation-duration-200, var(--spectrum-animation-duration-200)) ease-in-out; +} +.spectrum-Switch-switch { + display: inline-block; + box-sizing: border-box; + position: relative; + inline-size: var(--mod-switch-control-width, var(--spectrum-switch-control-width)); + margin-block: calc(var(--mod-switch-height, var(--spectrum-switch-min-height)) - var(--mod-switch-control-height, var(--spectrum-switch-control-height)) - var(--mod-switch-spacing-top-to-control, var(--spectrum-switch-spacing-top-to-control))); + margin-inline: 0; + flex-grow: 0; + flex-shrink: 0; + vertical-align: middle; + transition: + background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + border var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + block-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + inset-inline-start: 0; + inset-inline-end: 0; + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); +} +.spectrum-Switch-switch:before { + box-sizing: border-box; + transition: + background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + border var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + transform var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + box-shadow var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + inline-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + block-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + border-width: var(--mod-border-width-200, var(--spectrum-border-width-200)); + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); + border-style: solid; +} +.spectrum-Switch-switch:after, +.spectrum-Switch-switch:before { + display: block; + position: absolute; + content: ""; + inset-block-start: 0; + inset-inline-start: 0; +} +.spectrum-Switch-switch:after { + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2 + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); + inset-inline-end: 0; + inset-block-end: 0; + margin: 0; + transition: + opacity var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + margin var(--spectrum-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out; +} +.spectrum-Switch .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color, var(--mod-switch-background-color, var(--spectrum-switch-background-color))); +} +.spectrum-Switch .spectrum-Switch-switch:before { + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color, var(--spectrum-switch-handle-background-color))); + border-color: var(--highcontrast-switch-handle-border-color-default, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color-default))); +} +.spectrum-Switch:active .spectrum-Switch-input + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-down, var(--mod-switch-handle-border-color-down, var(--spectrum-switch-handle-border-color-down))); +} +.spectrum-Switch:active .spectrum-Switch-input ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-down, var(--mod-switch-label-color-down, var(--spectrum-switch-label-color-down))); +} +.spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-down, var(--mod-switch-background-color-selected-down, var(--spectrum-switch-background-color-selected-down))); +} +.spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-down, var(--mod-switch-handle-border-color-selected-down, var(--spectrum-switch-handle-border-color-selected-down))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + box-shadow: 0 0 0 var(--mod-switch-focus-indicator-thickness, var(--spectrum-switch-focus-indicator-thickness)) var(--highcontrast-switch-focus-indicator-color, var(--mod-switch-focus-indicator-color, var(--spectrum-switch-focus-indicator-color))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-focus, var(--mod-switch-label-color-focus, var(--spectrum-switch-label-color-focus))); +} +@media (hover: hover) { + .spectrum-Switch:hover .spectrum-Switch-input + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-hover, var(--mod-switch-handle-border-color-hover, var(--spectrum-switch-handle-border-color-hover))); + box-shadow: none; + } + .spectrum-Switch:hover .spectrum-Switch-input ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-hover, var(--mod-switch-label-color-hover, var(--spectrum-switch-label-color-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-hover, var(--mod-switch-background-color-selected-hover, var(--spectrum-switch-background-color-selected-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-hover, var(--mod-switch-handle-border-color-selected-hover, var(--spectrum-switch-handle-border-color-selected-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-disabled, var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled ~ .spectrum-Switch-label, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-disabled, var(--mod-switch-background-color-selected-disabled, var(--spectrum-switch-background-color-selected-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked ~ .spectrum-Switch-label, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + box-shadow: 0 0 0 var(--mod-switch-focus-indicator-thickness, var(--spectrum-switch-focus-indicator-thickness)) var(--highcontrast-switch-focus-indicator-color, var(--mod-switch-focus-indicator-color, var(--spectrum-switch-focus-indicator-color))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-focus, var(--mod-switch-label-color-focus, var(--spectrum-switch-label-color-focus))); + } +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-default, var(--mod-switch-background-color-selected-default, var(--spectrum-switch-background-color-selected-default))); +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-default, var(--mod-switch-handle-border-color-selected-default, var(--spectrum-switch-handle-border-color-selected-default))); +} +.spectrum-Switch-input:disabled + .spectrum-Switch-switch, +.spectrum-Switch-input[disabled] + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-disabled, var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled))); +} +.spectrum-Switch-input:disabled + .spectrum-Switch-switch:before, +.spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); +} +.spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, +.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-disabled, var(--mod-switch-background-color-selected-disabled, var(--spectrum-switch-background-color-selected-disabled))); +} +.spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, +.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); +} +.spectrum-Switch-input:disabled ~ .spectrum-Switch-label, +.spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Switch { + forced-color-adjust: none; + --highcontrast-switch-label-color-default: ButtonText; + --highcontrast-switch-label-color-hover: ButtonText; + --highcontrast-switch-label-color-down: ButtonText; + --highcontrast-switch-label-color-focus: ButtonText; + --highcontrast-switch-label-color-disabled: GrayText; + --highcontrast-switch-handle-background-color: ButtonFace; + --highcontrast-switch-handle-border-color-default: ButtonText; + --highcontrast-switch-handle-border-color-hover: Highlight; + --highcontrast-switch-handle-border-color-down: Highlight; + --highcontrast-switch-handle-border-color-focus: Highlight; + --highcontrast-switch-handle-border-color-disabled: Highlight; + --highcontrast-switch-handle-border-color-selected-default: Highlight; + --highcontrast-switch-handle-border-color-selected-hover: Highlight; + --highcontrast-switch-handle-border-color-selected-down: Highlight; + --highcontrast-switch-handle-border-color-selected-focus: Highlight; + --highcontrast-switch-background-color: ButtonFace; + --highcontrast-switch-background-color-selected-default: Highlight; + --highcontrast-switch-background-color-selected-hover: Highlight; + --highcontrast-switch-background-color-selected-down: Highlight; + --highcontrast-switch-background-color-selected-focus: Highlight; + --highcontrast-switch-background-color-selected-disabled: Highlight; + --highcontrast-switch-focus-indicator-color: ButtonText; + } + .spectrum-Switch .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px ButtonText; + } + @media (hover: hover) { + .spectrum-Switch:hover .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px Highlight; + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: GrayText; + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + } + .spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch, + .spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch:before, + .spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: GrayText; + } + .spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled ~ .spectrum-Switch-label, + .spectrum-Switch .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: GrayText; + } +} +.spectrum-Switch { + --spectrum-switch-handle-border-color-default: var(--system-spectrum-switch-handle-border-color-default); + --spectrum-switch-handle-border-color-hover: var(--system-spectrum-switch-handle-border-color-hover); + --spectrum-switch-handle-border-color-down: var(--system-spectrum-switch-handle-border-color-down); + --spectrum-switch-handle-border-color-focus: var(--system-spectrum-switch-handle-border-color-focus); + --spectrum-switch-handle-border-color-selected-default: var(--system-spectrum-switch-handle-border-color-selected-default); + --spectrum-switch-handle-border-color-selected-hover: var(--system-spectrum-switch-handle-border-color-selected-hover); + --spectrum-switch-handle-border-color-selected-down: var(--system-spectrum-switch-handle-border-color-selected-down); + --spectrum-switch-handle-border-color-selected-focus: var(--system-spectrum-switch-handle-border-color-selected-focus); +} +/*# sourceMappingURL=components/switch/index.css.map */ diff --git a/components/switch/index.css b/components/switch/index.css new file mode 100644 index 0000000000..d5872c5124 --- /dev/null +++ b/components/switch/index.css @@ -0,0 +1,386 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-600); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-800); +} +.spectrum--express { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-900); +} +.spectrum-Switch { + --spectrum-switch-label-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-switch-label-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-switch-label-color-down: var(--spectrum-neutral-content-color-down); + --spectrum-switch-label-color-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-switch-label-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-switch-background-color: var(--spectrum-gray-300); + --spectrum-switch-background-color-disabled: var(--spectrum-gray-300); + --spectrum-switch-background-color-selected-disabled: var(--spectrum-disabled-content-color); + --spectrum-switch-background-color-selected-default: var(--spectrum-neutral-background-color-selected-default); + --spectrum-switch-background-color-selected-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-switch-background-color-selected-down: var(--spectrum-neutral-background-color-selected-down); + --spectrum-switch-background-color-selected-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-switch-focus-indicator-thickness: var(--mod-focus-indicator-thickness, var(--spectrum-focus-indicator-thickness)); + --spectrum-switch-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-switch-handle-background-color: var(--spectrum-gray-75); + --spectrum-switch-handle-border-color-disabled: var(--spectrum-disabled-content-color); +} +.spectrum-Switch--disabled { + --spectrum-switch-label-color-default: var(--spectrum-disabled-content-color); +} +.spectrum-Switch.spectrum-Switch--emphasized { + --spectrum-switch-background-color-selected-default: var(--spectrum-accent-color-900); + --spectrum-switch-background-color-selected-hover: var(--spectrum-accent-color-1000); + --spectrum-switch-background-color-selected-down: var(--spectrum-accent-color-1100); + --spectrum-switch-background-color-selected-focus: var(--spectrum-accent-color-1000); + --spectrum-switch-handle-border-color-selected-default: var(--spectrum-accent-color-900); + --spectrum-switch-handle-border-color-selected-hover: var(--spectrum-accent-color-1000); + --spectrum-switch-handle-border-color-selected-down: var(--spectrum-accent-color-1100); + --spectrum-switch-handle-border-color-selected-focus: var(--spectrum-accent-color-1000); +} +.spectrum-Switch--sizeS { + --spectrum-switch-min-height: var(--spectrum-component-height-75); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-small); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-small); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-75); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-small); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-75); + --spectrum-switch-font-size: var(--spectrum-font-size-75); +} +.spectrum-Switch--sizeM { + --spectrum-switch-min-height: var(--spectrum-component-height-100); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-medium); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-medium); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-100); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-medium); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-100); + --spectrum-switch-font-size: var(--spectrum-font-size-100); +} +.spectrum-Switch--sizeL { + --spectrum-switch-min-height: var(--spectrum-component-height-200); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-large); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-large); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-200); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-large); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-200); + --spectrum-switch-font-size: var(--spectrum-font-size-200); +} +.spectrum-Switch--sizeXL { + --spectrum-switch-min-height: var(--spectrum-component-height-300); + --spectrum-switch-control-width: var(--spectrum-switch-control-width-extra-large); + --spectrum-switch-control-height: var(--spectrum-switch-control-height-extra-large); + --spectrum-switch-control-label-spacing: var(--spectrum-text-to-control-300); + --spectrum-switch-spacing-top-to-control: var(--spectrum-switch-top-to-control-extra-large); + --spectrum-switch-spacing-top-to-label: var(--spectrum-component-top-to-text-300); + --spectrum-switch-font-size: var(--spectrum-font-size-300); +} +.spectrum-Switch { + display: inline-flex; + align-items: flex-start; + position: relative; + min-block-size: var(--mod-switch-height, var(--spectrum-switch-min-height)); + max-inline-size: 100%; + vertical-align: top; +} +.spectrum-Switch-input { + margin: 0; + box-sizing: border-box; + padding: 0; + position: absolute; + inline-size: 100%; + block-size: 100%; + inset-block-start: 0; + inset-inline-start: 0; + opacity: 0; + z-index: 1; + cursor: pointer; +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + transform: translateX(calc(var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%)); +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:dir(rtl):before, +[dir="rtl"] .spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + transform: translateX(calc((var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%) * -1)); +} +.spectrum-Switch-input:disabled, +.spectrum-Switch-input[disabled] { + cursor: default; +} +.spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -1); +} +.spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-default, var(--mod-switch-label-color-default, var(--spectrum-switch-label-color-default))); + margin-inline: var(--mod-switch-control-label-spacing, var(--spectrum-switch-control-label-spacing)); + margin-block-start: var(--mod-switch-spacing-top-to-label, var(--spectrum-switch-spacing-top-to-label)); + margin-block-end: 0; + font-size: var(--mod-switch-font-size, var(--spectrum-switch-font-size)); + line-height: var(--mod-line-height-100, var(--spectrum-line-height-100)); + transition: color var(--mod-animation-duration-200, var(--spectrum-animation-duration-200)) ease-in-out; +} +.spectrum-Switch-switch { + display: inline-block; + box-sizing: border-box; + position: relative; + inline-size: var(--mod-switch-control-width, var(--spectrum-switch-control-width)); + margin-block: calc(var(--mod-switch-height, var(--spectrum-switch-min-height)) - var(--mod-switch-control-height, var(--spectrum-switch-control-height)) - var(--mod-switch-spacing-top-to-control, var(--spectrum-switch-spacing-top-to-control))); + margin-inline: 0; + flex-grow: 0; + flex-shrink: 0; + vertical-align: middle; + transition: + background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + border var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + block-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + inset-inline-start: 0; + inset-inline-end: 0; + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); +} +.spectrum-Switch-switch:before { + box-sizing: border-box; + transition: + background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + border var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + transform var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, + box-shadow var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out; + inline-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + block-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + border-width: var(--mod-border-width-200, var(--spectrum-border-width-200)); + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); + border-style: solid; +} +.spectrum-Switch-switch:after, +.spectrum-Switch-switch:before { + display: block; + position: absolute; + content: ""; + inset-block-start: 0; + inset-inline-start: 0; +} +.spectrum-Switch-switch:after { + border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2 + var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * 2); + inset-inline-end: 0; + inset-block-end: 0; + margin: 0; + transition: + opacity var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out, + margin var(--spectrum-animation-duration-100, var(--spectrum-animation-duration-100)) ease-out; +} +.spectrum-Switch .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color, var(--mod-switch-background-color, var(--spectrum-switch-background-color))); +} +.spectrum-Switch .spectrum-Switch-switch:before { + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color, var(--spectrum-switch-handle-background-color))); + border-color: var(--highcontrast-switch-handle-border-color-default, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color-default))); +} +.spectrum-Switch:active .spectrum-Switch-input + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-down, var(--mod-switch-handle-border-color-down, var(--spectrum-switch-handle-border-color-down))); +} +.spectrum-Switch:active .spectrum-Switch-input ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-down, var(--mod-switch-label-color-down, var(--spectrum-switch-label-color-down))); +} +.spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-down, var(--mod-switch-background-color-selected-down, var(--spectrum-switch-background-color-selected-down))); +} +.spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-down, var(--mod-switch-handle-border-color-selected-down, var(--spectrum-switch-handle-border-color-selected-down))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + box-shadow: 0 0 0 var(--mod-switch-focus-indicator-thickness, var(--spectrum-switch-focus-indicator-thickness)) var(--highcontrast-switch-focus-indicator-color, var(--mod-switch-focus-indicator-color, var(--spectrum-switch-focus-indicator-color))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); +} +.spectrum-Switch .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-focus, var(--mod-switch-label-color-focus, var(--spectrum-switch-label-color-focus))); +} +@media (hover: hover) { + .spectrum-Switch:hover .spectrum-Switch-input + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-hover, var(--mod-switch-handle-border-color-hover, var(--spectrum-switch-handle-border-color-hover))); + box-shadow: none; + } + .spectrum-Switch:hover .spectrum-Switch-input ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-hover, var(--mod-switch-label-color-hover, var(--spectrum-switch-label-color-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-hover, var(--mod-switch-background-color-selected-hover, var(--spectrum-switch-background-color-selected-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-hover, var(--mod-switch-handle-border-color-selected-hover, var(--spectrum-switch-handle-border-color-selected-hover))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-disabled, var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled ~ .spectrum-Switch-label, + .spectrum-Switch:hover .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-disabled, var(--mod-switch-background-color-selected-disabled, var(--spectrum-switch-background-color-selected-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked ~ .spectrum-Switch-label, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after { + box-shadow: 0 0 0 var(--mod-switch-focus-indicator-thickness, var(--spectrum-switch-focus-indicator-thickness)) var(--highcontrast-switch-focus-indicator-color, var(--mod-switch-focus-indicator-color, var(--spectrum-switch-focus-indicator-color))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); + } + .spectrum-Switch:hover .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-focus, var(--mod-switch-label-color-focus, var(--spectrum-switch-label-color-focus))); + } +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-default, var(--mod-switch-background-color-selected-default, var(--spectrum-switch-background-color-selected-default))); +} +.spectrum-Switch-input:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-selected-default, var(--mod-switch-handle-border-color-selected-default, var(--spectrum-switch-handle-border-color-selected-default))); +} +.spectrum-Switch-input:disabled + .spectrum-Switch-switch, +.spectrum-Switch-input[disabled] + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-disabled, var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled))); +} +.spectrum-Switch-input:disabled + .spectrum-Switch-switch:before, +.spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); +} +.spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, +.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + background-color: var(--highcontrast-switch-background-color-selected-disabled, var(--mod-switch-background-color-selected-disabled, var(--spectrum-switch-background-color-selected-disabled))); +} +.spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, +.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); +} +.spectrum-Switch-input:disabled ~ .spectrum-Switch-label, +.spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: var(--highcontrast-switch-label-color-disabled, var(--mod-switch-label-color-disabled, var(--spectrum-switch-label-color-disabled))); +} +@media (forced-colors: active) { + .spectrum-Switch { + forced-color-adjust: none; + --highcontrast-switch-label-color-default: ButtonText; + --highcontrast-switch-label-color-hover: ButtonText; + --highcontrast-switch-label-color-down: ButtonText; + --highcontrast-switch-label-color-focus: ButtonText; + --highcontrast-switch-label-color-disabled: GrayText; + --highcontrast-switch-handle-background-color: ButtonFace; + --highcontrast-switch-handle-border-color-default: ButtonText; + --highcontrast-switch-handle-border-color-hover: Highlight; + --highcontrast-switch-handle-border-color-down: Highlight; + --highcontrast-switch-handle-border-color-focus: Highlight; + --highcontrast-switch-handle-border-color-disabled: Highlight; + --highcontrast-switch-handle-border-color-selected-default: Highlight; + --highcontrast-switch-handle-border-color-selected-hover: Highlight; + --highcontrast-switch-handle-border-color-selected-down: Highlight; + --highcontrast-switch-handle-border-color-selected-focus: Highlight; + --highcontrast-switch-background-color: ButtonFace; + --highcontrast-switch-background-color-selected-default: Highlight; + --highcontrast-switch-background-color-selected-hover: Highlight; + --highcontrast-switch-background-color-selected-down: Highlight; + --highcontrast-switch-background-color-selected-focus: Highlight; + --highcontrast-switch-background-color-selected-disabled: Highlight; + --highcontrast-switch-focus-indicator-color: ButtonText; + } + .spectrum-Switch .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px ButtonText; + } + @media (hover: hover) { + .spectrum-Switch:hover .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px Highlight; + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: GrayText; + } + .spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + } + .spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch, + .spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch:before, + .spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch, + .spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch { + box-shadow: inset 0 0 0 1px GrayText; + background-color: GrayText; + } + .spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before, + .spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before { + border-color: GrayText; + background-color: ButtonFace; + } + .spectrum-Switch .spectrum-Switch-input:disabled ~ .spectrum-Switch-label, + .spectrum-Switch .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label { + color: GrayText; + } +} +.spectrum-Switch { + --spectrum-switch-handle-border-color-default: var(--system-spectrum-switch-handle-border-color-default); + --spectrum-switch-handle-border-color-hover: var(--system-spectrum-switch-handle-border-color-hover); + --spectrum-switch-handle-border-color-down: var(--system-spectrum-switch-handle-border-color-down); + --spectrum-switch-handle-border-color-focus: var(--system-spectrum-switch-handle-border-color-focus); + --spectrum-switch-handle-border-color-selected-default: var(--system-spectrum-switch-handle-border-color-selected-default); + --spectrum-switch-handle-border-color-selected-hover: var(--system-spectrum-switch-handle-border-color-selected-hover); + --spectrum-switch-handle-border-color-selected-down: var(--system-spectrum-switch-handle-border-color-selected-down); + --spectrum-switch-handle-border-color-selected-focus: var(--system-spectrum-switch-handle-border-color-selected-focus); +} +/*# sourceMappingURL=components/switch/index.css.map */ diff --git a/components/switch/metadata.json b/components/switch/metadata.json new file mode 100644 index 0000000000..b22f1ff2da --- /dev/null +++ b/components/switch/metadata.json @@ -0,0 +1,224 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Switch", + ".spectrum-Switch .spectrum-Switch-input:disabled ~ .spectrum-Switch-label,\n\t.spectrum-Switch .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label", + ".spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch,\n\t.spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch", + ".spectrum-Switch .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before,\n\t.spectrum-Switch .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch,\n\t.spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch", + ".spectrum-Switch .spectrum-Switch-input:disabled:not(:checked) + .spectrum-Switch-switch:before,\n\t.spectrum-Switch .spectrum-Switch-input[disabled]:not(:checked) + .spectrum-Switch-switch:before", + ".spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after", + ".spectrum-Switch .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before", + ".spectrum-Switch .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label", + ".spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch", + ".spectrum-Switch .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch", + ".spectrum-Switch .spectrum-Switch-switch", + ".spectrum-Switch .spectrum-Switch-switch:before", + ".spectrum-Switch--disabled", + ".spectrum-Switch--sizeL", + ".spectrum-Switch--sizeM", + ".spectrum-Switch--sizeS", + ".spectrum-Switch--sizeXL", + ".spectrum-Switch-input", + ".spectrum-Switch-input:checked + .spectrum-Switch-switch", + ".spectrum-Switch-input:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch-input:checked + .spectrum-Switch-switch:dir(rtl):before,\n[dir=\"rtl\"] .spectrum-Switch-input:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch-input:disabled + .spectrum-Switch-switch,\n.spectrum-Switch-input[disabled] + .spectrum-Switch-switch", + ".spectrum-Switch-input:disabled + .spectrum-Switch-switch:before,\n.spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before", + ".spectrum-Switch-input:disabled ~ .spectrum-Switch-label,\n.spectrum-Switch-input[disabled] ~ .spectrum-Switch-label", + ".spectrum-Switch-input:disabled,\n.spectrum-Switch-input[disabled]", + ".spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch,\n.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch", + ".spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before,\n.spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after", + ".spectrum-Switch-label", + ".spectrum-Switch-switch", + ".spectrum-Switch-switch:after", + ".spectrum-Switch-switch:after,\n.spectrum-Switch-switch:before", + ".spectrum-Switch-switch:before", + ".spectrum-Switch.spectrum-Switch--emphasized", + ".spectrum-Switch:active .spectrum-Switch-input + .spectrum-Switch-switch:before", + ".spectrum-Switch:active .spectrum-Switch-input ~ .spectrum-Switch-label", + ".spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch", + ".spectrum-Switch:active .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input ~ .spectrum-Switch-label", + ".spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch", + ".spectrum-Switch:hover .spectrum-Switch-input:checked:enabled + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch,\n\t.spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled + .spectrum-Switch-switch:before,\n\t.spectrum-Switch:hover .spectrum-Switch-input[disabled] + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled ~ .spectrum-Switch-label,\n\t.spectrum-Switch:hover .spectrum-Switch-input[disabled] ~ .spectrum-Switch-label", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch,\n\t\t.spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch,\n\t.spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before,\n\t\t.spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled:checked + .spectrum-Switch-switch:before,\n\t.spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input:disabled:checked ~ .spectrum-Switch-label,\n\t.spectrum-Switch:hover .spectrum-Switch-input[disabled]:checked ~ .spectrum-Switch-label", + ".spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:after", + ".spectrum-Switch:hover .spectrum-Switch-input:focus-visible + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input:focus-visible ~ .spectrum-Switch-label", + ".spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch", + ".spectrum-Switch:hover .spectrum-Switch-input:focus-visible:checked + .spectrum-Switch-switch:before", + ".spectrum-Switch:hover .spectrum-Switch-input:not(:checked) + .spectrum-Switch-switch" + ], + "mods": [ + "--mod-animation-duration-100", + "--mod-animation-duration-200", + "--mod-border-width-200", + "--mod-focus-indicator-gap", + "--mod-focus-indicator-thickness", + "--mod-line-height-100", + "--mod-switch-background-color", + "--mod-switch-background-color-disabled", + "--mod-switch-background-color-selected-default", + "--mod-switch-background-color-selected-disabled", + "--mod-switch-background-color-selected-down", + "--mod-switch-background-color-selected-focus", + "--mod-switch-background-color-selected-hover", + "--mod-switch-control-height", + "--mod-switch-control-label-spacing", + "--mod-switch-control-width", + "--mod-switch-focus-indicator-color", + "--mod-switch-focus-indicator-thickness", + "--mod-switch-font-size", + "--mod-switch-handle-background-color", + "--mod-switch-handle-border-color-default", + "--mod-switch-handle-border-color-disabled", + "--mod-switch-handle-border-color-down", + "--mod-switch-handle-border-color-focus", + "--mod-switch-handle-border-color-hover", + "--mod-switch-handle-border-color-selected-default", + "--mod-switch-handle-border-color-selected-down", + "--mod-switch-handle-border-color-selected-focus", + "--mod-switch-handle-border-color-selected-hover", + "--mod-switch-height", + "--mod-switch-label-color-default", + "--mod-switch-label-color-disabled", + "--mod-switch-label-color-down", + "--mod-switch-label-color-focus", + "--mod-switch-label-color-hover", + "--mod-switch-spacing-top-to-control", + "--mod-switch-spacing-top-to-label" + ], + "spectrum": [ + "--spectrum-accent-color-1000", + "--spectrum-accent-color-1100", + "--spectrum-accent-color-900", + "--spectrum-animation-duration-100", + "--spectrum-animation-duration-200", + "--spectrum-border-width-200", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-300", + "--spectrum-gray-600", + "--spectrum-gray-700", + "--spectrum-gray-75", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-line-height-100", + "--spectrum-neutral-background-color-selected-default", + "--spectrum-neutral-background-color-selected-down", + "--spectrum-neutral-background-color-selected-hover", + "--spectrum-neutral-background-color-selected-key-focus", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-switch-background-color", + "--spectrum-switch-background-color-disabled", + "--spectrum-switch-background-color-selected-default", + "--spectrum-switch-background-color-selected-disabled", + "--spectrum-switch-background-color-selected-down", + "--spectrum-switch-background-color-selected-focus", + "--spectrum-switch-background-color-selected-hover", + "--spectrum-switch-control-height", + "--spectrum-switch-control-height-extra-large", + "--spectrum-switch-control-height-large", + "--spectrum-switch-control-height-medium", + "--spectrum-switch-control-height-small", + "--spectrum-switch-control-label-spacing", + "--spectrum-switch-control-width", + "--spectrum-switch-control-width-extra-large", + "--spectrum-switch-control-width-large", + "--spectrum-switch-control-width-medium", + "--spectrum-switch-control-width-small", + "--spectrum-switch-focus-indicator-color", + "--spectrum-switch-focus-indicator-thickness", + "--spectrum-switch-font-size", + "--spectrum-switch-handle-background-color", + "--spectrum-switch-handle-border-color-default", + "--spectrum-switch-handle-border-color-disabled", + "--spectrum-switch-handle-border-color-down", + "--spectrum-switch-handle-border-color-focus", + "--spectrum-switch-handle-border-color-hover", + "--spectrum-switch-handle-border-color-selected-default", + "--spectrum-switch-handle-border-color-selected-down", + "--spectrum-switch-handle-border-color-selected-focus", + "--spectrum-switch-handle-border-color-selected-hover", + "--spectrum-switch-label-color-default", + "--spectrum-switch-label-color-disabled", + "--spectrum-switch-label-color-down", + "--spectrum-switch-label-color-focus", + "--spectrum-switch-label-color-hover", + "--spectrum-switch-min-height", + "--spectrum-switch-spacing-top-to-control", + "--spectrum-switch-spacing-top-to-label", + "--spectrum-switch-top-to-control-extra-large", + "--spectrum-switch-top-to-control-large", + "--spectrum-switch-top-to-control-medium", + "--spectrum-switch-top-to-control-small", + "--spectrum-text-to-control-100", + "--spectrum-text-to-control-200", + "--spectrum-text-to-control-300", + "--spectrum-text-to-control-75" + ], + "system": [ + "--system-spectrum-switch-handle-border-color-default", + "--system-spectrum-switch-handle-border-color-down", + "--system-spectrum-switch-handle-border-color-focus", + "--system-spectrum-switch-handle-border-color-hover", + "--system-spectrum-switch-handle-border-color-selected-default", + "--system-spectrum-switch-handle-border-color-selected-down", + "--system-spectrum-switch-handle-border-color-selected-focus", + "--system-spectrum-switch-handle-border-color-selected-hover" + ], + "a11y": [ + "--highcontrast-switch-background-color", + "--highcontrast-switch-background-color-disabled", + "--highcontrast-switch-background-color-selected-default", + "--highcontrast-switch-background-color-selected-disabled", + "--highcontrast-switch-background-color-selected-down", + "--highcontrast-switch-background-color-selected-focus", + "--highcontrast-switch-background-color-selected-hover", + "--highcontrast-switch-focus-indicator-color", + "--highcontrast-switch-handle-background-color", + "--highcontrast-switch-handle-border-color-default", + "--highcontrast-switch-handle-border-color-disabled", + "--highcontrast-switch-handle-border-color-down", + "--highcontrast-switch-handle-border-color-focus", + "--highcontrast-switch-handle-border-color-hover", + "--highcontrast-switch-handle-border-color-selected-default", + "--highcontrast-switch-handle-border-color-selected-down", + "--highcontrast-switch-handle-border-color-selected-focus", + "--highcontrast-switch-handle-border-color-selected-hover", + "--highcontrast-switch-label-color-default", + "--highcontrast-switch-label-color-disabled", + "--highcontrast-switch-label-color-down", + "--highcontrast-switch-label-color-focus", + "--highcontrast-switch-label-color-hover" + ] +} diff --git a/components/switch/package.json b/components/switch/package.json new file mode 100644 index 0000000000..d729c1466b --- /dev/null +++ b/components/switch/package.json @@ -0,0 +1,39 @@ +{ + "name": "@spectrum-css/switch", + "version": "5.1.1", + "description": "The Spectrum CSS switch component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/switch", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/switch" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/switch/template.js b/components/switch/template.js new file mode 100644 index 0000000000..add5c58a5a --- /dev/null +++ b/components/switch/template.js @@ -0,0 +1,51 @@ +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Switch", + size = "m", + label = "Switch label", + isDisabled, + isChecked, + isEmphasized, + customClasses = [], + customStyles = {}, + id, +}) => { + // ID attribute value for the input element. + const inputId = id ? `${id}-input` : "switch-onoff-0"; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + style=${styleMap(customStyles)} + > + + + ${when(label, () => html` + + `)} +
    + `; +}; diff --git a/components/switch/themes/express.css b/components/switch/themes/express.css new file mode 100644 index 0000000000..27b7733c07 --- /dev/null +++ b/components/switch/themes/express.css @@ -0,0 +1,24 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-900); +} +/*# sourceMappingURL=components/switch/themes/express.css.map */ diff --git a/components/switch/themes/spectrum.css b/components/switch/themes/spectrum.css new file mode 100644 index 0000000000..0bdff6655a --- /dev/null +++ b/components/switch/themes/spectrum.css @@ -0,0 +1,24 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-switch-handle-border-color-default: var(--spectrum-gray-600); + --system-spectrum-switch-handle-border-color-hover: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-down: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-focus: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-default: var(--spectrum-gray-700); + --system-spectrum-switch-handle-border-color-selected-hover: var(--spectrum-gray-800); + --system-spectrum-switch-handle-border-color-selected-down: var(--spectrum-gray-900); + --system-spectrum-switch-handle-border-color-selected-focus: var(--spectrum-gray-800); +} +/*# sourceMappingURL=components/switch/themes/spectrum.css.map */ diff --git a/components/table/index-base.css b/components/table/index-base.css new file mode 100644 index 0000000000..d1c2a42533 --- /dev/null +++ b/components/table/index-base.css @@ -0,0 +1,698 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Table { + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-medium); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-medium); + --spectrum-table-min-header-height: var(--spectrum-component-height-100); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-medium-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-medium-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-medium-regular); + --spectrum-table-cell-inline-space: var(--spectrum-table-edge-to-content); + --spectrum-table-border-radius: var(--spectrum-corner-radius-100); + --spectrum-table-border-width: var(--spectrum-table-border-divider-width); + --spectrum-table-outer-border-inline-width: var(--spectrum-table-border-divider-width); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-default-vertical-align: top; + --spectrum-table-header-vertical-align: middle; + --spectrum-table-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-row-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-table-row-font-weight: var(--spectrum-regular-font-weight); + --spectrum-table-row-font-style: var(--spectrum-default-font-style); + --spectrum-table-row-font-size: var(--spectrum-font-size-100); + --spectrum-table-row-line-height: var(--spectrum-line-height-100); + --spectrum-table-border-color: var(--spectrum-gray-300); + --spectrum-table-divider-color: var(--spectrum-gray-300); + --spectrum-table-header-background-color: var(--spectrum-transparent-white-100); + --spectrum-table-header-text-color: var(--spectrum-body-color); + --spectrum-table-row-background-color: var(--spectrum-gray-50); + --spectrum-table-row-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-table-selected-row-background-color: rgba(var(--spectrum-blue-900-rgb), var(--spectrum-table-selected-row-background-opacity)); + --spectrum-table-selected-row-background-color-non-emphasized: rgba(var(--spectrum-gray-700-rgb), var(--spectrum-table-selected-row-background-opacity-non-emphasized)); + --spectrum-table-row-background-color-hover: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-table-row-hover-opacity)); + --spectrum-table-row-active-color: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-table-row-down-opacity)); + --spectrum-table-selected-row-background-color-focus: rgba(var(--spectrum-blue-900-rgb), var(--spectrum-table-selected-row-background-opacity-hover)); + --spectrum-table-selected-row-background-color-non-emphasized-focus: rgba(var(--spectrum-gray-700-rgb), var(--spectrum-table-selected-row-background-opacity-non-emphasized-hover)); + --spectrum-table-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-table-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-table-icon-color-active: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-table-icon-color-focus: var(--spectrum-neutral-subdued-content-color-focus); + --spectrum-table-icon-color-focus-hover: var(--spectrum-neutral-subdued-content-focus-hover); + --spectrum-table-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-medium); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-medium-regular); + --spectrum-table-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-table-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-table-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color-rgb), var(--spectrum-drop-zone-background-color-opacity)); + --spectrum-table-drop-zone-outline-color: var(--spectrum-accent-visual-color); + --spectrum-table-transition-duration: var(--spectrum-animation-duration-100); + --spectrum-table-summary-row-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-summary-row-background-color: var(--spectrum-gray-200); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-medium); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-100); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-100); + --spectrum-table-section-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-section-header-background-color: var(--spectrum-gray-200); + --spectrum-table-collapsible-tier-indent: var(--spectrum-spacing-300); + --spectrum-table-collapsible-disclosure-inline-spacing: 0px; + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-100); + --spectrum-table-collapsible-icon-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-medium-regular); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-300); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color, var(--mod-table-row-background-color, var(--spectrum-table-row-background-color))); + --spectrum-table-selected-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-selected-row-background-color-non-emphasized, var(--spectrum-table-selected-row-background-color-non-emphasized))); + --spectrum-table-selected-cell-background-color-focus: var(--highcontrast-table-selected-row-background-color-focus, var(--mod-table-selected-row-background-color-non-emphasized-focus, var(--spectrum-table-selected-row-background-color-non-emphasized-focus))); + --mod-thumbnail-size: var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size)); +} +.spectrum-Table:dir(rtl), +[dir="rtl"] .spectrum-Table { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Table--sizeS { + --spectrum-table-min-header-height: var(--spectrum-component-height-100); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-small); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-small); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-small-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-small-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-small-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-row-font-size: var(--spectrum-font-size-75); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-small); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-small-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-small); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-75); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-75); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-75); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-small-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-200); +} +.spectrum-Table--sizeL { + --spectrum-table-min-header-height: var(--spectrum-component-height-200); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-large); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-large); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-large-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-large-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-large-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-200); + --spectrum-table-row-font-size: var(--spectrum-font-size-200); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-large); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-large-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-large); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-200); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-200); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-200); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-large-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-200); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-500); +} +.spectrum-Table--sizeXL { + --spectrum-table-min-header-height: var(--spectrum-component-height-300); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-extra-large); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-extra-large); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-extra-large-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-extra-large-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-extra-large-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-table-row-font-size: var(--spectrum-font-size-300); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-extra-large); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-extra-large-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-extra-large); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-300); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-300); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-300); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-extra-large-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-300); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-700); +} +.spectrum-Table--compact { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-medium-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-medium-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-medium-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-medium-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-medium-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-200)); +} +.spectrum-Table--compact.spectrum-Table--sizeS { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-small-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-small-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-small-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-small-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-small-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-50)); +} +.spectrum-Table--compact.spectrum-Table--sizeL { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-large-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-large-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-large-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-large-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-large-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-300)); +} +.spectrum-Table--compact.spectrum-Table--sizeXL { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-extra-large-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-extra-large-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-extra-large-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-extra-large-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-extra-large-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-500)); +} +.spectrum-Table--spacious { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-medium-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-medium-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-medium-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-medium-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-medium-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-500)); +} +.spectrum-Table--spacious.spectrum-Table--sizeS { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-small-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-small-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-small-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-small-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-small-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-300)); +} +.spectrum-Table--spacious.spectrum-Table--sizeL { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-large-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-large-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-large-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-large-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-large-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-700)); +} +.spectrum-Table--spacious.spectrum-Table--sizeXL { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-extra-large-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-extra-large-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-extra-large-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-extra-large-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-extra-large-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-800)); +} +.spectrum-Table--emphasized { + --spectrum-table-selected-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-selected-row-background-color, var(--spectrum-table-selected-row-background-color))); + --spectrum-table-selected-cell-background-color-focus: var(--highcontrast-table-selected-row-background-color-focus, var(--mod-table-selected-row-background-color-focus, var(--spectrum-table-selected-row-background-color-focus))); +} +.spectrum-Table--quiet { + --mod-table-border-radius: var(--mod-table-border-radius--quiet, 0px); + --mod-table-outer-border-inline-width: var(--mod-table-outer-border-inline-width--quiet, 0px); + --mod-table-header-background-color: var(--mod-table-header-background-color--quiet, var(--spectrum-transparent-white-100)); + --mod-table-row-background-color: var(--mod-table-row-background-color--quiet, var(--spectrum-transparent-white-100)); +} +@media (forced-colors: active) { + .spectrum-Table { + --highcontrast-table-row-background-color: Canvas; + --highcontrast-table-row-text-color: CanvasText; + --highcontrast-table-divider-color: CanvasText; + --highcontrast-table-border-color: CanvasText; + --highcontrast-table-icon-color: CanvasText; + --highcontrast-table-icon-color-focus: Highlight; + --highcontrast-table-selected-row-background-color: Highlight; + --highcontrast-table-selected-row-text-color: HighlightText; + --highcontrast-table-selected-row-text-color-default: HighlightText; + --highcontrast-table-selected-row-background-color-focus: Highlight; + --highcontrast-table-selected-row-text-color-focus: HighlightText; + --highcontrast-table-row-background-color-hover: Highlight; + --highcontrast-table-row-text-color-hover: HighlightText; + --highcontrast-table-section-header-text-color: Canvas; + --highcontrast-table-section-header-background-color: CanvasText; + --highcontrast-table-focus-indicator-color: Highlight; + --highcontrast-table-transition-duration: 0; + } + @supports (color: SelectedItem) { + .spectrum-Table { + --highcontrast-table-selected-row-background-color: SelectedItem; + --highcontrast-table-selected-row-text-color: SelectedItemText; + --highcontrast-table-selected-row-text-color-default: SelectedItemText; + } + } + .spectrum-Table-cell { + forced-color-adjust: none; + } + .spectrum-Table-row.is-focused .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row:focus-visible .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-row-text-color-hover) 1px solid; + } + @media (hover: hover) { + .spectrum-Table-row:hover .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-row-text-color-hover) 1px solid; + } + } + .spectrum-Table-body.is-drop-target .spectrum-Table-row, + .spectrum-Table-row.is-drop-target, + .spectrum-Table-row.is-selected { + --highcontrast-table-cell-focus-indicator-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-cell-focus-extra-offset: 1px; + } + .spectrum-Table-body.is-drop-target .spectrum-Table-row .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row.is-drop-target .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row.is-selected .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-selected-row-text-color) 1px solid; + } +} +.spectrum-Table-main, +.spectrum-Table:not(.spectrum-Table-scroller) { + border-collapse: initial; + border-spacing: 0; +} +.spectrum-Table-sortedIcon { + display: none; + vertical-align: initial; + margin-inline-start: var(--mod-table-sort-icon-inline-start-spacing, 0); + margin-inline-end: var(--mod-table-sort-icon-inline-end-spacing, var(--mod-table-icon-to-text, var(--spectrum-table-icon-to-text))); + transition: transform var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; +} +.spectrum-Table-menuIcon { + vertical-align: middle; + margin-inline-start: var(--mod-table-icon-to-text, var(--spectrum-table-icon-to-text)); +} +.spectrum-Table-headCell { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-default, var(--spectrum-table-icon-color-default))); + box-sizing: border-box; + text-align: start; + vertical-align: var(--mod-table-header-vertical-align, var(--spectrum-table-header-vertical-align)); + font-family: var(--mod-table-header-font-family, var(--spectrum-table-row-font-family)); + font-size: var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)); + font-weight: var(--mod-table-header-font-weight, var(--spectrum-table-header-font-weight)); + line-height: var(--mod-table-header-line-height, var(--spectrum-table-row-line-height)); + text-transform: var(--mod-table-header-text-transform, none); + block-size: var(--mod-table-min-header-height, var(--spectrum-table-min-header-height)); + padding-block: var(--mod-table-header-top-to-text, var(--spectrum-table-header-top-to-text)) var(--mod-table-header-bottom-to-text, var(--spectrum-table-header-bottom-to-text)); + padding-inline: var(--mod-table-cell-inline-space, var(--spectrum-table-cell-inline-space)); + color: var(--mod-table-header-text-color, var(--spectrum-table-header-text-color)); + background-color: var(--mod-table-header-background-color, var(--spectrum-table-header-background-color)); + border-radius: 0; + transition: color var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; + cursor: var(--mod-table-cursor-header-default, initial); + outline: 0; +} +.spectrum-Table-headCell .spectrum-Table-menuIcon, +.spectrum-Table-headCell .spectrum-Table-sortedIcon { + color: var(--spectrum-table-icon-color); +} +.spectrum-Table-headCell.is-sortable { + cursor: var(--mod-table-cursor-header-sortable, pointer); +} +.spectrum-Table-headCell.is-sortable:active { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-active, var(--spectrum-table-icon-color-active))); +} +.spectrum-Table-headCell.is-sortable:focus { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-focus, var(--spectrum-table-icon-color-focus))); +} +.spectrum-Table-headCell.is-sortable.is-keyboardFocused, +.spectrum-Table-headCell.is-sortable:focus-visible { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-key-focus, var(--spectrum-table-icon-color-key-focus))); +} +.spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon, +.spectrum-Table-headCell.is-sorted-desc .spectrum-Table-sortedIcon { + display: inline-block; +} +.spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon { + transform: rotate(-90deg); +} +.spectrum-Table-columnTitle { + display: inline-block; +} +.spectrum-Table-cell--alignCenter { + text-align: center; +} +.spectrum-Table-cell--alignRight { + text-align: end; +} +.spectrum-Table-body { + position: relative; + border: none; + border-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-body.is-drop-target { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); + --mod-table-border-color: transparent; +} +.spectrum-Table-cell { + border-block-start: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-divider-color, var(--mod-table-divider-color, var(--spectrum-table-divider-color))); +} +.spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell { + border-block-start: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell { + border-block-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child { + border-inline-start: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child { + border-inline-end: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-row:first-child .spectrum-Table-cell:first-child { + border-start-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:first-child .spectrum-Table-cell:last-child { + border-start-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child .spectrum-Table-cell:first-child { + border-end-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child .spectrum-Table-cell:last-child { + border-end-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-cell { + box-sizing: border-box; + font-size: var(--mod-table-row-font-size, var(--spectrum-table-row-font-size)); + font-weight: var(--mod-table-row-font-weight, var(--spectrum-table-row-font-weight)); + line-height: var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)); + vertical-align: var(--mod-table-default-vertical-align, var(--spectrum-table-default-vertical-align)); + color: var(--highcontrast-table-row-text-color, var(--mod-table-row-text-color, var(--spectrum-table-row-text-color))); + background-color: var(--spectrum-table-cell-background-color); + block-size: var(--mod-table-min-row-height, var(--spectrum-table-min-row-height)); + padding-block-start: calc(var(--mod-table-row-top-to-text, var(--spectrum-table-row-top-to-text)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: var(--mod-table-row-bottom-to-text, var(--spectrum-table-row-bottom-to-text)); + padding-inline: calc(var(--mod-table-edge-to-content, var(--spectrum-table-edge-to-content)) - var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width))); +} +.spectrum-Table-cell, +.spectrum-Table-headCell { + position: relative; +} +.spectrum-Table-cell.is-focused, +.spectrum-Table-cell:focus-visible, +.spectrum-Table-headCell.is-focused, +.spectrum-Table-headCell:focus-visible { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-cell-focus-indicator-color, var(--highcontrast-table-focus-indicator-color, var(--mod-table-focus-indicator-color, var(--spectrum-table-focus-indicator-color)))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1 - var(--highcontrast-table-cell-focus-extra-offset, 0px)); +} +.spectrum-Table-cell--divider { + border-inline-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-divider-color, var(--mod-table-divider-color, var(--spectrum-table-divider-color))); +} +.spectrum-Table-row { + position: relative; + transition: background-color var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; + cursor: var(--mod-table-cursor-row-default, pointer); + border-block-start: none; +} +.spectrum-Table-row:first-child { + border-start-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-start-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child { + border-end-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-end-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:focus { + outline: 0; +} +.spectrum-Table-row.is-focused, +.spectrum-Table-row:focus-visible { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-background-color-hover, var(--spectrum-table-row-background-color-hover))); +} +.spectrum-Table-row:active { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-active-color, var(--spectrum-table-row-active-color))); +} +.spectrum-Table-row.is-selected { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color); +} +.spectrum-Table-row.is-selected.is-focused, +.spectrum-Table-row.is-selected:focus-visible { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color-focus); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color-focus); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color-focus); +} +.spectrum-Table-body.is-drop-target .spectrum-Table-row, +.spectrum-Table-row.is-drop-target { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color); + --spectrum-table-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-drop-zone-background-color, var(--spectrum-table-drop-zone-background-color))); +} +.spectrum-Table-row.is-drop-target { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1); + --mod-table-border-color: var(--highcontrast-table-focus-indicator-color, transparent); +} +.spectrum-Table-row.is-drop-target .spectrum-Table-cell { + border-block-start-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); +} +.spectrum-Table-row--summary { + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color, var(--mod-table-summary-row-background-color, var(--spectrum-table-summary-row-background-color))); +} +.spectrum-Table-row--summary .spectrum-Table-cell { + font-weight: var(--mod-table-summary-row-font-weight, var(--spectrum-table-summary-row-font-weight)); + font-size: var(--mod-table-summary-row-font-size, var(--spectrum-table-row-font-size)); + font-family: var(--mod-table-summary-row-font-family, var(--spectrum-table-row-font-family)); + font-style: var(--mod-table-summary-row-font-style, var(--spectrum-table-row-font-style)); + line-height: var(--mod-table-summary-row-line-height, var(--spectrum-table-row-line-height)); + color: var(--highcontrast-table-row-text-color, var(--mod-table-summary-row-text-color, var(--spectrum-table-row-text-color))); +} +.spectrum-Table-row--sectionHeader { + --spectrum-table-cell-background-color: var(--highcontrast-table-section-header-background-color, var(--mod-table-section-header-background-color, var(--spectrum-table-section-header-background-color))); + cursor: var(--mod-table-cursor-section-header, initial); +} +.spectrum-Table-row--sectionHeader .spectrum-Table-cell { + font-weight: var(--mod-table-section-header-font-weight, var(--spectrum-table-section-header-font-weight)); + text-align: start; + block-size: var(--mod-table-section-header-min-height, var(--spectrum-table-section-header-min-height)); + padding-block-start: calc(var(--mod-table-section-header-block-start-spacing, var(--spectrum-table-section-header-block-start-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: calc(var(--mod-table-section-header-block-end-spacing, var(--spectrum-table-section-header-block-end-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + font-size: var(--mod-table-section-header-font-size, var(--spectrum-table-row-font-size)); + font-family: var(--mod-table-section-header-font-family, var(--spectrum-table-row-font-family)); + font-style: var(--mod-table-section-header-font-style, var(--spectrum-table-row-font-style)); + line-height: var(--mod-table-section-header-line-height, var(--spectrum-table-row-line-height)); + color: var(--highcontrast-table-section-header-text-color, var(--mod-table-section-header-text-color, var(--spectrum-table-row-text-color))); +} +.spectrum-Table-checkboxCell { + inline-size: var(--spectrum-checkbox-control-size-small); + padding-inline-end: calc(var(--mod-table-checkbox-to-text, var(--spectrum-table-checkbox-to-text)) - var(--mod-table-edge-to-content, var(--spectrum-table-edge-to-content))); + padding-block: 0; +} +.spectrum-Table-checkboxCell .spectrum-Table-checkbox { + --mod-checkbox-spacing: 0px; + min-block-size: 0; +} +.spectrum-Table-checkboxCell.spectrum-Table-cell .spectrum-Table-checkbox { + margin-block-start: calc(var(--mod-table-row-checkbox-block-spacing, var(--spectrum-table-row-checkbox-block-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + margin-block-end: var(--mod-table-row-checkbox-block-spacing, var(--spectrum-table-row-checkbox-block-spacing)); +} +.spectrum-Table-checkboxCell.spectrum-Table-headCell .spectrum-Table-checkbox { + margin-block-start: calc(var(--mod-table-header-checkbox-block-spacing, var(--spectrum-table-header-checkbox-block-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + margin-block-end: var(--mod-table-header-checkbox-block-spacing, var(--spectrum-table-header-checkbox-block-spacing)); +} +.spectrum-Table-main, +.spectrum-Table:not(.spectrum-Table-scroller) { + display: table; +} +.spectrum-Table-head { + display: table-header-group; +} +.spectrum-Table-body { + display: table-row-group; +} +.spectrum-Table-head [role="row"], +.spectrum-Table-row { + display: table-row; +} +.spectrum-Table-cell, +.spectrum-Table-headCell { + display: table-cell; +} +.spectrum-Table-scroller { + --spectrum-table-header-background-color: var(--mod-table-header-background-color-scrollable, var(--spectrum-background-layer-1-color, var(--spectrum-gray-100))); + box-sizing: border-box; + display: inline-block; + position: relative; + overflow: auto; + border-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-block: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); + border-inline: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); + scroll-padding-top: var(--mod-table-current-header-height, calc(var(--mod-table-header-line-height, var(--spectrum-table-row-line-height)) * var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)) + var(--mod-table-header-top-to-text, var(--spectrum-table-header-top-to-text)) + var(--mod-table-header-bottom-to-text, var(--spectrum-table-header-bottom-to-text)) + var(--mod-table-border-width, var(--spectrum-table-border-width)))); +} +.spectrum-Table-scroller.spectrum-Table--quiet { + --mod-table-header-background-color--quiet: var(--mod-table-header-background-color-scrollable, var(--spectrum-background-layer-1-color, var(--spectrum-gray-100))); + border-block-start: none; +} +.spectrum-Table-scroller .spectrum-Table-head { + position: sticky; + inset-block-start: 0; + z-index: 1; +} +.spectrum-Table-scroller .spectrum-Table-headCell { + border-block-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell { + border-block-start: none; + border-radius: 0; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell { + border-block-end: none; + border-radius: 0; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child { + border-inline-start: none; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child { + border-inline-end: none; +} +.spectrum-Table-row--collapsible { + --spectrum-table-row-tier: 0; +} +.spectrum-Table-row--collapsible[data-tier="1"] { + --spectrum-table-row-tier: 1; +} +.spectrum-Table-row--collapsible[data-tier="2"] { + --spectrum-table-row-tier: 2; +} +.spectrum-Table-row--collapsible[data-tier="3"] { + --spectrum-table-row-tier: 3; +} +.spectrum-Table-row--collapsible[data-tier="4"] { + --spectrum-table-row-tier: 4; +} +.spectrum-Table-row--collapsible[data-tier="5"] { + --spectrum-table-row-tier: 5; +} +.spectrum-Table-row--collapsible[data-tier="6"] { + --spectrum-table-row-tier: 6; +} +.spectrum-Table-row--collapsible .spectrum-Table-checkboxCell { + padding-inline-end: 0; +} +.spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-cell--collapsible { + padding-inline-start: calc(var(--spectrum-table-row-tier) * var(--spectrum-table-collapsible-tier-indent) + var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)) + var(--mod-table-collapsible-disclosure-inline-spacing, var(--spectrum-table-collapsible-disclosure-inline-spacing)) * 2); +} +.spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-disclosureIcon { + display: none; +} +.spectrum-Table-row--collapsible .spectrum-Table-disclosureIcon { + margin-inline: var(--mod-table-collapsible-disclosure-inline-spacing, var(--spectrum-table-collapsible-disclosure-inline-spacing)); + margin-block-start: max(0px, calc((var(--mod-table-min-row-height, var(--spectrum-table-min-row-height)) - var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size))) / 2)); +} +.spectrum-Table-row--collapsible[hidden] { + display: none; +} +.spectrum-Table-cell--collapsible { + padding-inline-start: calc(var(--spectrum-table-row-tier, 0px) * var(--spectrum-table-collapsible-tier-indent)); + padding-block: 0; +} +.spectrum-Table-collapseInner { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: flex-start; +} +.spectrum-Table-collapseInner .spectrum-Table-collapseContent { + padding-block-start: calc(var(--mod-table-row-top-to-text, var(--spectrum-table-row-top-to-text)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: var(--mod-table-row-bottom-to-text, var(--spectrum-table-row-bottom-to-text)); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-default, var(--spectrum-table-icon-color-default))); + block-size: var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)); + flex-basis: var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)); + flex-grow: 0; + flex-shrink: 0; + transition: transform ease var(--mod-table-collapsible-icon-animation-duration, var(--spectrum-table-collapsible-icon-animation-duration)); + border-radius: 0; + background: transparent; + border: 0; + color: var(--spectrum-table-icon-color); + transform: var(--spectrum-logical-rotation); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon[aria-expanded="true"] { + transform: var(--spectrum-logical-rotation,) rotate(90deg); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:after { + display: none; +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:active { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-active, var(--spectrum-table-icon-color-active))); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-focus, var(--spectrum-table-icon-color-focus))); +} +@media (hover: hover) { + .spectrum-Table-headCell.is-sortable:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-hover, var(--spectrum-table-icon-color-hover))); + } + .spectrum-Table-headCell.is-sortable:focus:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-focus-hover, var(--spectrum-table-icon-color-focus-hover))); + } + .spectrum-Table-row:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-background-color-hover, var(--spectrum-table-row-background-color-hover))); + } + .spectrum-Table-row.is-selected:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color-focus); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color-focus); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color-focus); + } + .spectrum-Table-row--sectionHeader:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-section-header-text-color); + --spectrum-table-cell-background-color: var(--highcontrast-table-section-header-background-color, var(--mod-table-section-header-background-color, var(--spectrum-table-section-header-background-color))); + } + .spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-hover, var(--spectrum-table-icon-color-hover))); + } + .spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-focus-hover, var(--spectrum-table-icon-color-focus-hover))); + } +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon.is-keyboardFocused, +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus-visible { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-key-focus, var(--spectrum-table-icon-color-key-focus))); + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-focus-indicator-color, var(--spectrum-table-focus-indicator-color))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1 - 2px); +} +.spectrum-Table-row--thumbnail { + --table-thumbnail-cell-block-spacing: var(--mod-table-thumbnail-block-spacing, var(--spectrum-table-thumbnail-block-spacing)); + --table-thumbnail-inner-content-block-spacing: max(0px, calc((var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size)) - (var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)) * var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)))) / 2)); +} +.spectrum-Table-row--thumbnail .spectrum-Table-cell { + padding-block: calc(var(--table-thumbnail-cell-block-spacing) + var(--table-thumbnail-inner-content-block-spacing)); +} +.spectrum-Table-row--thumbnail .spectrum-Table-cell--thumbnail { + padding-block: 0; +} +.spectrum-Table-row--thumbnail.spectrum-Table-row--collapsible { + --table-thumbnail-inner-minimum-block-spacing: max(0px, calc((var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)) - var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size))) / 2)); + --table-thumbnail-cell-block-spacing: max(var(--mod-table-thumbnail-block-spacing, var(--spectrum-table-thumbnail-block-spacing)), var(--table-thumbnail-inner-minimum-block-spacing)); +} +.spectrum-Table-thumbnailInner { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: flex-start; + padding-block: var(--table-thumbnail-cell-block-spacing); +} +.spectrum-Table-thumbnailInner .spectrum-Thumbnail { + flex-grow: 0; + flex-shrink: 0; + margin-inline-end: var(--mod-table-thumbnail-to-text, var(--spectrum-table-thumbnail-to-text)); + line-height: var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)); +} +.spectrum-Table-thumbnailInner .spectrum-Table-thumbnailContent { + padding-block: var(--table-thumbnail-inner-content-block-spacing); +} +/*# sourceMappingURL=components/table/index.css.map */ diff --git a/components/table/index-vars.css b/components/table/index-vars.css new file mode 100644 index 0000000000..d1c2a42533 --- /dev/null +++ b/components/table/index-vars.css @@ -0,0 +1,698 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Table { + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-medium); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-medium); + --spectrum-table-min-header-height: var(--spectrum-component-height-100); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-medium-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-medium-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-medium-regular); + --spectrum-table-cell-inline-space: var(--spectrum-table-edge-to-content); + --spectrum-table-border-radius: var(--spectrum-corner-radius-100); + --spectrum-table-border-width: var(--spectrum-table-border-divider-width); + --spectrum-table-outer-border-inline-width: var(--spectrum-table-border-divider-width); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-default-vertical-align: top; + --spectrum-table-header-vertical-align: middle; + --spectrum-table-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-row-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-table-row-font-weight: var(--spectrum-regular-font-weight); + --spectrum-table-row-font-style: var(--spectrum-default-font-style); + --spectrum-table-row-font-size: var(--spectrum-font-size-100); + --spectrum-table-row-line-height: var(--spectrum-line-height-100); + --spectrum-table-border-color: var(--spectrum-gray-300); + --spectrum-table-divider-color: var(--spectrum-gray-300); + --spectrum-table-header-background-color: var(--spectrum-transparent-white-100); + --spectrum-table-header-text-color: var(--spectrum-body-color); + --spectrum-table-row-background-color: var(--spectrum-gray-50); + --spectrum-table-row-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-table-selected-row-background-color: rgba(var(--spectrum-blue-900-rgb), var(--spectrum-table-selected-row-background-opacity)); + --spectrum-table-selected-row-background-color-non-emphasized: rgba(var(--spectrum-gray-700-rgb), var(--spectrum-table-selected-row-background-opacity-non-emphasized)); + --spectrum-table-row-background-color-hover: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-table-row-hover-opacity)); + --spectrum-table-row-active-color: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-table-row-down-opacity)); + --spectrum-table-selected-row-background-color-focus: rgba(var(--spectrum-blue-900-rgb), var(--spectrum-table-selected-row-background-opacity-hover)); + --spectrum-table-selected-row-background-color-non-emphasized-focus: rgba(var(--spectrum-gray-700-rgb), var(--spectrum-table-selected-row-background-opacity-non-emphasized-hover)); + --spectrum-table-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-table-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-table-icon-color-active: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-table-icon-color-focus: var(--spectrum-neutral-subdued-content-color-focus); + --spectrum-table-icon-color-focus-hover: var(--spectrum-neutral-subdued-content-focus-hover); + --spectrum-table-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-medium); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-medium-regular); + --spectrum-table-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-table-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-table-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color-rgb), var(--spectrum-drop-zone-background-color-opacity)); + --spectrum-table-drop-zone-outline-color: var(--spectrum-accent-visual-color); + --spectrum-table-transition-duration: var(--spectrum-animation-duration-100); + --spectrum-table-summary-row-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-summary-row-background-color: var(--spectrum-gray-200); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-medium); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-100); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-100); + --spectrum-table-section-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-section-header-background-color: var(--spectrum-gray-200); + --spectrum-table-collapsible-tier-indent: var(--spectrum-spacing-300); + --spectrum-table-collapsible-disclosure-inline-spacing: 0px; + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-100); + --spectrum-table-collapsible-icon-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-medium-regular); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-300); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color, var(--mod-table-row-background-color, var(--spectrum-table-row-background-color))); + --spectrum-table-selected-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-selected-row-background-color-non-emphasized, var(--spectrum-table-selected-row-background-color-non-emphasized))); + --spectrum-table-selected-cell-background-color-focus: var(--highcontrast-table-selected-row-background-color-focus, var(--mod-table-selected-row-background-color-non-emphasized-focus, var(--spectrum-table-selected-row-background-color-non-emphasized-focus))); + --mod-thumbnail-size: var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size)); +} +.spectrum-Table:dir(rtl), +[dir="rtl"] .spectrum-Table { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Table--sizeS { + --spectrum-table-min-header-height: var(--spectrum-component-height-100); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-small); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-small); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-small-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-small-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-small-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-row-font-size: var(--spectrum-font-size-75); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-small); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-small-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-small); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-75); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-75); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-75); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-small-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-200); +} +.spectrum-Table--sizeL { + --spectrum-table-min-header-height: var(--spectrum-component-height-200); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-large); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-large); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-large-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-large-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-large-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-200); + --spectrum-table-row-font-size: var(--spectrum-font-size-200); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-large); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-large-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-large); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-200); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-200); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-200); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-large-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-200); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-500); +} +.spectrum-Table--sizeXL { + --spectrum-table-min-header-height: var(--spectrum-component-height-300); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-extra-large); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-extra-large); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-extra-large-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-extra-large-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-extra-large-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-table-row-font-size: var(--spectrum-font-size-300); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-extra-large); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-extra-large-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-extra-large); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-300); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-300); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-300); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-extra-large-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-300); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-700); +} +.spectrum-Table--compact { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-medium-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-medium-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-medium-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-medium-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-medium-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-200)); +} +.spectrum-Table--compact.spectrum-Table--sizeS { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-small-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-small-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-small-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-small-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-small-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-50)); +} +.spectrum-Table--compact.spectrum-Table--sizeL { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-large-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-large-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-large-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-large-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-large-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-300)); +} +.spectrum-Table--compact.spectrum-Table--sizeXL { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-extra-large-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-extra-large-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-extra-large-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-extra-large-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-extra-large-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-500)); +} +.spectrum-Table--spacious { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-medium-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-medium-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-medium-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-medium-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-medium-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-500)); +} +.spectrum-Table--spacious.spectrum-Table--sizeS { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-small-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-small-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-small-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-small-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-small-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-300)); +} +.spectrum-Table--spacious.spectrum-Table--sizeL { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-large-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-large-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-large-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-large-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-large-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-700)); +} +.spectrum-Table--spacious.spectrum-Table--sizeXL { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-extra-large-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-extra-large-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-extra-large-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-extra-large-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-extra-large-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-800)); +} +.spectrum-Table--emphasized { + --spectrum-table-selected-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-selected-row-background-color, var(--spectrum-table-selected-row-background-color))); + --spectrum-table-selected-cell-background-color-focus: var(--highcontrast-table-selected-row-background-color-focus, var(--mod-table-selected-row-background-color-focus, var(--spectrum-table-selected-row-background-color-focus))); +} +.spectrum-Table--quiet { + --mod-table-border-radius: var(--mod-table-border-radius--quiet, 0px); + --mod-table-outer-border-inline-width: var(--mod-table-outer-border-inline-width--quiet, 0px); + --mod-table-header-background-color: var(--mod-table-header-background-color--quiet, var(--spectrum-transparent-white-100)); + --mod-table-row-background-color: var(--mod-table-row-background-color--quiet, var(--spectrum-transparent-white-100)); +} +@media (forced-colors: active) { + .spectrum-Table { + --highcontrast-table-row-background-color: Canvas; + --highcontrast-table-row-text-color: CanvasText; + --highcontrast-table-divider-color: CanvasText; + --highcontrast-table-border-color: CanvasText; + --highcontrast-table-icon-color: CanvasText; + --highcontrast-table-icon-color-focus: Highlight; + --highcontrast-table-selected-row-background-color: Highlight; + --highcontrast-table-selected-row-text-color: HighlightText; + --highcontrast-table-selected-row-text-color-default: HighlightText; + --highcontrast-table-selected-row-background-color-focus: Highlight; + --highcontrast-table-selected-row-text-color-focus: HighlightText; + --highcontrast-table-row-background-color-hover: Highlight; + --highcontrast-table-row-text-color-hover: HighlightText; + --highcontrast-table-section-header-text-color: Canvas; + --highcontrast-table-section-header-background-color: CanvasText; + --highcontrast-table-focus-indicator-color: Highlight; + --highcontrast-table-transition-duration: 0; + } + @supports (color: SelectedItem) { + .spectrum-Table { + --highcontrast-table-selected-row-background-color: SelectedItem; + --highcontrast-table-selected-row-text-color: SelectedItemText; + --highcontrast-table-selected-row-text-color-default: SelectedItemText; + } + } + .spectrum-Table-cell { + forced-color-adjust: none; + } + .spectrum-Table-row.is-focused .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row:focus-visible .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-row-text-color-hover) 1px solid; + } + @media (hover: hover) { + .spectrum-Table-row:hover .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-row-text-color-hover) 1px solid; + } + } + .spectrum-Table-body.is-drop-target .spectrum-Table-row, + .spectrum-Table-row.is-drop-target, + .spectrum-Table-row.is-selected { + --highcontrast-table-cell-focus-indicator-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-cell-focus-extra-offset: 1px; + } + .spectrum-Table-body.is-drop-target .spectrum-Table-row .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row.is-drop-target .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row.is-selected .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-selected-row-text-color) 1px solid; + } +} +.spectrum-Table-main, +.spectrum-Table:not(.spectrum-Table-scroller) { + border-collapse: initial; + border-spacing: 0; +} +.spectrum-Table-sortedIcon { + display: none; + vertical-align: initial; + margin-inline-start: var(--mod-table-sort-icon-inline-start-spacing, 0); + margin-inline-end: var(--mod-table-sort-icon-inline-end-spacing, var(--mod-table-icon-to-text, var(--spectrum-table-icon-to-text))); + transition: transform var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; +} +.spectrum-Table-menuIcon { + vertical-align: middle; + margin-inline-start: var(--mod-table-icon-to-text, var(--spectrum-table-icon-to-text)); +} +.spectrum-Table-headCell { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-default, var(--spectrum-table-icon-color-default))); + box-sizing: border-box; + text-align: start; + vertical-align: var(--mod-table-header-vertical-align, var(--spectrum-table-header-vertical-align)); + font-family: var(--mod-table-header-font-family, var(--spectrum-table-row-font-family)); + font-size: var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)); + font-weight: var(--mod-table-header-font-weight, var(--spectrum-table-header-font-weight)); + line-height: var(--mod-table-header-line-height, var(--spectrum-table-row-line-height)); + text-transform: var(--mod-table-header-text-transform, none); + block-size: var(--mod-table-min-header-height, var(--spectrum-table-min-header-height)); + padding-block: var(--mod-table-header-top-to-text, var(--spectrum-table-header-top-to-text)) var(--mod-table-header-bottom-to-text, var(--spectrum-table-header-bottom-to-text)); + padding-inline: var(--mod-table-cell-inline-space, var(--spectrum-table-cell-inline-space)); + color: var(--mod-table-header-text-color, var(--spectrum-table-header-text-color)); + background-color: var(--mod-table-header-background-color, var(--spectrum-table-header-background-color)); + border-radius: 0; + transition: color var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; + cursor: var(--mod-table-cursor-header-default, initial); + outline: 0; +} +.spectrum-Table-headCell .spectrum-Table-menuIcon, +.spectrum-Table-headCell .spectrum-Table-sortedIcon { + color: var(--spectrum-table-icon-color); +} +.spectrum-Table-headCell.is-sortable { + cursor: var(--mod-table-cursor-header-sortable, pointer); +} +.spectrum-Table-headCell.is-sortable:active { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-active, var(--spectrum-table-icon-color-active))); +} +.spectrum-Table-headCell.is-sortable:focus { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-focus, var(--spectrum-table-icon-color-focus))); +} +.spectrum-Table-headCell.is-sortable.is-keyboardFocused, +.spectrum-Table-headCell.is-sortable:focus-visible { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-key-focus, var(--spectrum-table-icon-color-key-focus))); +} +.spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon, +.spectrum-Table-headCell.is-sorted-desc .spectrum-Table-sortedIcon { + display: inline-block; +} +.spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon { + transform: rotate(-90deg); +} +.spectrum-Table-columnTitle { + display: inline-block; +} +.spectrum-Table-cell--alignCenter { + text-align: center; +} +.spectrum-Table-cell--alignRight { + text-align: end; +} +.spectrum-Table-body { + position: relative; + border: none; + border-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-body.is-drop-target { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); + --mod-table-border-color: transparent; +} +.spectrum-Table-cell { + border-block-start: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-divider-color, var(--mod-table-divider-color, var(--spectrum-table-divider-color))); +} +.spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell { + border-block-start: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell { + border-block-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child { + border-inline-start: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child { + border-inline-end: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-row:first-child .spectrum-Table-cell:first-child { + border-start-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:first-child .spectrum-Table-cell:last-child { + border-start-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child .spectrum-Table-cell:first-child { + border-end-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child .spectrum-Table-cell:last-child { + border-end-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-cell { + box-sizing: border-box; + font-size: var(--mod-table-row-font-size, var(--spectrum-table-row-font-size)); + font-weight: var(--mod-table-row-font-weight, var(--spectrum-table-row-font-weight)); + line-height: var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)); + vertical-align: var(--mod-table-default-vertical-align, var(--spectrum-table-default-vertical-align)); + color: var(--highcontrast-table-row-text-color, var(--mod-table-row-text-color, var(--spectrum-table-row-text-color))); + background-color: var(--spectrum-table-cell-background-color); + block-size: var(--mod-table-min-row-height, var(--spectrum-table-min-row-height)); + padding-block-start: calc(var(--mod-table-row-top-to-text, var(--spectrum-table-row-top-to-text)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: var(--mod-table-row-bottom-to-text, var(--spectrum-table-row-bottom-to-text)); + padding-inline: calc(var(--mod-table-edge-to-content, var(--spectrum-table-edge-to-content)) - var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width))); +} +.spectrum-Table-cell, +.spectrum-Table-headCell { + position: relative; +} +.spectrum-Table-cell.is-focused, +.spectrum-Table-cell:focus-visible, +.spectrum-Table-headCell.is-focused, +.spectrum-Table-headCell:focus-visible { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-cell-focus-indicator-color, var(--highcontrast-table-focus-indicator-color, var(--mod-table-focus-indicator-color, var(--spectrum-table-focus-indicator-color)))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1 - var(--highcontrast-table-cell-focus-extra-offset, 0px)); +} +.spectrum-Table-cell--divider { + border-inline-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-divider-color, var(--mod-table-divider-color, var(--spectrum-table-divider-color))); +} +.spectrum-Table-row { + position: relative; + transition: background-color var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; + cursor: var(--mod-table-cursor-row-default, pointer); + border-block-start: none; +} +.spectrum-Table-row:first-child { + border-start-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-start-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child { + border-end-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-end-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:focus { + outline: 0; +} +.spectrum-Table-row.is-focused, +.spectrum-Table-row:focus-visible { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-background-color-hover, var(--spectrum-table-row-background-color-hover))); +} +.spectrum-Table-row:active { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-active-color, var(--spectrum-table-row-active-color))); +} +.spectrum-Table-row.is-selected { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color); +} +.spectrum-Table-row.is-selected.is-focused, +.spectrum-Table-row.is-selected:focus-visible { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color-focus); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color-focus); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color-focus); +} +.spectrum-Table-body.is-drop-target .spectrum-Table-row, +.spectrum-Table-row.is-drop-target { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color); + --spectrum-table-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-drop-zone-background-color, var(--spectrum-table-drop-zone-background-color))); +} +.spectrum-Table-row.is-drop-target { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1); + --mod-table-border-color: var(--highcontrast-table-focus-indicator-color, transparent); +} +.spectrum-Table-row.is-drop-target .spectrum-Table-cell { + border-block-start-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); +} +.spectrum-Table-row--summary { + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color, var(--mod-table-summary-row-background-color, var(--spectrum-table-summary-row-background-color))); +} +.spectrum-Table-row--summary .spectrum-Table-cell { + font-weight: var(--mod-table-summary-row-font-weight, var(--spectrum-table-summary-row-font-weight)); + font-size: var(--mod-table-summary-row-font-size, var(--spectrum-table-row-font-size)); + font-family: var(--mod-table-summary-row-font-family, var(--spectrum-table-row-font-family)); + font-style: var(--mod-table-summary-row-font-style, var(--spectrum-table-row-font-style)); + line-height: var(--mod-table-summary-row-line-height, var(--spectrum-table-row-line-height)); + color: var(--highcontrast-table-row-text-color, var(--mod-table-summary-row-text-color, var(--spectrum-table-row-text-color))); +} +.spectrum-Table-row--sectionHeader { + --spectrum-table-cell-background-color: var(--highcontrast-table-section-header-background-color, var(--mod-table-section-header-background-color, var(--spectrum-table-section-header-background-color))); + cursor: var(--mod-table-cursor-section-header, initial); +} +.spectrum-Table-row--sectionHeader .spectrum-Table-cell { + font-weight: var(--mod-table-section-header-font-weight, var(--spectrum-table-section-header-font-weight)); + text-align: start; + block-size: var(--mod-table-section-header-min-height, var(--spectrum-table-section-header-min-height)); + padding-block-start: calc(var(--mod-table-section-header-block-start-spacing, var(--spectrum-table-section-header-block-start-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: calc(var(--mod-table-section-header-block-end-spacing, var(--spectrum-table-section-header-block-end-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + font-size: var(--mod-table-section-header-font-size, var(--spectrum-table-row-font-size)); + font-family: var(--mod-table-section-header-font-family, var(--spectrum-table-row-font-family)); + font-style: var(--mod-table-section-header-font-style, var(--spectrum-table-row-font-style)); + line-height: var(--mod-table-section-header-line-height, var(--spectrum-table-row-line-height)); + color: var(--highcontrast-table-section-header-text-color, var(--mod-table-section-header-text-color, var(--spectrum-table-row-text-color))); +} +.spectrum-Table-checkboxCell { + inline-size: var(--spectrum-checkbox-control-size-small); + padding-inline-end: calc(var(--mod-table-checkbox-to-text, var(--spectrum-table-checkbox-to-text)) - var(--mod-table-edge-to-content, var(--spectrum-table-edge-to-content))); + padding-block: 0; +} +.spectrum-Table-checkboxCell .spectrum-Table-checkbox { + --mod-checkbox-spacing: 0px; + min-block-size: 0; +} +.spectrum-Table-checkboxCell.spectrum-Table-cell .spectrum-Table-checkbox { + margin-block-start: calc(var(--mod-table-row-checkbox-block-spacing, var(--spectrum-table-row-checkbox-block-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + margin-block-end: var(--mod-table-row-checkbox-block-spacing, var(--spectrum-table-row-checkbox-block-spacing)); +} +.spectrum-Table-checkboxCell.spectrum-Table-headCell .spectrum-Table-checkbox { + margin-block-start: calc(var(--mod-table-header-checkbox-block-spacing, var(--spectrum-table-header-checkbox-block-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + margin-block-end: var(--mod-table-header-checkbox-block-spacing, var(--spectrum-table-header-checkbox-block-spacing)); +} +.spectrum-Table-main, +.spectrum-Table:not(.spectrum-Table-scroller) { + display: table; +} +.spectrum-Table-head { + display: table-header-group; +} +.spectrum-Table-body { + display: table-row-group; +} +.spectrum-Table-head [role="row"], +.spectrum-Table-row { + display: table-row; +} +.spectrum-Table-cell, +.spectrum-Table-headCell { + display: table-cell; +} +.spectrum-Table-scroller { + --spectrum-table-header-background-color: var(--mod-table-header-background-color-scrollable, var(--spectrum-background-layer-1-color, var(--spectrum-gray-100))); + box-sizing: border-box; + display: inline-block; + position: relative; + overflow: auto; + border-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-block: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); + border-inline: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); + scroll-padding-top: var(--mod-table-current-header-height, calc(var(--mod-table-header-line-height, var(--spectrum-table-row-line-height)) * var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)) + var(--mod-table-header-top-to-text, var(--spectrum-table-header-top-to-text)) + var(--mod-table-header-bottom-to-text, var(--spectrum-table-header-bottom-to-text)) + var(--mod-table-border-width, var(--spectrum-table-border-width)))); +} +.spectrum-Table-scroller.spectrum-Table--quiet { + --mod-table-header-background-color--quiet: var(--mod-table-header-background-color-scrollable, var(--spectrum-background-layer-1-color, var(--spectrum-gray-100))); + border-block-start: none; +} +.spectrum-Table-scroller .spectrum-Table-head { + position: sticky; + inset-block-start: 0; + z-index: 1; +} +.spectrum-Table-scroller .spectrum-Table-headCell { + border-block-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell { + border-block-start: none; + border-radius: 0; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell { + border-block-end: none; + border-radius: 0; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child { + border-inline-start: none; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child { + border-inline-end: none; +} +.spectrum-Table-row--collapsible { + --spectrum-table-row-tier: 0; +} +.spectrum-Table-row--collapsible[data-tier="1"] { + --spectrum-table-row-tier: 1; +} +.spectrum-Table-row--collapsible[data-tier="2"] { + --spectrum-table-row-tier: 2; +} +.spectrum-Table-row--collapsible[data-tier="3"] { + --spectrum-table-row-tier: 3; +} +.spectrum-Table-row--collapsible[data-tier="4"] { + --spectrum-table-row-tier: 4; +} +.spectrum-Table-row--collapsible[data-tier="5"] { + --spectrum-table-row-tier: 5; +} +.spectrum-Table-row--collapsible[data-tier="6"] { + --spectrum-table-row-tier: 6; +} +.spectrum-Table-row--collapsible .spectrum-Table-checkboxCell { + padding-inline-end: 0; +} +.spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-cell--collapsible { + padding-inline-start: calc(var(--spectrum-table-row-tier) * var(--spectrum-table-collapsible-tier-indent) + var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)) + var(--mod-table-collapsible-disclosure-inline-spacing, var(--spectrum-table-collapsible-disclosure-inline-spacing)) * 2); +} +.spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-disclosureIcon { + display: none; +} +.spectrum-Table-row--collapsible .spectrum-Table-disclosureIcon { + margin-inline: var(--mod-table-collapsible-disclosure-inline-spacing, var(--spectrum-table-collapsible-disclosure-inline-spacing)); + margin-block-start: max(0px, calc((var(--mod-table-min-row-height, var(--spectrum-table-min-row-height)) - var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size))) / 2)); +} +.spectrum-Table-row--collapsible[hidden] { + display: none; +} +.spectrum-Table-cell--collapsible { + padding-inline-start: calc(var(--spectrum-table-row-tier, 0px) * var(--spectrum-table-collapsible-tier-indent)); + padding-block: 0; +} +.spectrum-Table-collapseInner { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: flex-start; +} +.spectrum-Table-collapseInner .spectrum-Table-collapseContent { + padding-block-start: calc(var(--mod-table-row-top-to-text, var(--spectrum-table-row-top-to-text)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: var(--mod-table-row-bottom-to-text, var(--spectrum-table-row-bottom-to-text)); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-default, var(--spectrum-table-icon-color-default))); + block-size: var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)); + flex-basis: var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)); + flex-grow: 0; + flex-shrink: 0; + transition: transform ease var(--mod-table-collapsible-icon-animation-duration, var(--spectrum-table-collapsible-icon-animation-duration)); + border-radius: 0; + background: transparent; + border: 0; + color: var(--spectrum-table-icon-color); + transform: var(--spectrum-logical-rotation); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon[aria-expanded="true"] { + transform: var(--spectrum-logical-rotation,) rotate(90deg); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:after { + display: none; +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:active { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-active, var(--spectrum-table-icon-color-active))); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-focus, var(--spectrum-table-icon-color-focus))); +} +@media (hover: hover) { + .spectrum-Table-headCell.is-sortable:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-hover, var(--spectrum-table-icon-color-hover))); + } + .spectrum-Table-headCell.is-sortable:focus:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-focus-hover, var(--spectrum-table-icon-color-focus-hover))); + } + .spectrum-Table-row:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-background-color-hover, var(--spectrum-table-row-background-color-hover))); + } + .spectrum-Table-row.is-selected:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color-focus); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color-focus); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color-focus); + } + .spectrum-Table-row--sectionHeader:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-section-header-text-color); + --spectrum-table-cell-background-color: var(--highcontrast-table-section-header-background-color, var(--mod-table-section-header-background-color, var(--spectrum-table-section-header-background-color))); + } + .spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-hover, var(--spectrum-table-icon-color-hover))); + } + .spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-focus-hover, var(--spectrum-table-icon-color-focus-hover))); + } +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon.is-keyboardFocused, +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus-visible { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-key-focus, var(--spectrum-table-icon-color-key-focus))); + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-focus-indicator-color, var(--spectrum-table-focus-indicator-color))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1 - 2px); +} +.spectrum-Table-row--thumbnail { + --table-thumbnail-cell-block-spacing: var(--mod-table-thumbnail-block-spacing, var(--spectrum-table-thumbnail-block-spacing)); + --table-thumbnail-inner-content-block-spacing: max(0px, calc((var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size)) - (var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)) * var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)))) / 2)); +} +.spectrum-Table-row--thumbnail .spectrum-Table-cell { + padding-block: calc(var(--table-thumbnail-cell-block-spacing) + var(--table-thumbnail-inner-content-block-spacing)); +} +.spectrum-Table-row--thumbnail .spectrum-Table-cell--thumbnail { + padding-block: 0; +} +.spectrum-Table-row--thumbnail.spectrum-Table-row--collapsible { + --table-thumbnail-inner-minimum-block-spacing: max(0px, calc((var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)) - var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size))) / 2)); + --table-thumbnail-cell-block-spacing: max(var(--mod-table-thumbnail-block-spacing, var(--spectrum-table-thumbnail-block-spacing)), var(--table-thumbnail-inner-minimum-block-spacing)); +} +.spectrum-Table-thumbnailInner { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: flex-start; + padding-block: var(--table-thumbnail-cell-block-spacing); +} +.spectrum-Table-thumbnailInner .spectrum-Thumbnail { + flex-grow: 0; + flex-shrink: 0; + margin-inline-end: var(--mod-table-thumbnail-to-text, var(--spectrum-table-thumbnail-to-text)); + line-height: var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)); +} +.spectrum-Table-thumbnailInner .spectrum-Table-thumbnailContent { + padding-block: var(--table-thumbnail-inner-content-block-spacing); +} +/*# sourceMappingURL=components/table/index.css.map */ diff --git a/components/table/index.css b/components/table/index.css new file mode 100644 index 0000000000..d1c2a42533 --- /dev/null +++ b/components/table/index.css @@ -0,0 +1,698 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Table { + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-medium); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-medium); + --spectrum-table-min-header-height: var(--spectrum-component-height-100); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-medium-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-medium-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-medium-regular); + --spectrum-table-cell-inline-space: var(--spectrum-table-edge-to-content); + --spectrum-table-border-radius: var(--spectrum-corner-radius-100); + --spectrum-table-border-width: var(--spectrum-table-border-divider-width); + --spectrum-table-outer-border-inline-width: var(--spectrum-table-border-divider-width); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-default-vertical-align: top; + --spectrum-table-header-vertical-align: middle; + --spectrum-table-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-row-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-table-row-font-weight: var(--spectrum-regular-font-weight); + --spectrum-table-row-font-style: var(--spectrum-default-font-style); + --spectrum-table-row-font-size: var(--spectrum-font-size-100); + --spectrum-table-row-line-height: var(--spectrum-line-height-100); + --spectrum-table-border-color: var(--spectrum-gray-300); + --spectrum-table-divider-color: var(--spectrum-gray-300); + --spectrum-table-header-background-color: var(--spectrum-transparent-white-100); + --spectrum-table-header-text-color: var(--spectrum-body-color); + --spectrum-table-row-background-color: var(--spectrum-gray-50); + --spectrum-table-row-text-color: var(--spectrum-neutral-content-color-default); + --spectrum-table-selected-row-background-color: rgba(var(--spectrum-blue-900-rgb), var(--spectrum-table-selected-row-background-opacity)); + --spectrum-table-selected-row-background-color-non-emphasized: rgba(var(--spectrum-gray-700-rgb), var(--spectrum-table-selected-row-background-opacity-non-emphasized)); + --spectrum-table-row-background-color-hover: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-table-row-hover-opacity)); + --spectrum-table-row-active-color: rgba(var(--spectrum-gray-900-rgb), var(--spectrum-table-row-down-opacity)); + --spectrum-table-selected-row-background-color-focus: rgba(var(--spectrum-blue-900-rgb), var(--spectrum-table-selected-row-background-opacity-hover)); + --spectrum-table-selected-row-background-color-non-emphasized-focus: rgba(var(--spectrum-gray-700-rgb), var(--spectrum-table-selected-row-background-opacity-non-emphasized-hover)); + --spectrum-table-icon-color-default: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-table-icon-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-table-icon-color-active: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-table-icon-color-focus: var(--spectrum-neutral-subdued-content-color-focus); + --spectrum-table-icon-color-focus-hover: var(--spectrum-neutral-subdued-content-focus-hover); + --spectrum-table-icon-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-medium); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-medium-regular); + --spectrum-table-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-table-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-table-drop-zone-background-color: rgba(var(--spectrum-drop-zone-background-color-rgb), var(--spectrum-drop-zone-background-color-opacity)); + --spectrum-table-drop-zone-outline-color: var(--spectrum-accent-visual-color); + --spectrum-table-transition-duration: var(--spectrum-animation-duration-100); + --spectrum-table-summary-row-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-summary-row-background-color: var(--spectrum-gray-200); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-medium); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-100); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-100); + --spectrum-table-section-header-font-weight: var(--spectrum-bold-font-weight); + --spectrum-table-section-header-background-color: var(--spectrum-gray-200); + --spectrum-table-collapsible-tier-indent: var(--spectrum-spacing-300); + --spectrum-table-collapsible-disclosure-inline-spacing: 0px; + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-100); + --spectrum-table-collapsible-icon-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-medium-regular); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-300); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color, var(--mod-table-row-background-color, var(--spectrum-table-row-background-color))); + --spectrum-table-selected-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-selected-row-background-color-non-emphasized, var(--spectrum-table-selected-row-background-color-non-emphasized))); + --spectrum-table-selected-cell-background-color-focus: var(--highcontrast-table-selected-row-background-color-focus, var(--mod-table-selected-row-background-color-non-emphasized-focus, var(--spectrum-table-selected-row-background-color-non-emphasized-focus))); + --mod-thumbnail-size: var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size)); +} +.spectrum-Table:dir(rtl), +[dir="rtl"] .spectrum-Table { + --spectrum-logical-rotation: matrix(-1, 0, 0, 1, 0, 0); +} +.spectrum-Table--sizeS { + --spectrum-table-min-header-height: var(--spectrum-component-height-100); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-small); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-small); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-small-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-small-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-small-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-row-font-size: var(--spectrum-font-size-75); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-small); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-small-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-small); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-75); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-75); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-75); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-small-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-100); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-200); +} +.spectrum-Table--sizeL { + --spectrum-table-min-header-height: var(--spectrum-component-height-200); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-large); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-large); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-large-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-large-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-large-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-200); + --spectrum-table-row-font-size: var(--spectrum-font-size-200); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-large); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-large-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-large); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-200); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-200); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-200); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-large-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-200); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-500); +} +.spectrum-Table--sizeXL { + --spectrum-table-min-header-height: var(--spectrum-component-height-300); + --spectrum-table-header-top-to-text: var(--spectrum-table-column-header-row-top-to-text-extra-large); + --spectrum-table-header-bottom-to-text: var(--spectrum-table-column-header-row-bottom-to-text-extra-large); + --spectrum-table-min-row-height: var(--spectrum-table-row-height-extra-large-regular); + --spectrum-table-row-top-to-text: var(--spectrum-table-row-top-to-text-extra-large-regular); + --spectrum-table-row-bottom-to-text: var(--spectrum-table-row-bottom-to-text-extra-large-regular); + --spectrum-table-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-table-row-font-size: var(--spectrum-font-size-300); + --spectrum-table-header-checkbox-block-spacing: var(--spectrum-table-header-row-checkbox-to-top-extra-large); + --spectrum-table-row-checkbox-block-spacing: var(--spectrum-table-row-checkbox-to-top-extra-large-regular); + --spectrum-table-section-header-min-height: var(--spectrum-table-section-header-row-height-extra-large); + --spectrum-table-section-header-block-start-spacing: var(--spectrum-component-top-to-text-300); + --spectrum-table-section-header-block-end-spacing: var(--spectrum-component-bottom-to-text-300); + --spectrum-table-disclosure-icon-size: var(--spectrum-component-height-300); + --spectrum-table-thumbnail-block-spacing: var(--spectrum-table-thumbnail-to-top-minimum-extra-large-regular); + --spectrum-table-thumbnail-to-text: var(--spectrum-text-to-visual-300); + --spectrum-table-thumbnail-size: var(--spectrum-thumbnail-size-700); +} +.spectrum-Table--compact { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-medium-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-medium-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-medium-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-medium-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-medium-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-200)); +} +.spectrum-Table--compact.spectrum-Table--sizeS { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-small-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-small-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-small-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-small-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-small-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-50)); +} +.spectrum-Table--compact.spectrum-Table--sizeL { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-large-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-large-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-large-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-large-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-large-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-300)); +} +.spectrum-Table--compact.spectrum-Table--sizeXL { + --mod-table-min-row-height: var(--mod-table-min-row-height--compact, var(--spectrum-table-row-height-extra-large-compact)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--compact, var(--spectrum-table-row-top-to-text-extra-large-compact)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--compact, var(--spectrum-table-row-bottom-to-text-extra-large-compact)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--compact, var(--spectrum-table-row-checkbox-to-top-extra-large-compact)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-compact, var(--spectrum-table-thumbnail-to-top-minimum-extra-large-compact)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-compact, var(--spectrum-thumbnail-size-500)); +} +.spectrum-Table--spacious { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-medium-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-medium-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-medium-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-medium-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-medium-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-500)); +} +.spectrum-Table--spacious.spectrum-Table--sizeS { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-small-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-small-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-small-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-small-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-small-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-300)); +} +.spectrum-Table--spacious.spectrum-Table--sizeL { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-large-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-large-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-large-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-large-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-large-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-700)); +} +.spectrum-Table--spacious.spectrum-Table--sizeXL { + --mod-table-min-row-height: var(--mod-table-min-row-height--spacious, var(--spectrum-table-row-height-extra-large-spacious)); + --mod-table-row-top-to-text: var(--mod-table-row-top-to-text--spacious, var(--spectrum-table-row-top-to-text-extra-large-spacious)); + --mod-table-row-bottom-to-text: var(--mod-table-row-bottom-to-text--spacious, var(--spectrum-table-row-bottom-to-text-extra-large-spacious)); + --mod-table-row-checkbox-block-spacing: var(--mod-table-row-checkbox-block-spacing--spacious, var(--spectrum-table-row-checkbox-to-top-extra-large-spacious)); + --mod-table-thumbnail-block-spacing: var(--mod-table-thumbnail-block-spacing-spacious, var(--spectrum-table-thumbnail-to-top-minimum-extra-large-spacious)); + --mod-table-thumbnail-size: var(--mod-table-thumbnail-size-spacious, var(--spectrum-thumbnail-size-800)); +} +.spectrum-Table--emphasized { + --spectrum-table-selected-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-selected-row-background-color, var(--spectrum-table-selected-row-background-color))); + --spectrum-table-selected-cell-background-color-focus: var(--highcontrast-table-selected-row-background-color-focus, var(--mod-table-selected-row-background-color-focus, var(--spectrum-table-selected-row-background-color-focus))); +} +.spectrum-Table--quiet { + --mod-table-border-radius: var(--mod-table-border-radius--quiet, 0px); + --mod-table-outer-border-inline-width: var(--mod-table-outer-border-inline-width--quiet, 0px); + --mod-table-header-background-color: var(--mod-table-header-background-color--quiet, var(--spectrum-transparent-white-100)); + --mod-table-row-background-color: var(--mod-table-row-background-color--quiet, var(--spectrum-transparent-white-100)); +} +@media (forced-colors: active) { + .spectrum-Table { + --highcontrast-table-row-background-color: Canvas; + --highcontrast-table-row-text-color: CanvasText; + --highcontrast-table-divider-color: CanvasText; + --highcontrast-table-border-color: CanvasText; + --highcontrast-table-icon-color: CanvasText; + --highcontrast-table-icon-color-focus: Highlight; + --highcontrast-table-selected-row-background-color: Highlight; + --highcontrast-table-selected-row-text-color: HighlightText; + --highcontrast-table-selected-row-text-color-default: HighlightText; + --highcontrast-table-selected-row-background-color-focus: Highlight; + --highcontrast-table-selected-row-text-color-focus: HighlightText; + --highcontrast-table-row-background-color-hover: Highlight; + --highcontrast-table-row-text-color-hover: HighlightText; + --highcontrast-table-section-header-text-color: Canvas; + --highcontrast-table-section-header-background-color: CanvasText; + --highcontrast-table-focus-indicator-color: Highlight; + --highcontrast-table-transition-duration: 0; + } + @supports (color: SelectedItem) { + .spectrum-Table { + --highcontrast-table-selected-row-background-color: SelectedItem; + --highcontrast-table-selected-row-text-color: SelectedItemText; + --highcontrast-table-selected-row-text-color-default: SelectedItemText; + } + } + .spectrum-Table-cell { + forced-color-adjust: none; + } + .spectrum-Table-row.is-focused .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row:focus-visible .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-row-text-color-hover) 1px solid; + } + @media (hover: hover) { + .spectrum-Table-row:hover .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-row-text-color-hover) 1px solid; + } + } + .spectrum-Table-body.is-drop-target .spectrum-Table-row, + .spectrum-Table-row.is-drop-target, + .spectrum-Table-row.is-selected { + --highcontrast-table-cell-focus-indicator-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-cell-focus-extra-offset: 1px; + } + .spectrum-Table-body.is-drop-target .spectrum-Table-row .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row.is-drop-target .spectrum-Table-checkbox .spectrum-Checkbox-box:before, + .spectrum-Table-row.is-selected .spectrum-Table-checkbox .spectrum-Checkbox-box:before { + outline: var(--highcontrast-table-selected-row-text-color) 1px solid; + } +} +.spectrum-Table-main, +.spectrum-Table:not(.spectrum-Table-scroller) { + border-collapse: initial; + border-spacing: 0; +} +.spectrum-Table-sortedIcon { + display: none; + vertical-align: initial; + margin-inline-start: var(--mod-table-sort-icon-inline-start-spacing, 0); + margin-inline-end: var(--mod-table-sort-icon-inline-end-spacing, var(--mod-table-icon-to-text, var(--spectrum-table-icon-to-text))); + transition: transform var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; +} +.spectrum-Table-menuIcon { + vertical-align: middle; + margin-inline-start: var(--mod-table-icon-to-text, var(--spectrum-table-icon-to-text)); +} +.spectrum-Table-headCell { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-default, var(--spectrum-table-icon-color-default))); + box-sizing: border-box; + text-align: start; + vertical-align: var(--mod-table-header-vertical-align, var(--spectrum-table-header-vertical-align)); + font-family: var(--mod-table-header-font-family, var(--spectrum-table-row-font-family)); + font-size: var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)); + font-weight: var(--mod-table-header-font-weight, var(--spectrum-table-header-font-weight)); + line-height: var(--mod-table-header-line-height, var(--spectrum-table-row-line-height)); + text-transform: var(--mod-table-header-text-transform, none); + block-size: var(--mod-table-min-header-height, var(--spectrum-table-min-header-height)); + padding-block: var(--mod-table-header-top-to-text, var(--spectrum-table-header-top-to-text)) var(--mod-table-header-bottom-to-text, var(--spectrum-table-header-bottom-to-text)); + padding-inline: var(--mod-table-cell-inline-space, var(--spectrum-table-cell-inline-space)); + color: var(--mod-table-header-text-color, var(--spectrum-table-header-text-color)); + background-color: var(--mod-table-header-background-color, var(--spectrum-table-header-background-color)); + border-radius: 0; + transition: color var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; + cursor: var(--mod-table-cursor-header-default, initial); + outline: 0; +} +.spectrum-Table-headCell .spectrum-Table-menuIcon, +.spectrum-Table-headCell .spectrum-Table-sortedIcon { + color: var(--spectrum-table-icon-color); +} +.spectrum-Table-headCell.is-sortable { + cursor: var(--mod-table-cursor-header-sortable, pointer); +} +.spectrum-Table-headCell.is-sortable:active { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-active, var(--spectrum-table-icon-color-active))); +} +.spectrum-Table-headCell.is-sortable:focus { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-focus, var(--spectrum-table-icon-color-focus))); +} +.spectrum-Table-headCell.is-sortable.is-keyboardFocused, +.spectrum-Table-headCell.is-sortable:focus-visible { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-key-focus, var(--spectrum-table-icon-color-key-focus))); +} +.spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon, +.spectrum-Table-headCell.is-sorted-desc .spectrum-Table-sortedIcon { + display: inline-block; +} +.spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon { + transform: rotate(-90deg); +} +.spectrum-Table-columnTitle { + display: inline-block; +} +.spectrum-Table-cell--alignCenter { + text-align: center; +} +.spectrum-Table-cell--alignRight { + text-align: end; +} +.spectrum-Table-body { + position: relative; + border: none; + border-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-body.is-drop-target { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); + --mod-table-border-color: transparent; +} +.spectrum-Table-cell { + border-block-start: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-divider-color, var(--mod-table-divider-color, var(--spectrum-table-divider-color))); +} +.spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell { + border-block-start: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell { + border-block-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child { + border-inline-start: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child { + border-inline-end: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-row:first-child .spectrum-Table-cell:first-child { + border-start-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:first-child .spectrum-Table-cell:last-child { + border-start-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child .spectrum-Table-cell:first-child { + border-end-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child .spectrum-Table-cell:last-child { + border-end-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-cell { + box-sizing: border-box; + font-size: var(--mod-table-row-font-size, var(--spectrum-table-row-font-size)); + font-weight: var(--mod-table-row-font-weight, var(--spectrum-table-row-font-weight)); + line-height: var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)); + vertical-align: var(--mod-table-default-vertical-align, var(--spectrum-table-default-vertical-align)); + color: var(--highcontrast-table-row-text-color, var(--mod-table-row-text-color, var(--spectrum-table-row-text-color))); + background-color: var(--spectrum-table-cell-background-color); + block-size: var(--mod-table-min-row-height, var(--spectrum-table-min-row-height)); + padding-block-start: calc(var(--mod-table-row-top-to-text, var(--spectrum-table-row-top-to-text)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: var(--mod-table-row-bottom-to-text, var(--spectrum-table-row-bottom-to-text)); + padding-inline: calc(var(--mod-table-edge-to-content, var(--spectrum-table-edge-to-content)) - var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width))); +} +.spectrum-Table-cell, +.spectrum-Table-headCell { + position: relative; +} +.spectrum-Table-cell.is-focused, +.spectrum-Table-cell:focus-visible, +.spectrum-Table-headCell.is-focused, +.spectrum-Table-headCell:focus-visible { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-cell-focus-indicator-color, var(--highcontrast-table-focus-indicator-color, var(--mod-table-focus-indicator-color, var(--spectrum-table-focus-indicator-color)))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1 - var(--highcontrast-table-cell-focus-extra-offset, 0px)); +} +.spectrum-Table-cell--divider { + border-inline-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-divider-color, var(--mod-table-divider-color, var(--spectrum-table-divider-color))); +} +.spectrum-Table-row { + position: relative; + transition: background-color var(--highcontrast-table-transition-duration, var(--mod-table-transition-duration, var(--spectrum-table-transition-duration))) ease-in-out; + cursor: var(--mod-table-cursor-row-default, pointer); + border-block-start: none; +} +.spectrum-Table-row:first-child { + border-start-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-start-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:last-child { + border-end-start-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-end-end-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); +} +.spectrum-Table-row:focus { + outline: 0; +} +.spectrum-Table-row.is-focused, +.spectrum-Table-row:focus-visible { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-background-color-hover, var(--spectrum-table-row-background-color-hover))); +} +.spectrum-Table-row:active { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-active-color, var(--spectrum-table-row-active-color))); +} +.spectrum-Table-row.is-selected { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color); +} +.spectrum-Table-row.is-selected.is-focused, +.spectrum-Table-row.is-selected:focus-visible { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color-focus); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color-focus); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color-focus); +} +.spectrum-Table-body.is-drop-target .spectrum-Table-row, +.spectrum-Table-row.is-drop-target { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color); + --spectrum-table-cell-background-color: var(--highcontrast-table-selected-row-background-color, var(--mod-table-drop-zone-background-color, var(--spectrum-table-drop-zone-background-color))); +} +.spectrum-Table-row.is-drop-target { + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1); + --mod-table-border-color: var(--highcontrast-table-focus-indicator-color, transparent); +} +.spectrum-Table-row.is-drop-target .spectrum-Table-cell { + border-block-start-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-drop-zone-outline-color, var(--spectrum-table-drop-zone-outline-color))); +} +.spectrum-Table-row--summary { + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color, var(--mod-table-summary-row-background-color, var(--spectrum-table-summary-row-background-color))); +} +.spectrum-Table-row--summary .spectrum-Table-cell { + font-weight: var(--mod-table-summary-row-font-weight, var(--spectrum-table-summary-row-font-weight)); + font-size: var(--mod-table-summary-row-font-size, var(--spectrum-table-row-font-size)); + font-family: var(--mod-table-summary-row-font-family, var(--spectrum-table-row-font-family)); + font-style: var(--mod-table-summary-row-font-style, var(--spectrum-table-row-font-style)); + line-height: var(--mod-table-summary-row-line-height, var(--spectrum-table-row-line-height)); + color: var(--highcontrast-table-row-text-color, var(--mod-table-summary-row-text-color, var(--spectrum-table-row-text-color))); +} +.spectrum-Table-row--sectionHeader { + --spectrum-table-cell-background-color: var(--highcontrast-table-section-header-background-color, var(--mod-table-section-header-background-color, var(--spectrum-table-section-header-background-color))); + cursor: var(--mod-table-cursor-section-header, initial); +} +.spectrum-Table-row--sectionHeader .spectrum-Table-cell { + font-weight: var(--mod-table-section-header-font-weight, var(--spectrum-table-section-header-font-weight)); + text-align: start; + block-size: var(--mod-table-section-header-min-height, var(--spectrum-table-section-header-min-height)); + padding-block-start: calc(var(--mod-table-section-header-block-start-spacing, var(--spectrum-table-section-header-block-start-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: calc(var(--mod-table-section-header-block-end-spacing, var(--spectrum-table-section-header-block-end-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + font-size: var(--mod-table-section-header-font-size, var(--spectrum-table-row-font-size)); + font-family: var(--mod-table-section-header-font-family, var(--spectrum-table-row-font-family)); + font-style: var(--mod-table-section-header-font-style, var(--spectrum-table-row-font-style)); + line-height: var(--mod-table-section-header-line-height, var(--spectrum-table-row-line-height)); + color: var(--highcontrast-table-section-header-text-color, var(--mod-table-section-header-text-color, var(--spectrum-table-row-text-color))); +} +.spectrum-Table-checkboxCell { + inline-size: var(--spectrum-checkbox-control-size-small); + padding-inline-end: calc(var(--mod-table-checkbox-to-text, var(--spectrum-table-checkbox-to-text)) - var(--mod-table-edge-to-content, var(--spectrum-table-edge-to-content))); + padding-block: 0; +} +.spectrum-Table-checkboxCell .spectrum-Table-checkbox { + --mod-checkbox-spacing: 0px; + min-block-size: 0; +} +.spectrum-Table-checkboxCell.spectrum-Table-cell .spectrum-Table-checkbox { + margin-block-start: calc(var(--mod-table-row-checkbox-block-spacing, var(--spectrum-table-row-checkbox-block-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + margin-block-end: var(--mod-table-row-checkbox-block-spacing, var(--spectrum-table-row-checkbox-block-spacing)); +} +.spectrum-Table-checkboxCell.spectrum-Table-headCell .spectrum-Table-checkbox { + margin-block-start: calc(var(--mod-table-header-checkbox-block-spacing, var(--spectrum-table-header-checkbox-block-spacing)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + margin-block-end: var(--mod-table-header-checkbox-block-spacing, var(--spectrum-table-header-checkbox-block-spacing)); +} +.spectrum-Table-main, +.spectrum-Table:not(.spectrum-Table-scroller) { + display: table; +} +.spectrum-Table-head { + display: table-header-group; +} +.spectrum-Table-body { + display: table-row-group; +} +.spectrum-Table-head [role="row"], +.spectrum-Table-row { + display: table-row; +} +.spectrum-Table-cell, +.spectrum-Table-headCell { + display: table-cell; +} +.spectrum-Table-scroller { + --spectrum-table-header-background-color: var(--mod-table-header-background-color-scrollable, var(--spectrum-background-layer-1-color, var(--spectrum-gray-100))); + box-sizing: border-box; + display: inline-block; + position: relative; + overflow: auto; + border-radius: var(--mod-table-border-radius, var(--spectrum-table-border-radius)); + border-block: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); + border-inline: var(--mod-table-outer-border-inline-width, var(--spectrum-table-outer-border-inline-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); + scroll-padding-top: var(--mod-table-current-header-height, calc(var(--mod-table-header-line-height, var(--spectrum-table-row-line-height)) * var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)) + var(--mod-table-header-top-to-text, var(--spectrum-table-header-top-to-text)) + var(--mod-table-header-bottom-to-text, var(--spectrum-table-header-bottom-to-text)) + var(--mod-table-border-width, var(--spectrum-table-border-width)))); +} +.spectrum-Table-scroller.spectrum-Table--quiet { + --mod-table-header-background-color--quiet: var(--mod-table-header-background-color-scrollable, var(--spectrum-background-layer-1-color, var(--spectrum-gray-100))); + border-block-start: none; +} +.spectrum-Table-scroller .spectrum-Table-head { + position: sticky; + inset-block-start: 0; + z-index: 1; +} +.spectrum-Table-scroller .spectrum-Table-headCell { + border-block-end: var(--mod-table-border-width, var(--spectrum-table-border-width)) solid var(--highcontrast-table-border-color, var(--mod-table-border-color, var(--spectrum-table-border-color))); +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell { + border-block-start: none; + border-radius: 0; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell { + border-block-end: none; + border-radius: 0; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child { + border-inline-start: none; +} +.spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child { + border-inline-end: none; +} +.spectrum-Table-row--collapsible { + --spectrum-table-row-tier: 0; +} +.spectrum-Table-row--collapsible[data-tier="1"] { + --spectrum-table-row-tier: 1; +} +.spectrum-Table-row--collapsible[data-tier="2"] { + --spectrum-table-row-tier: 2; +} +.spectrum-Table-row--collapsible[data-tier="3"] { + --spectrum-table-row-tier: 3; +} +.spectrum-Table-row--collapsible[data-tier="4"] { + --spectrum-table-row-tier: 4; +} +.spectrum-Table-row--collapsible[data-tier="5"] { + --spectrum-table-row-tier: 5; +} +.spectrum-Table-row--collapsible[data-tier="6"] { + --spectrum-table-row-tier: 6; +} +.spectrum-Table-row--collapsible .spectrum-Table-checkboxCell { + padding-inline-end: 0; +} +.spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-cell--collapsible { + padding-inline-start: calc(var(--spectrum-table-row-tier) * var(--spectrum-table-collapsible-tier-indent) + var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)) + var(--mod-table-collapsible-disclosure-inline-spacing, var(--spectrum-table-collapsible-disclosure-inline-spacing)) * 2); +} +.spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-disclosureIcon { + display: none; +} +.spectrum-Table-row--collapsible .spectrum-Table-disclosureIcon { + margin-inline: var(--mod-table-collapsible-disclosure-inline-spacing, var(--spectrum-table-collapsible-disclosure-inline-spacing)); + margin-block-start: max(0px, calc((var(--mod-table-min-row-height, var(--spectrum-table-min-row-height)) - var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size))) / 2)); +} +.spectrum-Table-row--collapsible[hidden] { + display: none; +} +.spectrum-Table-cell--collapsible { + padding-inline-start: calc(var(--spectrum-table-row-tier, 0px) * var(--spectrum-table-collapsible-tier-indent)); + padding-block: 0; +} +.spectrum-Table-collapseInner { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: flex-start; +} +.spectrum-Table-collapseInner .spectrum-Table-collapseContent { + padding-block-start: calc(var(--mod-table-row-top-to-text, var(--spectrum-table-row-top-to-text)) - var(--mod-table-border-width, var(--spectrum-table-border-width))); + padding-block-end: var(--mod-table-row-bottom-to-text, var(--spectrum-table-row-bottom-to-text)); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-default, var(--spectrum-table-icon-color-default))); + block-size: var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)); + flex-basis: var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)); + flex-grow: 0; + flex-shrink: 0; + transition: transform ease var(--mod-table-collapsible-icon-animation-duration, var(--spectrum-table-collapsible-icon-animation-duration)); + border-radius: 0; + background: transparent; + border: 0; + color: var(--spectrum-table-icon-color); + transform: var(--spectrum-logical-rotation); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon[aria-expanded="true"] { + transform: var(--spectrum-logical-rotation,) rotate(90deg); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:after { + display: none; +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:active { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-active, var(--spectrum-table-icon-color-active))); +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-focus, var(--spectrum-table-icon-color-focus))); +} +@media (hover: hover) { + .spectrum-Table-headCell.is-sortable:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-hover, var(--spectrum-table-icon-color-hover))); + } + .spectrum-Table-headCell.is-sortable:focus:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color-focus, var(--mod-table-icon-color-focus-hover, var(--spectrum-table-icon-color-focus-hover))); + } + .spectrum-Table-row:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-row-text-color-hover); + --highcontrast-table-icon-color: var(--highcontrast-table-row-text-color-hover); + --spectrum-table-cell-background-color: var(--highcontrast-table-row-background-color-hover, var(--mod-table-row-background-color-hover, var(--spectrum-table-row-background-color-hover))); + } + .spectrum-Table-row.is-selected:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-selected-row-text-color-focus); + --highcontrast-table-icon-color: var(--highcontrast-table-selected-row-text-color-focus); + --spectrum-table-cell-background-color: var(--spectrum-table-selected-cell-background-color-focus); + } + .spectrum-Table-row--sectionHeader:hover { + --highcontrast-table-row-text-color: var(--highcontrast-table-section-header-text-color); + --spectrum-table-cell-background-color: var(--highcontrast-table-section-header-background-color, var(--mod-table-section-header-background-color, var(--spectrum-table-section-header-background-color))); + } + .spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-hover, var(--spectrum-table-icon-color-hover))); + } + .spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus:hover { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-focus-hover, var(--spectrum-table-icon-color-focus-hover))); + } +} +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon.is-keyboardFocused, +.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus-visible { + --spectrum-table-icon-color: var(--highcontrast-table-icon-color, var(--mod-table-icon-color-key-focus, var(--spectrum-table-icon-color-key-focus))); + outline-width: var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)); + outline-style: solid; + outline-color: var(--highcontrast-table-focus-indicator-color, var(--mod-table-focus-indicator-color, var(--spectrum-table-focus-indicator-color))); + outline-offset: calc(var(--mod-table-focus-indicator-thickness, var(--spectrum-table-focus-indicator-thickness)) * -1 - 2px); +} +.spectrum-Table-row--thumbnail { + --table-thumbnail-cell-block-spacing: var(--mod-table-thumbnail-block-spacing, var(--spectrum-table-thumbnail-block-spacing)); + --table-thumbnail-inner-content-block-spacing: max(0px, calc((var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size)) - (var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)) * var(--mod-table-header-font-size, var(--spectrum-table-row-font-size)))) / 2)); +} +.spectrum-Table-row--thumbnail .spectrum-Table-cell { + padding-block: calc(var(--table-thumbnail-cell-block-spacing) + var(--table-thumbnail-inner-content-block-spacing)); +} +.spectrum-Table-row--thumbnail .spectrum-Table-cell--thumbnail { + padding-block: 0; +} +.spectrum-Table-row--thumbnail.spectrum-Table-row--collapsible { + --table-thumbnail-inner-minimum-block-spacing: max(0px, calc((var(--mod-table-disclosure-icon-size, var(--spectrum-table-disclosure-icon-size)) - var(--mod-table-thumbnail-size, var(--spectrum-table-thumbnail-size))) / 2)); + --table-thumbnail-cell-block-spacing: max(var(--mod-table-thumbnail-block-spacing, var(--spectrum-table-thumbnail-block-spacing)), var(--table-thumbnail-inner-minimum-block-spacing)); +} +.spectrum-Table-thumbnailInner { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + align-items: flex-start; + padding-block: var(--table-thumbnail-cell-block-spacing); +} +.spectrum-Table-thumbnailInner .spectrum-Thumbnail { + flex-grow: 0; + flex-shrink: 0; + margin-inline-end: var(--mod-table-thumbnail-to-text, var(--spectrum-table-thumbnail-to-text)); + line-height: var(--mod-table-row-line-height, var(--spectrum-table-row-line-height)); +} +.spectrum-Table-thumbnailInner .spectrum-Table-thumbnailContent { + padding-block: var(--table-thumbnail-inner-content-block-spacing); +} +/*# sourceMappingURL=components/table/index.css.map */ diff --git a/components/table/metadata.json b/components/table/metadata.json new file mode 100644 index 0000000000..6b7981b648 --- /dev/null +++ b/components/table/metadata.json @@ -0,0 +1,440 @@ +{ + "selectors": [ + ".spectrum-Table", + ".spectrum-Table--compact", + ".spectrum-Table--compact.spectrum-Table--sizeL", + ".spectrum-Table--compact.spectrum-Table--sizeS", + ".spectrum-Table--compact.spectrum-Table--sizeXL", + ".spectrum-Table--emphasized", + ".spectrum-Table--quiet", + ".spectrum-Table--sizeL", + ".spectrum-Table--sizeS", + ".spectrum-Table--sizeXL", + ".spectrum-Table--spacious", + ".spectrum-Table--spacious.spectrum-Table--sizeL", + ".spectrum-Table--spacious.spectrum-Table--sizeS", + ".spectrum-Table--spacious.spectrum-Table--sizeXL", + ".spectrum-Table-body", + ".spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child", + ".spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child", + ".spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell", + ".spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell", + ".spectrum-Table-body.is-drop-target", + ".spectrum-Table-body.is-drop-target .spectrum-Table-row .spectrum-Table-checkbox .spectrum-Checkbox-box:before,\n\t.spectrum-Table-row.is-drop-target .spectrum-Table-checkbox .spectrum-Checkbox-box:before,\n\t.spectrum-Table-row.is-selected .spectrum-Table-checkbox .spectrum-Checkbox-box:before", + ".spectrum-Table-body.is-drop-target .spectrum-Table-row,\n\t.spectrum-Table-row.is-drop-target,\n\t.spectrum-Table-row.is-selected", + ".spectrum-Table-body.is-drop-target .spectrum-Table-row,\n.spectrum-Table-row.is-drop-target", + ".spectrum-Table-cell", + ".spectrum-Table-cell,\n.spectrum-Table-headCell", + ".spectrum-Table-cell--alignCenter", + ".spectrum-Table-cell--alignRight", + ".spectrum-Table-cell--collapsible", + ".spectrum-Table-cell--divider", + ".spectrum-Table-cell.is-focused,\n.spectrum-Table-cell:focus-visible,\n.spectrum-Table-headCell.is-focused,\n.spectrum-Table-headCell:focus-visible", + ".spectrum-Table-checkboxCell", + ".spectrum-Table-checkboxCell .spectrum-Table-checkbox", + ".spectrum-Table-checkboxCell.spectrum-Table-cell .spectrum-Table-checkbox", + ".spectrum-Table-checkboxCell.spectrum-Table-headCell .spectrum-Table-checkbox", + ".spectrum-Table-collapseInner", + ".spectrum-Table-collapseInner .spectrum-Table-collapseContent", + ".spectrum-Table-columnTitle", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon.is-keyboardFocused,\n.spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus-visible", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:active", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:after", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:focus:hover", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon:hover", + ".spectrum-Table-disclosureIcon.spectrum-Table-disclosureIcon[aria-expanded=\"true\"]", + ".spectrum-Table-head", + ".spectrum-Table-head [role=\"row\"],\n.spectrum-Table-row", + ".spectrum-Table-headCell", + ".spectrum-Table-headCell .spectrum-Table-menuIcon,\n.spectrum-Table-headCell .spectrum-Table-sortedIcon", + ".spectrum-Table-headCell.is-sortable", + ".spectrum-Table-headCell.is-sortable.is-keyboardFocused,\n.spectrum-Table-headCell.is-sortable:focus-visible", + ".spectrum-Table-headCell.is-sortable:active", + ".spectrum-Table-headCell.is-sortable:focus", + ".spectrum-Table-headCell.is-sortable:focus:hover", + ".spectrum-Table-headCell.is-sortable:hover", + ".spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon", + ".spectrum-Table-headCell.is-sorted-asc .spectrum-Table-sortedIcon,\n.spectrum-Table-headCell.is-sorted-desc .spectrum-Table-sortedIcon", + ".spectrum-Table-main,\n.spectrum-Table:not(.spectrum-Table-scroller)", + ".spectrum-Table-menuIcon", + ".spectrum-Table-row", + ".spectrum-Table-row--collapsible", + ".spectrum-Table-row--collapsible .spectrum-Table-checkboxCell", + ".spectrum-Table-row--collapsible .spectrum-Table-disclosureIcon", + ".spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-cell--collapsible", + ".spectrum-Table-row--collapsible.is-last-tier .spectrum-Table-disclosureIcon", + ".spectrum-Table-row--collapsible[data-tier=\"1\"]", + ".spectrum-Table-row--collapsible[data-tier=\"2\"]", + ".spectrum-Table-row--collapsible[data-tier=\"3\"]", + ".spectrum-Table-row--collapsible[data-tier=\"4\"]", + ".spectrum-Table-row--collapsible[data-tier=\"5\"]", + ".spectrum-Table-row--collapsible[data-tier=\"6\"]", + ".spectrum-Table-row--collapsible[hidden]", + ".spectrum-Table-row--sectionHeader", + ".spectrum-Table-row--sectionHeader .spectrum-Table-cell", + ".spectrum-Table-row--sectionHeader:hover", + ".spectrum-Table-row--summary", + ".spectrum-Table-row--summary .spectrum-Table-cell", + ".spectrum-Table-row--thumbnail", + ".spectrum-Table-row--thumbnail .spectrum-Table-cell", + ".spectrum-Table-row--thumbnail .spectrum-Table-cell--thumbnail", + ".spectrum-Table-row--thumbnail.spectrum-Table-row--collapsible", + ".spectrum-Table-row.is-drop-target", + ".spectrum-Table-row.is-drop-target .spectrum-Table-cell", + ".spectrum-Table-row.is-focused .spectrum-Table-checkbox .spectrum-Checkbox-box:before,\n\t.spectrum-Table-row:focus-visible .spectrum-Table-checkbox .spectrum-Checkbox-box:before", + ".spectrum-Table-row.is-focused,\n.spectrum-Table-row:focus-visible", + ".spectrum-Table-row.is-selected", + ".spectrum-Table-row.is-selected.is-focused,\n.spectrum-Table-row.is-selected:focus-visible", + ".spectrum-Table-row.is-selected:hover", + ".spectrum-Table-row:active", + ".spectrum-Table-row:first-child", + ".spectrum-Table-row:first-child .spectrum-Table-cell:first-child", + ".spectrum-Table-row:first-child .spectrum-Table-cell:last-child", + ".spectrum-Table-row:focus", + ".spectrum-Table-row:hover", + ".spectrum-Table-row:hover .spectrum-Table-checkbox .spectrum-Checkbox-box:before", + ".spectrum-Table-row:last-child", + ".spectrum-Table-row:last-child .spectrum-Table-cell:first-child", + ".spectrum-Table-row:last-child .spectrum-Table-cell:last-child", + ".spectrum-Table-scroller", + ".spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:first-child", + ".spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row .spectrum-Table-cell:last-child", + ".spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:first-child .spectrum-Table-cell", + ".spectrum-Table-scroller .spectrum-Table-body .spectrum-Table-row:last-child .spectrum-Table-cell", + ".spectrum-Table-scroller .spectrum-Table-head", + ".spectrum-Table-scroller .spectrum-Table-headCell", + ".spectrum-Table-scroller.spectrum-Table--quiet", + ".spectrum-Table-sortedIcon", + ".spectrum-Table-thumbnailInner", + ".spectrum-Table-thumbnailInner .spectrum-Table-thumbnailContent", + ".spectrum-Table-thumbnailInner .spectrum-Thumbnail", + ".spectrum-Table:dir(rtl),\n[dir=\"rtl\"] .spectrum-Table" + ], + "mods": [ + "--mod-table-border-color", + "--mod-table-border-radius", + "--mod-table-border-radius--quiet", + "--mod-table-border-width", + "--mod-table-cell-inline-space", + "--mod-table-checkbox-to-text", + "--mod-table-collapsible-disclosure-inline-spacing", + "--mod-table-collapsible-icon-animation-duration", + "--mod-table-current-header-height", + "--mod-table-cursor-header-default", + "--mod-table-cursor-header-sortable", + "--mod-table-cursor-row-default", + "--mod-table-cursor-section-header", + "--mod-table-default-vertical-align", + "--mod-table-disclosure-icon-size", + "--mod-table-divider-color", + "--mod-table-drop-zone-background-color", + "--mod-table-drop-zone-outline-color", + "--mod-table-edge-to-content", + "--mod-table-focus-indicator-color", + "--mod-table-focus-indicator-thickness", + "--mod-table-header-background-color", + "--mod-table-header-background-color--quiet", + "--mod-table-header-background-color-scrollable", + "--mod-table-header-bottom-to-text", + "--mod-table-header-checkbox-block-spacing", + "--mod-table-header-font-family", + "--mod-table-header-font-size", + "--mod-table-header-font-weight", + "--mod-table-header-line-height", + "--mod-table-header-text-color", + "--mod-table-header-text-transform", + "--mod-table-header-top-to-text", + "--mod-table-header-vertical-align", + "--mod-table-icon-color-active", + "--mod-table-icon-color-default", + "--mod-table-icon-color-focus", + "--mod-table-icon-color-focus-hover", + "--mod-table-icon-color-hover", + "--mod-table-icon-color-key-focus", + "--mod-table-icon-to-text", + "--mod-table-min-header-height", + "--mod-table-min-row-height", + "--mod-table-min-row-height--compact", + "--mod-table-min-row-height--spacious", + "--mod-table-outer-border-inline-width", + "--mod-table-outer-border-inline-width--quiet", + "--mod-table-row-active-color", + "--mod-table-row-background-color", + "--mod-table-row-background-color--quiet", + "--mod-table-row-background-color-hover", + "--mod-table-row-bottom-to-text", + "--mod-table-row-bottom-to-text--compact", + "--mod-table-row-bottom-to-text--spacious", + "--mod-table-row-checkbox-block-spacing", + "--mod-table-row-checkbox-block-spacing--compact", + "--mod-table-row-checkbox-block-spacing--spacious", + "--mod-table-row-font-size", + "--mod-table-row-font-weight", + "--mod-table-row-line-height", + "--mod-table-row-text-color", + "--mod-table-row-top-to-text", + "--mod-table-row-top-to-text--compact", + "--mod-table-row-top-to-text--spacious", + "--mod-table-section-header-background-color", + "--mod-table-section-header-block-end-spacing", + "--mod-table-section-header-block-start-spacing", + "--mod-table-section-header-font-family", + "--mod-table-section-header-font-size", + "--mod-table-section-header-font-style", + "--mod-table-section-header-font-weight", + "--mod-table-section-header-line-height", + "--mod-table-section-header-min-height", + "--mod-table-section-header-text-color", + "--mod-table-selected-row-background-color", + "--mod-table-selected-row-background-color-focus", + "--mod-table-selected-row-background-color-non-emphasized", + "--mod-table-selected-row-background-color-non-emphasized-focus", + "--mod-table-sort-icon-inline-end-spacing", + "--mod-table-sort-icon-inline-start-spacing", + "--mod-table-summary-row-background-color", + "--mod-table-summary-row-font-family", + "--mod-table-summary-row-font-size", + "--mod-table-summary-row-font-style", + "--mod-table-summary-row-font-weight", + "--mod-table-summary-row-line-height", + "--mod-table-summary-row-text-color", + "--mod-table-thumbnail-block-spacing", + "--mod-table-thumbnail-block-spacing-compact", + "--mod-table-thumbnail-block-spacing-spacious", + "--mod-table-thumbnail-size", + "--mod-table-thumbnail-size-compact", + "--mod-table-thumbnail-size-spacious", + "--mod-table-thumbnail-to-text", + "--mod-table-transition-duration" + ], + "spectrum": [ + "--spectrum-accent-visual-color", + "--spectrum-animation-duration-100", + "--spectrum-background-layer-1-color", + "--spectrum-blue-900-rgb", + "--spectrum-body-color", + "--spectrum-bold-font-weight", + "--spectrum-checkbox-control-size-small", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-300", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-300", + "--spectrum-component-top-to-text-75", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-drop-zone-background-color-opacity", + "--spectrum-drop-zone-background-color-rgb", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-100", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-50", + "--spectrum-gray-700-rgb", + "--spectrum-gray-900-rgb", + "--spectrum-line-height-100", + "--spectrum-logical-rotation", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-neutral-subdued-content-color-down", + "--spectrum-neutral-subdued-content-color-focus", + "--spectrum-neutral-subdued-content-color-hover", + "--spectrum-neutral-subdued-content-color-key-focus", + "--spectrum-neutral-subdued-content-focus-hover", + "--spectrum-regular-font-weight", + "--spectrum-sans-font-family-stack", + "--spectrum-spacing-300", + "--spectrum-table-border-color", + "--spectrum-table-border-divider-width", + "--spectrum-table-border-radius", + "--spectrum-table-border-width", + "--spectrum-table-cell-background-color", + "--spectrum-table-cell-inline-space", + "--spectrum-table-checkbox-to-text", + "--spectrum-table-collapsible-disclosure-inline-spacing", + "--spectrum-table-collapsible-icon-animation-duration", + "--spectrum-table-collapsible-tier-indent", + "--spectrum-table-column-header-row-bottom-to-text-extra-large", + "--spectrum-table-column-header-row-bottom-to-text-large", + "--spectrum-table-column-header-row-bottom-to-text-medium", + "--spectrum-table-column-header-row-bottom-to-text-small", + "--spectrum-table-column-header-row-top-to-text-extra-large", + "--spectrum-table-column-header-row-top-to-text-large", + "--spectrum-table-column-header-row-top-to-text-medium", + "--spectrum-table-column-header-row-top-to-text-small", + "--spectrum-table-default-vertical-align", + "--spectrum-table-disclosure-icon-size", + "--spectrum-table-divider-color", + "--spectrum-table-drop-zone-background-color", + "--spectrum-table-drop-zone-outline-color", + "--spectrum-table-edge-to-content", + "--spectrum-table-focus-indicator-color", + "--spectrum-table-focus-indicator-thickness", + "--spectrum-table-header-background-color", + "--spectrum-table-header-bottom-to-text", + "--spectrum-table-header-checkbox-block-spacing", + "--spectrum-table-header-font-weight", + "--spectrum-table-header-row-checkbox-to-top-extra-large", + "--spectrum-table-header-row-checkbox-to-top-large", + "--spectrum-table-header-row-checkbox-to-top-medium", + "--spectrum-table-header-row-checkbox-to-top-small", + "--spectrum-table-header-text-color", + "--spectrum-table-header-top-to-text", + "--spectrum-table-header-vertical-align", + "--spectrum-table-icon-color", + "--spectrum-table-icon-color-active", + "--spectrum-table-icon-color-default", + "--spectrum-table-icon-color-focus", + "--spectrum-table-icon-color-focus-hover", + "--spectrum-table-icon-color-hover", + "--spectrum-table-icon-color-key-focus", + "--spectrum-table-icon-to-text", + "--spectrum-table-min-header-height", + "--spectrum-table-min-row-height", + "--spectrum-table-outer-border-inline-width", + "--spectrum-table-row-active-color", + "--spectrum-table-row-background-color", + "--spectrum-table-row-background-color-hover", + "--spectrum-table-row-bottom-to-text", + "--spectrum-table-row-bottom-to-text-extra-large-compact", + "--spectrum-table-row-bottom-to-text-extra-large-regular", + "--spectrum-table-row-bottom-to-text-extra-large-spacious", + "--spectrum-table-row-bottom-to-text-large-compact", + "--spectrum-table-row-bottom-to-text-large-regular", + "--spectrum-table-row-bottom-to-text-large-spacious", + "--spectrum-table-row-bottom-to-text-medium-compact", + "--spectrum-table-row-bottom-to-text-medium-regular", + "--spectrum-table-row-bottom-to-text-medium-spacious", + "--spectrum-table-row-bottom-to-text-small-compact", + "--spectrum-table-row-bottom-to-text-small-regular", + "--spectrum-table-row-bottom-to-text-small-spacious", + "--spectrum-table-row-checkbox-block-spacing", + "--spectrum-table-row-checkbox-to-top-extra-large-compact", + "--spectrum-table-row-checkbox-to-top-extra-large-regular", + "--spectrum-table-row-checkbox-to-top-extra-large-spacious", + "--spectrum-table-row-checkbox-to-top-large-compact", + "--spectrum-table-row-checkbox-to-top-large-regular", + "--spectrum-table-row-checkbox-to-top-large-spacious", + "--spectrum-table-row-checkbox-to-top-medium-compact", + "--spectrum-table-row-checkbox-to-top-medium-regular", + "--spectrum-table-row-checkbox-to-top-medium-spacious", + "--spectrum-table-row-checkbox-to-top-small-compact", + "--spectrum-table-row-checkbox-to-top-small-regular", + "--spectrum-table-row-checkbox-to-top-small-spacious", + "--spectrum-table-row-down-opacity", + "--spectrum-table-row-font-family", + "--spectrum-table-row-font-size", + "--spectrum-table-row-font-style", + "--spectrum-table-row-font-weight", + "--spectrum-table-row-height-extra-large-compact", + "--spectrum-table-row-height-extra-large-regular", + "--spectrum-table-row-height-extra-large-spacious", + "--spectrum-table-row-height-large-compact", + "--spectrum-table-row-height-large-regular", + "--spectrum-table-row-height-large-spacious", + "--spectrum-table-row-height-medium-compact", + "--spectrum-table-row-height-medium-regular", + "--spectrum-table-row-height-medium-spacious", + "--spectrum-table-row-height-small-compact", + "--spectrum-table-row-height-small-regular", + "--spectrum-table-row-height-small-spacious", + "--spectrum-table-row-hover-opacity", + "--spectrum-table-row-line-height", + "--spectrum-table-row-text-color", + "--spectrum-table-row-tier", + "--spectrum-table-row-top-to-text", + "--spectrum-table-row-top-to-text-extra-large-compact", + "--spectrum-table-row-top-to-text-extra-large-regular", + "--spectrum-table-row-top-to-text-extra-large-spacious", + "--spectrum-table-row-top-to-text-large-compact", + "--spectrum-table-row-top-to-text-large-regular", + "--spectrum-table-row-top-to-text-large-spacious", + "--spectrum-table-row-top-to-text-medium-compact", + "--spectrum-table-row-top-to-text-medium-regular", + "--spectrum-table-row-top-to-text-medium-spacious", + "--spectrum-table-row-top-to-text-small-compact", + "--spectrum-table-row-top-to-text-small-regular", + "--spectrum-table-row-top-to-text-small-spacious", + "--spectrum-table-section-header-background-color", + "--spectrum-table-section-header-block-end-spacing", + "--spectrum-table-section-header-block-start-spacing", + "--spectrum-table-section-header-font-weight", + "--spectrum-table-section-header-min-height", + "--spectrum-table-section-header-row-height-extra-large", + "--spectrum-table-section-header-row-height-large", + "--spectrum-table-section-header-row-height-medium", + "--spectrum-table-section-header-row-height-small", + "--spectrum-table-selected-cell-background-color", + "--spectrum-table-selected-cell-background-color-focus", + "--spectrum-table-selected-row-background-color", + "--spectrum-table-selected-row-background-color-focus", + "--spectrum-table-selected-row-background-color-non-emphasized", + "--spectrum-table-selected-row-background-color-non-emphasized-focus", + "--spectrum-table-selected-row-background-opacity", + "--spectrum-table-selected-row-background-opacity-hover", + "--spectrum-table-selected-row-background-opacity-non-emphasized", + "--spectrum-table-selected-row-background-opacity-non-emphasized-hover", + "--spectrum-table-summary-row-background-color", + "--spectrum-table-summary-row-font-weight", + "--spectrum-table-thumbnail-block-spacing", + "--spectrum-table-thumbnail-size", + "--spectrum-table-thumbnail-to-text", + "--spectrum-table-thumbnail-to-top-minimum-extra-large-compact", + "--spectrum-table-thumbnail-to-top-minimum-extra-large-regular", + "--spectrum-table-thumbnail-to-top-minimum-extra-large-spacious", + "--spectrum-table-thumbnail-to-top-minimum-large-compact", + "--spectrum-table-thumbnail-to-top-minimum-large-regular", + "--spectrum-table-thumbnail-to-top-minimum-large-spacious", + "--spectrum-table-thumbnail-to-top-minimum-medium-compact", + "--spectrum-table-thumbnail-to-top-minimum-medium-regular", + "--spectrum-table-thumbnail-to-top-minimum-medium-spacious", + "--spectrum-table-thumbnail-to-top-minimum-small-compact", + "--spectrum-table-thumbnail-to-top-minimum-small-regular", + "--spectrum-table-thumbnail-to-top-minimum-small-spacious", + "--spectrum-table-transition-duration", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-thumbnail-size-200", + "--spectrum-thumbnail-size-300", + "--spectrum-thumbnail-size-50", + "--spectrum-thumbnail-size-500", + "--spectrum-thumbnail-size-700", + "--spectrum-thumbnail-size-800", + "--spectrum-transparent-white-100" + ], + "system": [], + "a11y": [ + "--highcontrast-table-border-color", + "--highcontrast-table-cell-focus-extra-offset", + "--highcontrast-table-cell-focus-indicator-color", + "--highcontrast-table-divider-color", + "--highcontrast-table-focus-indicator-color", + "--highcontrast-table-icon-color", + "--highcontrast-table-icon-color-focus", + "--highcontrast-table-row-background-color", + "--highcontrast-table-row-background-color-hover", + "--highcontrast-table-row-text-color", + "--highcontrast-table-row-text-color-hover", + "--highcontrast-table-section-header-background-color", + "--highcontrast-table-section-header-text-color", + "--highcontrast-table-selected-row-background-color", + "--highcontrast-table-selected-row-background-color-focus", + "--highcontrast-table-selected-row-text-color", + "--highcontrast-table-selected-row-text-color-focus", + "--highcontrast-table-transition-duration" + ] +} diff --git a/components/table/package.json b/components/table/package.json new file mode 100644 index 0000000000..f927829f82 --- /dev/null +++ b/components/table/package.json @@ -0,0 +1,58 @@ +{ + "name": "@spectrum-css/table", + "version": "6.1.1", + "description": "The Spectrum CSS table component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/table", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/table" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/button": ">=13", + "@spectrum-css/checkbox": ">=9", + "@spectrum-css/icon": ">=7", + "@spectrum-css/thumbnail": ">=6", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/button": { + "optional": true + }, + "@spectrum-css/checkbox": { + "optional": true + }, + "@spectrum-css/thumbnail": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/button": "workspace:^", + "@spectrum-css/checkbox": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/thumbnail": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/table/template.js b/components/table/template.js new file mode 100644 index 0000000000..8de04c9e1f --- /dev/null +++ b/components/table/template.js @@ -0,0 +1,292 @@ +import { Template as Button } from "@spectrum-css/button/stories/template.js"; +import { Template as Checkbox } from "@spectrum-css/checkbox/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as Thumbnail } from "@spectrum-css/thumbnail/stories/template.js"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { when } from "lit/directives/when.js"; +import { html, literal } from "lit/static-html.js"; + +import "../index.css"; + +export const TableRowItem = ({ + rootClass = "spectrum-Table", + cellContent = "Row Item Text", + showCheckbox = false, + isSelected = false, + isSummaryRow = false, + isSectionHeader = false, + tableIsEmphasized = true, + isCollapsible = false, + isExpanded = false, + isHidden = false, + tier, + isLastTier = false, + useDivs = false, + showThumbnails = false, + isDropTarget = false, + ariaControls, + customClasses = [], + size = "m", +} = {}, context = {}) => { + const useThumbnail = showThumbnails && !isSummaryRow && !isSectionHeader; + + // Use Table tags or Div tags. + // Note: Lit must use the 'literal' function for dynamic tags to work. + const rowTag = useDivs ? literal`div` : literal`tr`; + const cellTag = useDivs ? literal`div` : literal`td`; + + // Content for a table cell. + const getCellContent = (columnIndex) => { + const content = Array.isArray(cellContent) + ? cellContent[columnIndex] + : cellContent; + if (useThumbnail && columnIndex < 2) { + return html` +
    + ${Thumbnail({ + size: "300", + imageURL: "example-card-landscape.png", + isCover: true, + }, context)} +
    ${content}
    +
    + `; + } + else { + return content; + } + }; + + return html` + <${rowTag} + class=${classMap({ + [`${rootClass}-row`]: true, + [`${rootClass}-row--summary`]: isSummaryRow, + [`${rootClass}-row--sectionHeader`]: isSectionHeader, + [`${rootClass}-row--collapsible`]: isCollapsible, + [`${rootClass}-row--thumbnail`]: useThumbnail, + ["is-selected"]: isSelected, + ["is-expanded"]: isExpanded, + ["is-last-tier"]: isLastTier, + ["is-drop-target"]: isDropTarget, + ...customClasses.reduce((a, c) => ({ ...a, [c]: true }), {}), + })} + role=${ifDefined(useDivs ? "row" : undefined)} + aria-selected=${ifDefined(showCheckbox ? "true" : undefined)} + data-tier=${ifDefined(tier)} + ?hidden=${isHidden} + > + ${when(showCheckbox && !isSectionHeader, () => html` + <${cellTag} + role="gridcell" + class="spectrum-Table-cell spectrum-Table-checkboxCell" + > + ${when(!isSummaryRow, () => + Checkbox({ + size, + isEmphasized: tableIsEmphasized, + isChecked: isSelected, + customClasses: [`${rootClass}-checkbox`], + }, context) + )} + ` + )} + + ${isCollapsible + ? html` + <${cellTag} + role=${ifDefined(showCheckbox ? "gridcell" : useDivs ? "cell" : undefined)} + class=${classMap({ + [`${rootClass}-cell`]: true, + [`${rootClass}-cell--collapsible`]: true, + [`${rootClass}-cell--thumbnail`]: useThumbnail, + })} + > +
    + ${when(!isLastTier, () => + Button({ + size, + iconName: "ChevronRight100", + hideLabel: true, + customClasses: [`${rootClass}-disclosureIcon`], + ariaExpanded: isExpanded, + ariaControls, + }, context) + )} + ${useThumbnail ? getCellContent(0) : html`
    ${getCellContent(0)}
    `} +
    + ` + : html` + <${cellTag} + role=${ifDefined(showCheckbox ? "gridcell" : useDivs ? "cell" : undefined)} + class=${classMap({ + [`${rootClass}-cell`]: true, + [`${rootClass}-cell--thumbnail`]: useThumbnail, + })} + colspan=${ifDefined(isSectionHeader && showCheckbox ? "4" : isSectionHeader ? "3" : undefined)} + >${getCellContent(0)}` + } + + ${when(!isSectionHeader, () => html` + <${cellTag} + role=${ifDefined(showCheckbox ? "gridcell" : useDivs ? "cell" : undefined)} + class=${classMap({ + [`${rootClass}-cell`]: true, + [`${rootClass}-cell--thumbnail`]: useThumbnail, + })} + >${getCellContent(1)} + + <${cellTag} + role=${ifDefined(showCheckbox ? "gridcell" : useDivs ? "cell" : undefined)} + class=${classMap({ + [`${rootClass}-cell`]: true, + })} + >${getCellContent(2)}` + )} + + `; +}; + +export const Template = ({ + rootClass = "spectrum-Table", + size = "m", + density = "standard", + isQuiet = false, + isEmphasized = true, + useDivs = false, + useScroller = false, + showThumbnails = false, + isDropTarget = false, + rowItems = [], + customClasses = [], + id, +} = {}, context = {}) => { + if (!rowItems || !rowItems.length) return html``; + + // Use Table tags or Div tags. + const tableTag = useDivs ? literal`div` : literal`table`; + const theadTag = useDivs ? literal`div` : literal`thead`; + const tbodyTag = useDivs ? literal`div` : literal`tbody`; + const rowTag = useDivs ? literal`div` : literal`tr`; + const thTag = useDivs ? literal`div` : literal`th`; + + const rootClassMapVariants = { + [`${rootClass}--size${size?.toUpperCase()}`]: typeof size !== "undefined", + [`${rootClass}--${density}`]: density !== "standard", + [`${rootClass}--quiet`]: isQuiet, + [`${rootClass}--emphasized`]: isEmphasized, + ...customClasses.reduce((a, c) => ({ ...a, [c]: true }), {}), + }; + + const useCheckboxCell = rowItems.some((item) => item.showCheckbox === true); + + const tableHtml = html` + <${tableTag} + class=${classMap({ + [rootClass]: !useScroller, + [`${rootClass}-main`]: useScroller, + ...rootClassMapVariants + })} + id=${ifDefined(id)} + role=${ifDefined(useCheckboxCell ? "grid" : useDivs ? "table" : undefined)} + aria-multiselectable=${ifDefined(useCheckboxCell ? "true" : undefined)} + style="max-width: 800px;" + > + <${theadTag} + class="${rootClass}-head" + role=${ifDefined(useDivs ? "rowgroup" : undefined)} + > + <${rowTag} + role=${ifDefined(useDivs ? "row" : undefined)} + > + ${when(useCheckboxCell, () => html` + <${thTag} + class="spectrum-Table-headCell spectrum-Table-checkboxCell" + role=${ifDefined(useDivs ? "columnheader" : undefined)} + > + ${Checkbox({ + size, + isEmphasized: isEmphasized, + isChecked: false, + isIndeterminate: true, + customClasses: [`${rootClass}-checkbox`], + }, context)} + ` + )} + <${thTag} + class="${rootClass}-headCell is-sortable is-sorted-desc" + role=${ifDefined(useDivs ? "columnheader" : undefined)} + aria-sort="descending" + tabindex="0" + > + ${Icon({ + iconName: "ArrowDown100", + size, + customClasses: [`${rootClass}-sortedIcon`], + }, context)}Column title${ + Icon({ + iconName: "ChevronDown100", + size, + customClasses: [`${rootClass}-menuIcon`], + }, context)} + + <${thTag} + class="${rootClass}-headCell is-sortable" + role=${ifDefined(useDivs ? "columnheader" : undefined)} + aria-sort="none" + tabindex="0" + > + ${Icon({ + iconName: "ArrowDown100", + size, + customClasses: [`${rootClass}-sortedIcon`], + }, context)}Column title + + <${thTag} + class="${rootClass}-headCell" + role=${ifDefined(useDivs ? "columnheader" : undefined)} + >Column title + + + <${tbodyTag} + class=${classMap({ + [`${rootClass}-body`]: true, + ["is-drop-target"]: isDropTarget, + })} + role=${ifDefined(useDivs ? "rowgroup" : undefined)} + > + ${rowItems.map((item) => + TableRowItem({ + rootClass, + size, + useDivs, + showThumbnails, + tableIsEmphasized: isEmphasized, + ...item, + }, context) + )} + + + `; + + // Scrollable table moves the root class and variant classes into the wrapper + // with the scroller class. + if (useScroller) { + return html` +
    + ${tableHtml} +
    + `; + } + else { + return tableHtml; + } +}; diff --git a/components/tabs/index-base.css b/components/tabs/index-base.css new file mode 100644 index 0000000000..8260ece96b --- /dev/null +++ b/components/tabs/index-base.css @@ -0,0 +1,317 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Tabs { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-medium); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-medium); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-medium); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-medium); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-medium); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-medium); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-medium); + --spectrum-tabs-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-tabs-color-selected: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-tabs-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-tabs-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-tabs-color-disabled: var(--spectrum-gray-500); + --spectrum-tabs-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-tabs-font-style: var(--spectrum-default-font-style); + --spectrum-tabs-font-size: var(--spectrum-font-size-100); + --spectrum-tabs-line-height: var(--spectrum-line-height-100); + --spectrum-tabs-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-tabs-focus-indicator-border-radius: var(--spectrum-corner-radius-100); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-medium); + --spectrum-tabs-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-tabs-selection-indicator-color: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-tabs-list-background-direction: top; + --spectrum-tabs-divider-background-color: var(--spectrum-gray-300); + --spectrum-tabs-divider-size: var(--spectrum-border-width-200); + --spectrum-tabs-divider-border-radius: 1px; + --spectrum-tabs-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-tabs-animation-ease: var(--spectrum-animation-ease-in-out); +} +.spectrum-Tabs.spectrum-Tabs--sizeS { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-small); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-small); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-small); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-small); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-small); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-small); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-75); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-small); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-small); + --spectrum-tabs-font-size: var(--spectrum-font-size-75); +} +.spectrum-Tabs.spectrum-Tabs--sizeL { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-large); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-large); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-large); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-large); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-large); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-large); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-200); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-large); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-large); + --spectrum-tabs-font-size: var(--spectrum-font-size-200); +} +.spectrum-Tabs.spectrum-Tabs--sizeXL { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-extra-large); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-extra-large); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-extra-large); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-extra-large); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-extra-large); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-extra-large); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-extra-large); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-extra-large); + --spectrum-tabs-font-size: var(--spectrum-font-size-300); +} +.spectrum-Tabs.spectrum-Tabs--emphasized { + --mod-tabs-color-selected: var(--mod-tabs-color-selected-emphasized, var(--spectrum-accent-content-color-default)); + --mod-tabs-color-hover: var(--mod-tabs-color-hover-emphasized, var(--spectrum-accent-content-color-hover)); + --mod-tabs-color-key-focus: var(--mod-tabs-color-key-focus-emphasized, var(--spectrum-accent-content-color-key-focus)); + --mod-tabs-selection-indicator-color: var(--mod-tabs-selection-indicator-color-emphasized, var(--spectrum-accent-content-color-default)); +} +.spectrum-Tabs--vertical { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, right); +} +.spectrum-Tabs--vertical-right { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical-right, left); +} +.spectrum-Tabs--vertical:dir(rtl), +[dir="rtl"] .spectrum-Tabs--vertical { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, left); +} +.spectrum-Tabs--vertical-right:dir(rtl), +[dir="rtl"] .spectrum-Tabs--vertical-right { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, right); +} +.spectrum-Tabs.spectrum-Tabs--compact { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-medium)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-medium)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-medium)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-medium)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeS { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-small)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-small)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-small)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-small)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeL { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-large)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-large)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-large)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-large)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeXL { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-extra-large)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-extra-large)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-extra-large)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-extra-large)); +} +.spectrum-Tabs { + display: flex; + position: relative; + z-index: 0; + margin: 0; + padding-block: 0; + vertical-align: top; + background: linear-gradient(to var(--mod-tabs-list-background-direction, var(--spectrum-tabs-list-background-direction)), var(--highcontrast-tabs-divider-background-color, var(--mod-tabs-divider-background-color, var(--spectrum-tabs-divider-background-color))) 0 var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)), transparent var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); +} +.spectrum-Tabs-item { + position: relative; + box-sizing: border-box; + block-size: calc(var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)) - var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); + z-index: 1; + -webkit-text-decoration: none; + text-decoration: none; + white-space: nowrap; + color: var(--highcontrast-tabs-color, var(--mod-tabs-color, var(--spectrum-tabs-color))); + transition: color var(--mod-tabs-animation-duration, var(--spectrum-tabs-animation-duration)) ease-out; + cursor: pointer; + outline: none; +} +.spectrum-Tabs-item .spectrum-Icon { + block-size: var(--mod-tabs-icon-size, var(--spectrum-tabs-icon-size)); + inline-size: var(--mod-tabs-icon-size, var(--spectrum-tabs-icon-size)); + margin-block-start: var(--mod-tabs-top-to-icon, var(--spectrum-tabs-top-to-icon)); +} +.spectrum-Tabs-item .spectrum-Icon + .spectrum-Tabs-itemLabel { + margin-inline-start: var(--mod-tabs-icon-to-text, var(--spectrum-tabs-icon-to-text)); +} +.spectrum-Tabs-item:before { + content: ""; + position: absolute; + box-sizing: border-box; + block-size: calc(100% - var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text))); + inline-size: calc(100% + var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * 2); + inset-block-start: calc(var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text)) / 2); + inset-inline-start: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); + inset-inline-end: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); + border: var(--mod-tabs-focus-indicator-width, var(--spectrum-tabs-focus-indicator-width)) solid transparent; + border-radius: var(--mod-tabs-focus-indicator-border-radius, var(--spectrum-tabs-focus-indicator-border-radius)); + pointer-events: none; +} +@media (hover: hover) { + .spectrum-Tabs-item:hover { + color: var(--highcontrast-tabs-color-hover, var(--mod-tabs-color-hover, var(--spectrum-tabs-color-hover))); + } +} +.spectrum-Tabs-item.is-selected { + color: var(--highcontrast-tabs-color-selected, var(--mod-tabs-color-selected, var(--spectrum-tabs-color-selected))); +} +.spectrum-Tabs-item.is-disabled { + cursor: default; + color: var(--highcontrast-tabs-color-disabled, var(--mod-tabs-color-disabled, var(--spectrum-tabs-color-disabled))); +} +.spectrum-Tabs-item.is-disabled .spectrum-Tabs-itemLabel { + cursor: default; +} +.spectrum-Tabs-item:focus-visible { + color: var(--highcontrast-tabs-color-key-focus, var(--mod-tabs-color-key-focus, var(--spectrum-tabs-color-key-focus))); +} +.spectrum-Tabs-item:focus-visible:before { + border-color: var(--highcontrast-tabs-focus-indicator-color, var(--mod-tabs-focus-indicator-color, var(--spectrum-tabs-focus-indicator-color))); +} +.spectrum-Tabs-itemLabel { + cursor: pointer; + display: inline-block; + vertical-align: top; + font-family: var(--mod-tabs-font-family, var(--spectrum-tabs-font-family)); + font-style: var(--mod-tabs-font-style, var(--spectrum-tabs-font-style)); + font-size: var(--mod-tabs-font-size, var(--spectrum-tabs-font-size)); + font-weight: var(--mod-tabs-font-weight, var(--spectrum-tabs-font-weight)); + line-height: var(--mod-tabs-line-height, var(--spectrum-tabs-line-height)); + margin-block-start: var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text)); + margin-block-end: var(--mod-tabs-bottom-to-text, var(--spectrum-tabs-bottom-to-text)); + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Tabs-itemLabel:empty { + display: none; +} +.spectrum-Tabs-selectionIndicator { + position: absolute; + inset-inline-start: 0; + background-color: var(--highcontrast-tabs-selection-indicator-color, var(--mod-tabs-selection-indicator-color, var(--spectrum-tabs-selection-indicator-color))); + z-index: 0; + transition: transform var(--mod-tabs-animation-duration, var(--spectrum-tabs-animation-duration)) var(--mod-tabs-animation-ease, var(--spectrum-tabs-animation-ease)); + transform-origin: top left; + border-radius: var(--mod-tabs-divider-border-radius, var(--spectrum-tabs-divider-border-radius)); +} +.spectrum-Tabs--horizontal { + align-items: center; +} +.spectrum-Tabs--horizontal .spectrum-Tabs-item { + vertical-align: top; +} +.spectrum-Tabs--horizontal .spectrum-Tabs-item + :not(.spectrum-Tabs-selectionIndicator) { + margin-inline-start: var(--mod-tabs-item-horizontal-spacing, var(--spectrum-tabs-item-horizontal-spacing)); +} +.spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator { + position: absolute; + inset-block-end: 0; + block-size: var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)); +} +.spectrum-Tabs--horizontal.spectrum-Tabs--compact { + box-sizing: initial; + align-items: end; +} +.spectrum-Tabs--quiet { + display: inline-flex; + background: none; + border-color: transparent; +} +.spectrum-Tabs--quiet .spectrum-Tabs-selectionIndicator { + padding-inline-start: var(--mod-tabs-start-to-item-quiet, var(--spectrum-tabs-start-to-item-quiet)); +} +.spectrum-Tabs--vertical, +.spectrum-Tabs--vertical-right { + display: inline-flex; + flex-direction: column; + padding: 0; +} +.spectrum-Tabs--vertical-right.spectrum-Tabs--quiet, +.spectrum-Tabs--vertical.spectrum-Tabs--quiet { + border-color: transparent; +} +.spectrum-Tabs--vertical .spectrum-Tabs-item, +.spectrum-Tabs--vertical-right .spectrum-Tabs-item { + block-size: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); + line-height: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); + padding-block: 0; + margin-block-end: var(--mod-tabs-item-vertical-spacing, var(--spectrum-tabs-item-vertical-spacing)); + margin-inline-start: var(--mod-tabs-start-to-edge, var(--spectrum-tabs-start-to-edge)); + margin-inline-end: var(--mod-tabs-start-to-edge, var(--spectrum-tabs-start-to-edge)); +} +.spectrum-Tabs--vertical .spectrum-Tabs-item:before, +.spectrum-Tabs--vertical-right .spectrum-Tabs-item:before { + inset-inline-start: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); +} +.spectrum-Tabs--vertical .spectrum-Icon, +.spectrum-Tabs--vertical-right .spectrum-Icon { + line-height: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); +} +.spectrum-Tabs--vertical .spectrum-Tabs-selectionIndicator, +.spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator { + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; + inline-size: var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)); +} +.spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator { + inset-inline: auto 0; +} +@media (forced-colors: active) { + .spectrum-Tabs { + --highcontrast-tabs-divider-background-color: var(--spectrum-gray-500); + --highcontrast-tabs-selection-indicator-color: Highlight; + --highcontrast-tabs-focus-indicator-color: CanvasText; + --highcontrast-tabs-focus-indicator-background-color: Highlight; + --highcontrast-tabs-color: ButtonText; + --highcontrast-tabs-color-hover: ButtonText; + --highcontrast-tabs-color-selected: HighlightText; + --highcontrast-tabs-color-key-focus: ButtonText; + --highcontrast-tabs-color-disabled: GrayText; + forced-color-adjust: none; + } + .spectrum-Tabs .spectrum-Tabs-item .spectrum-Icon, + .spectrum-Tabs .spectrum-Tabs-item .spectrum-Tabs-itemLabel { + z-index: 1; + position: relative; + } + .spectrum-Tabs .is-selected:before { + background-color: var(--highcontrast-tabs-focus-indicator-background-color); + } + .spectrum-Tabs .is-selected:focus, + .spectrum-Tabs .is-selected:focus-visible { + color: var(--highcontrast-tabs-color-selected); + } + .spectrum-Tabs.spectrum-Tabs--vertical.spectrum-Tabs--compact .spectrum-Tabs-item:before { + block-size: 100%; + inset-block-start: 0; + } + .spectrum-Tabs.spectrum-Tabs--quiet { + background: linear-gradient(to var(--mod-tabs-list-background-direction, var(--spectrum-tabs-list-background-direction)), var(--highcontrast-tabs-divider-background-color, var(--mod-tabs-divider-background-color, var(--spectrum-tabs-divider-background-color))) 0 var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)), transparent var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); + } +} +.spectrum-Tabs { + --spectrum-tabs-font-weight: var(--system-spectrum-tabs-font-weight); +} +/*# sourceMappingURL=components/tabs/index.css.map */ diff --git a/components/tabs/index-theme.css b/components/tabs/index-theme.css new file mode 100644 index 0000000000..0016b8eb2d --- /dev/null +++ b/components/tabs/index-theme.css @@ -0,0 +1,20 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tabs-font-weight: var(--spectrum-default-font-weight); +} +.spectrum--express { + --system-spectrum-tabs-font-weight: var(--spectrum-bold-font-weight); +} +/*# sourceMappingURL=components/tabs/themes/express.css.map */ diff --git a/components/tabs/index-vars.css b/components/tabs/index-vars.css new file mode 100644 index 0000000000..3c18c8b5dd --- /dev/null +++ b/components/tabs/index-vars.css @@ -0,0 +1,323 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tabs-font-weight: var(--spectrum-default-font-weight); +} +.spectrum--express { + --system-spectrum-tabs-font-weight: var(--spectrum-bold-font-weight); +} +.spectrum-Tabs { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-medium); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-medium); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-medium); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-medium); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-medium); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-medium); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-medium); + --spectrum-tabs-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-tabs-color-selected: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-tabs-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-tabs-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-tabs-color-disabled: var(--spectrum-gray-500); + --spectrum-tabs-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-tabs-font-style: var(--spectrum-default-font-style); + --spectrum-tabs-font-size: var(--spectrum-font-size-100); + --spectrum-tabs-line-height: var(--spectrum-line-height-100); + --spectrum-tabs-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-tabs-focus-indicator-border-radius: var(--spectrum-corner-radius-100); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-medium); + --spectrum-tabs-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-tabs-selection-indicator-color: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-tabs-list-background-direction: top; + --spectrum-tabs-divider-background-color: var(--spectrum-gray-300); + --spectrum-tabs-divider-size: var(--spectrum-border-width-200); + --spectrum-tabs-divider-border-radius: 1px; + --spectrum-tabs-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-tabs-animation-ease: var(--spectrum-animation-ease-in-out); +} +.spectrum-Tabs.spectrum-Tabs--sizeS { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-small); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-small); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-small); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-small); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-small); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-small); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-75); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-small); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-small); + --spectrum-tabs-font-size: var(--spectrum-font-size-75); +} +.spectrum-Tabs.spectrum-Tabs--sizeL { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-large); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-large); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-large); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-large); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-large); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-large); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-200); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-large); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-large); + --spectrum-tabs-font-size: var(--spectrum-font-size-200); +} +.spectrum-Tabs.spectrum-Tabs--sizeXL { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-extra-large); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-extra-large); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-extra-large); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-extra-large); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-extra-large); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-extra-large); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-extra-large); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-extra-large); + --spectrum-tabs-font-size: var(--spectrum-font-size-300); +} +.spectrum-Tabs.spectrum-Tabs--emphasized { + --mod-tabs-color-selected: var(--mod-tabs-color-selected-emphasized, var(--spectrum-accent-content-color-default)); + --mod-tabs-color-hover: var(--mod-tabs-color-hover-emphasized, var(--spectrum-accent-content-color-hover)); + --mod-tabs-color-key-focus: var(--mod-tabs-color-key-focus-emphasized, var(--spectrum-accent-content-color-key-focus)); + --mod-tabs-selection-indicator-color: var(--mod-tabs-selection-indicator-color-emphasized, var(--spectrum-accent-content-color-default)); +} +.spectrum-Tabs--vertical { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, right); +} +.spectrum-Tabs--vertical-right { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical-right, left); +} +.spectrum-Tabs--vertical:dir(rtl), +[dir="rtl"] .spectrum-Tabs--vertical { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, left); +} +.spectrum-Tabs--vertical-right:dir(rtl), +[dir="rtl"] .spectrum-Tabs--vertical-right { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, right); +} +.spectrum-Tabs.spectrum-Tabs--compact { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-medium)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-medium)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-medium)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-medium)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeS { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-small)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-small)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-small)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-small)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeL { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-large)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-large)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-large)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-large)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeXL { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-extra-large)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-extra-large)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-extra-large)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-extra-large)); +} +.spectrum-Tabs { + display: flex; + position: relative; + z-index: 0; + margin: 0; + padding-block: 0; + vertical-align: top; + background: linear-gradient(to var(--mod-tabs-list-background-direction, var(--spectrum-tabs-list-background-direction)), var(--highcontrast-tabs-divider-background-color, var(--mod-tabs-divider-background-color, var(--spectrum-tabs-divider-background-color))) 0 var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)), transparent var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); +} +.spectrum-Tabs-item { + position: relative; + box-sizing: border-box; + block-size: calc(var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)) - var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); + z-index: 1; + -webkit-text-decoration: none; + text-decoration: none; + white-space: nowrap; + color: var(--highcontrast-tabs-color, var(--mod-tabs-color, var(--spectrum-tabs-color))); + transition: color var(--mod-tabs-animation-duration, var(--spectrum-tabs-animation-duration)) ease-out; + cursor: pointer; + outline: none; +} +.spectrum-Tabs-item .spectrum-Icon { + block-size: var(--mod-tabs-icon-size, var(--spectrum-tabs-icon-size)); + inline-size: var(--mod-tabs-icon-size, var(--spectrum-tabs-icon-size)); + margin-block-start: var(--mod-tabs-top-to-icon, var(--spectrum-tabs-top-to-icon)); +} +.spectrum-Tabs-item .spectrum-Icon + .spectrum-Tabs-itemLabel { + margin-inline-start: var(--mod-tabs-icon-to-text, var(--spectrum-tabs-icon-to-text)); +} +.spectrum-Tabs-item:before { + content: ""; + position: absolute; + box-sizing: border-box; + block-size: calc(100% - var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text))); + inline-size: calc(100% + var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * 2); + inset-block-start: calc(var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text)) / 2); + inset-inline-start: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); + inset-inline-end: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); + border: var(--mod-tabs-focus-indicator-width, var(--spectrum-tabs-focus-indicator-width)) solid transparent; + border-radius: var(--mod-tabs-focus-indicator-border-radius, var(--spectrum-tabs-focus-indicator-border-radius)); + pointer-events: none; +} +@media (hover: hover) { + .spectrum-Tabs-item:hover { + color: var(--highcontrast-tabs-color-hover, var(--mod-tabs-color-hover, var(--spectrum-tabs-color-hover))); + } +} +.spectrum-Tabs-item.is-selected { + color: var(--highcontrast-tabs-color-selected, var(--mod-tabs-color-selected, var(--spectrum-tabs-color-selected))); +} +.spectrum-Tabs-item.is-disabled { + cursor: default; + color: var(--highcontrast-tabs-color-disabled, var(--mod-tabs-color-disabled, var(--spectrum-tabs-color-disabled))); +} +.spectrum-Tabs-item.is-disabled .spectrum-Tabs-itemLabel { + cursor: default; +} +.spectrum-Tabs-item:focus-visible { + color: var(--highcontrast-tabs-color-key-focus, var(--mod-tabs-color-key-focus, var(--spectrum-tabs-color-key-focus))); +} +.spectrum-Tabs-item:focus-visible:before { + border-color: var(--highcontrast-tabs-focus-indicator-color, var(--mod-tabs-focus-indicator-color, var(--spectrum-tabs-focus-indicator-color))); +} +.spectrum-Tabs-itemLabel { + cursor: pointer; + display: inline-block; + vertical-align: top; + font-family: var(--mod-tabs-font-family, var(--spectrum-tabs-font-family)); + font-style: var(--mod-tabs-font-style, var(--spectrum-tabs-font-style)); + font-size: var(--mod-tabs-font-size, var(--spectrum-tabs-font-size)); + font-weight: var(--mod-tabs-font-weight, var(--spectrum-tabs-font-weight)); + line-height: var(--mod-tabs-line-height, var(--spectrum-tabs-line-height)); + margin-block-start: var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text)); + margin-block-end: var(--mod-tabs-bottom-to-text, var(--spectrum-tabs-bottom-to-text)); + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Tabs-itemLabel:empty { + display: none; +} +.spectrum-Tabs-selectionIndicator { + position: absolute; + inset-inline-start: 0; + background-color: var(--highcontrast-tabs-selection-indicator-color, var(--mod-tabs-selection-indicator-color, var(--spectrum-tabs-selection-indicator-color))); + z-index: 0; + transition: transform var(--mod-tabs-animation-duration, var(--spectrum-tabs-animation-duration)) var(--mod-tabs-animation-ease, var(--spectrum-tabs-animation-ease)); + transform-origin: top left; + border-radius: var(--mod-tabs-divider-border-radius, var(--spectrum-tabs-divider-border-radius)); +} +.spectrum-Tabs--horizontal { + align-items: center; +} +.spectrum-Tabs--horizontal .spectrum-Tabs-item { + vertical-align: top; +} +.spectrum-Tabs--horizontal .spectrum-Tabs-item + :not(.spectrum-Tabs-selectionIndicator) { + margin-inline-start: var(--mod-tabs-item-horizontal-spacing, var(--spectrum-tabs-item-horizontal-spacing)); +} +.spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator { + position: absolute; + inset-block-end: 0; + block-size: var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)); +} +.spectrum-Tabs--horizontal.spectrum-Tabs--compact { + box-sizing: initial; + align-items: end; +} +.spectrum-Tabs--quiet { + display: inline-flex; + background: none; + border-color: transparent; +} +.spectrum-Tabs--quiet .spectrum-Tabs-selectionIndicator { + padding-inline-start: var(--mod-tabs-start-to-item-quiet, var(--spectrum-tabs-start-to-item-quiet)); +} +.spectrum-Tabs--vertical, +.spectrum-Tabs--vertical-right { + display: inline-flex; + flex-direction: column; + padding: 0; +} +.spectrum-Tabs--vertical-right.spectrum-Tabs--quiet, +.spectrum-Tabs--vertical.spectrum-Tabs--quiet { + border-color: transparent; +} +.spectrum-Tabs--vertical .spectrum-Tabs-item, +.spectrum-Tabs--vertical-right .spectrum-Tabs-item { + block-size: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); + line-height: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); + padding-block: 0; + margin-block-end: var(--mod-tabs-item-vertical-spacing, var(--spectrum-tabs-item-vertical-spacing)); + margin-inline-start: var(--mod-tabs-start-to-edge, var(--spectrum-tabs-start-to-edge)); + margin-inline-end: var(--mod-tabs-start-to-edge, var(--spectrum-tabs-start-to-edge)); +} +.spectrum-Tabs--vertical .spectrum-Tabs-item:before, +.spectrum-Tabs--vertical-right .spectrum-Tabs-item:before { + inset-inline-start: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); +} +.spectrum-Tabs--vertical .spectrum-Icon, +.spectrum-Tabs--vertical-right .spectrum-Icon { + line-height: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); +} +.spectrum-Tabs--vertical .spectrum-Tabs-selectionIndicator, +.spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator { + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; + inline-size: var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)); +} +.spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator { + inset-inline: auto 0; +} +@media (forced-colors: active) { + .spectrum-Tabs { + --highcontrast-tabs-divider-background-color: var(--spectrum-gray-500); + --highcontrast-tabs-selection-indicator-color: Highlight; + --highcontrast-tabs-focus-indicator-color: CanvasText; + --highcontrast-tabs-focus-indicator-background-color: Highlight; + --highcontrast-tabs-color: ButtonText; + --highcontrast-tabs-color-hover: ButtonText; + --highcontrast-tabs-color-selected: HighlightText; + --highcontrast-tabs-color-key-focus: ButtonText; + --highcontrast-tabs-color-disabled: GrayText; + forced-color-adjust: none; + } + .spectrum-Tabs .spectrum-Tabs-item .spectrum-Icon, + .spectrum-Tabs .spectrum-Tabs-item .spectrum-Tabs-itemLabel { + z-index: 1; + position: relative; + } + .spectrum-Tabs .is-selected:before { + background-color: var(--highcontrast-tabs-focus-indicator-background-color); + } + .spectrum-Tabs .is-selected:focus, + .spectrum-Tabs .is-selected:focus-visible { + color: var(--highcontrast-tabs-color-selected); + } + .spectrum-Tabs.spectrum-Tabs--vertical.spectrum-Tabs--compact .spectrum-Tabs-item:before { + block-size: 100%; + inset-block-start: 0; + } + .spectrum-Tabs.spectrum-Tabs--quiet { + background: linear-gradient(to var(--mod-tabs-list-background-direction, var(--spectrum-tabs-list-background-direction)), var(--highcontrast-tabs-divider-background-color, var(--mod-tabs-divider-background-color, var(--spectrum-tabs-divider-background-color))) 0 var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)), transparent var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); + } +} +.spectrum-Tabs { + --spectrum-tabs-font-weight: var(--system-spectrum-tabs-font-weight); +} +/*# sourceMappingURL=components/tabs/index.css.map */ diff --git a/components/tabs/index.css b/components/tabs/index.css new file mode 100644 index 0000000000..3c18c8b5dd --- /dev/null +++ b/components/tabs/index.css @@ -0,0 +1,323 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tabs-font-weight: var(--spectrum-default-font-weight); +} +.spectrum--express { + --system-spectrum-tabs-font-weight: var(--spectrum-bold-font-weight); +} +.spectrum-Tabs { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-medium); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-medium); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-medium); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-medium); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-medium); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-medium); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-100); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-medium); + --spectrum-tabs-color: var(--spectrum-neutral-subdued-content-color-default); + --spectrum-tabs-color-selected: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-tabs-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --spectrum-tabs-color-key-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --spectrum-tabs-color-disabled: var(--spectrum-gray-500); + --spectrum-tabs-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-tabs-font-style: var(--spectrum-default-font-style); + --spectrum-tabs-font-size: var(--spectrum-font-size-100); + --spectrum-tabs-line-height: var(--spectrum-line-height-100); + --spectrum-tabs-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-tabs-focus-indicator-border-radius: var(--spectrum-corner-radius-100); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-medium); + --spectrum-tabs-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-tabs-selection-indicator-color: var(--spectrum-neutral-subdued-content-color-down); + --spectrum-tabs-list-background-direction: top; + --spectrum-tabs-divider-background-color: var(--spectrum-gray-300); + --spectrum-tabs-divider-size: var(--spectrum-border-width-200); + --spectrum-tabs-divider-border-radius: 1px; + --spectrum-tabs-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-tabs-animation-ease: var(--spectrum-animation-ease-in-out); +} +.spectrum-Tabs.spectrum-Tabs--sizeS { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-small); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-small); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-small); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-small); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-small); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-small); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-50); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-75); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-small); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-small); + --spectrum-tabs-font-size: var(--spectrum-font-size-75); +} +.spectrum-Tabs.spectrum-Tabs--sizeL { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-large); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-large); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-large); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-large); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-large); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-large); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-200); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-large); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-large); + --spectrum-tabs-font-size: var(--spectrum-font-size-200); +} +.spectrum-Tabs.spectrum-Tabs--sizeXL { + --spectrum-tabs-item-height: var(--spectrum-tab-item-height-extra-large); + --spectrum-tabs-item-horizontal-spacing: var(--spectrum-tab-item-to-tab-item-horizontal-extra-large); + --spectrum-tabs-item-vertical-spacing: var(--spectrum-tab-item-to-tab-item-vertical-extra-large); + --spectrum-tabs-start-to-edge: var(--spectrum-tab-item-start-to-edge-extra-large); + --spectrum-tabs-top-to-text: var(--spectrum-tab-item-top-to-text-extra-large); + --spectrum-tabs-bottom-to-text: var(--spectrum-tab-item-bottom-to-text-extra-large); + --spectrum-tabs-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-tabs-icon-to-text: var(--spectrum-text-to-visual-300); + --spectrum-tabs-top-to-icon: var(--spectrum-tab-item-top-to-workflow-icon-extra-large); + --spectrum-tabs-focus-indicator-gap: var(--spectrum-tab-item-focus-indicator-gap-extra-large); + --spectrum-tabs-font-size: var(--spectrum-font-size-300); +} +.spectrum-Tabs.spectrum-Tabs--emphasized { + --mod-tabs-color-selected: var(--mod-tabs-color-selected-emphasized, var(--spectrum-accent-content-color-default)); + --mod-tabs-color-hover: var(--mod-tabs-color-hover-emphasized, var(--spectrum-accent-content-color-hover)); + --mod-tabs-color-key-focus: var(--mod-tabs-color-key-focus-emphasized, var(--spectrum-accent-content-color-key-focus)); + --mod-tabs-selection-indicator-color: var(--mod-tabs-selection-indicator-color-emphasized, var(--spectrum-accent-content-color-default)); +} +.spectrum-Tabs--vertical { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, right); +} +.spectrum-Tabs--vertical-right { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical-right, left); +} +.spectrum-Tabs--vertical:dir(rtl), +[dir="rtl"] .spectrum-Tabs--vertical { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, left); +} +.spectrum-Tabs--vertical-right:dir(rtl), +[dir="rtl"] .spectrum-Tabs--vertical-right { + --mod-tabs-list-background-direction: var(--mod-tabs-list-background-direction-vertical, right); +} +.spectrum-Tabs.spectrum-Tabs--compact { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-medium)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-medium)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-medium)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-medium)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeS { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-small)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-small)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-small)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-small)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeL { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-large)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-large)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-large)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-large)); +} +.spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeXL { + --mod-tabs-item-height: var(--mod-tabs-item-height-compact, var(--spectrum-tab-item-compact-height-extra-large)); + --mod-tabs-top-to-text: var(--mod-tabs-top-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-extra-large)); + --mod-tabs-bottom-to-text: var(--mod-tabs-bottom-to-text-compact, var(--spectrum-tab-item-top-to-text-compact-extra-large)); + --mod-tabs-top-to-icon: var(--mod-tabs-top-to-icon-compact, var(--spectrum-tab-item-top-to-workflow-icon-compact-extra-large)); +} +.spectrum-Tabs { + display: flex; + position: relative; + z-index: 0; + margin: 0; + padding-block: 0; + vertical-align: top; + background: linear-gradient(to var(--mod-tabs-list-background-direction, var(--spectrum-tabs-list-background-direction)), var(--highcontrast-tabs-divider-background-color, var(--mod-tabs-divider-background-color, var(--spectrum-tabs-divider-background-color))) 0 var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)), transparent var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); +} +.spectrum-Tabs-item { + position: relative; + box-sizing: border-box; + block-size: calc(var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)) - var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); + z-index: 1; + -webkit-text-decoration: none; + text-decoration: none; + white-space: nowrap; + color: var(--highcontrast-tabs-color, var(--mod-tabs-color, var(--spectrum-tabs-color))); + transition: color var(--mod-tabs-animation-duration, var(--spectrum-tabs-animation-duration)) ease-out; + cursor: pointer; + outline: none; +} +.spectrum-Tabs-item .spectrum-Icon { + block-size: var(--mod-tabs-icon-size, var(--spectrum-tabs-icon-size)); + inline-size: var(--mod-tabs-icon-size, var(--spectrum-tabs-icon-size)); + margin-block-start: var(--mod-tabs-top-to-icon, var(--spectrum-tabs-top-to-icon)); +} +.spectrum-Tabs-item .spectrum-Icon + .spectrum-Tabs-itemLabel { + margin-inline-start: var(--mod-tabs-icon-to-text, var(--spectrum-tabs-icon-to-text)); +} +.spectrum-Tabs-item:before { + content: ""; + position: absolute; + box-sizing: border-box; + block-size: calc(100% - var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text))); + inline-size: calc(100% + var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * 2); + inset-block-start: calc(var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text)) / 2); + inset-inline-start: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); + inset-inline-end: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); + border: var(--mod-tabs-focus-indicator-width, var(--spectrum-tabs-focus-indicator-width)) solid transparent; + border-radius: var(--mod-tabs-focus-indicator-border-radius, var(--spectrum-tabs-focus-indicator-border-radius)); + pointer-events: none; +} +@media (hover: hover) { + .spectrum-Tabs-item:hover { + color: var(--highcontrast-tabs-color-hover, var(--mod-tabs-color-hover, var(--spectrum-tabs-color-hover))); + } +} +.spectrum-Tabs-item.is-selected { + color: var(--highcontrast-tabs-color-selected, var(--mod-tabs-color-selected, var(--spectrum-tabs-color-selected))); +} +.spectrum-Tabs-item.is-disabled { + cursor: default; + color: var(--highcontrast-tabs-color-disabled, var(--mod-tabs-color-disabled, var(--spectrum-tabs-color-disabled))); +} +.spectrum-Tabs-item.is-disabled .spectrum-Tabs-itemLabel { + cursor: default; +} +.spectrum-Tabs-item:focus-visible { + color: var(--highcontrast-tabs-color-key-focus, var(--mod-tabs-color-key-focus, var(--spectrum-tabs-color-key-focus))); +} +.spectrum-Tabs-item:focus-visible:before { + border-color: var(--highcontrast-tabs-focus-indicator-color, var(--mod-tabs-focus-indicator-color, var(--spectrum-tabs-focus-indicator-color))); +} +.spectrum-Tabs-itemLabel { + cursor: pointer; + display: inline-block; + vertical-align: top; + font-family: var(--mod-tabs-font-family, var(--spectrum-tabs-font-family)); + font-style: var(--mod-tabs-font-style, var(--spectrum-tabs-font-style)); + font-size: var(--mod-tabs-font-size, var(--spectrum-tabs-font-size)); + font-weight: var(--mod-tabs-font-weight, var(--spectrum-tabs-font-weight)); + line-height: var(--mod-tabs-line-height, var(--spectrum-tabs-line-height)); + margin-block-start: var(--mod-tabs-top-to-text, var(--spectrum-tabs-top-to-text)); + margin-block-end: var(--mod-tabs-bottom-to-text, var(--spectrum-tabs-bottom-to-text)); + -webkit-text-decoration: none; + text-decoration: none; +} +.spectrum-Tabs-itemLabel:empty { + display: none; +} +.spectrum-Tabs-selectionIndicator { + position: absolute; + inset-inline-start: 0; + background-color: var(--highcontrast-tabs-selection-indicator-color, var(--mod-tabs-selection-indicator-color, var(--spectrum-tabs-selection-indicator-color))); + z-index: 0; + transition: transform var(--mod-tabs-animation-duration, var(--spectrum-tabs-animation-duration)) var(--mod-tabs-animation-ease, var(--spectrum-tabs-animation-ease)); + transform-origin: top left; + border-radius: var(--mod-tabs-divider-border-radius, var(--spectrum-tabs-divider-border-radius)); +} +.spectrum-Tabs--horizontal { + align-items: center; +} +.spectrum-Tabs--horizontal .spectrum-Tabs-item { + vertical-align: top; +} +.spectrum-Tabs--horizontal .spectrum-Tabs-item + :not(.spectrum-Tabs-selectionIndicator) { + margin-inline-start: var(--mod-tabs-item-horizontal-spacing, var(--spectrum-tabs-item-horizontal-spacing)); +} +.spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator { + position: absolute; + inset-block-end: 0; + block-size: var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)); +} +.spectrum-Tabs--horizontal.spectrum-Tabs--compact { + box-sizing: initial; + align-items: end; +} +.spectrum-Tabs--quiet { + display: inline-flex; + background: none; + border-color: transparent; +} +.spectrum-Tabs--quiet .spectrum-Tabs-selectionIndicator { + padding-inline-start: var(--mod-tabs-start-to-item-quiet, var(--spectrum-tabs-start-to-item-quiet)); +} +.spectrum-Tabs--vertical, +.spectrum-Tabs--vertical-right { + display: inline-flex; + flex-direction: column; + padding: 0; +} +.spectrum-Tabs--vertical-right.spectrum-Tabs--quiet, +.spectrum-Tabs--vertical.spectrum-Tabs--quiet { + border-color: transparent; +} +.spectrum-Tabs--vertical .spectrum-Tabs-item, +.spectrum-Tabs--vertical-right .spectrum-Tabs-item { + block-size: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); + line-height: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); + padding-block: 0; + margin-block-end: var(--mod-tabs-item-vertical-spacing, var(--spectrum-tabs-item-vertical-spacing)); + margin-inline-start: var(--mod-tabs-start-to-edge, var(--spectrum-tabs-start-to-edge)); + margin-inline-end: var(--mod-tabs-start-to-edge, var(--spectrum-tabs-start-to-edge)); +} +.spectrum-Tabs--vertical .spectrum-Tabs-item:before, +.spectrum-Tabs--vertical-right .spectrum-Tabs-item:before { + inset-inline-start: calc(var(--mod-tabs-focus-indicator-gap, var(--spectrum-tabs-focus-indicator-gap)) * -1); +} +.spectrum-Tabs--vertical .spectrum-Icon, +.spectrum-Tabs--vertical-right .spectrum-Icon { + line-height: var(--mod-tabs-item-height, var(--spectrum-tabs-item-height)); +} +.spectrum-Tabs--vertical .spectrum-Tabs-selectionIndicator, +.spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator { + position: absolute; + inset-inline-start: 0; + inset-block-start: 0; + inline-size: var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)); +} +.spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator { + inset-inline: auto 0; +} +@media (forced-colors: active) { + .spectrum-Tabs { + --highcontrast-tabs-divider-background-color: var(--spectrum-gray-500); + --highcontrast-tabs-selection-indicator-color: Highlight; + --highcontrast-tabs-focus-indicator-color: CanvasText; + --highcontrast-tabs-focus-indicator-background-color: Highlight; + --highcontrast-tabs-color: ButtonText; + --highcontrast-tabs-color-hover: ButtonText; + --highcontrast-tabs-color-selected: HighlightText; + --highcontrast-tabs-color-key-focus: ButtonText; + --highcontrast-tabs-color-disabled: GrayText; + forced-color-adjust: none; + } + .spectrum-Tabs .spectrum-Tabs-item .spectrum-Icon, + .spectrum-Tabs .spectrum-Tabs-item .spectrum-Tabs-itemLabel { + z-index: 1; + position: relative; + } + .spectrum-Tabs .is-selected:before { + background-color: var(--highcontrast-tabs-focus-indicator-background-color); + } + .spectrum-Tabs .is-selected:focus, + .spectrum-Tabs .is-selected:focus-visible { + color: var(--highcontrast-tabs-color-selected); + } + .spectrum-Tabs.spectrum-Tabs--vertical.spectrum-Tabs--compact .spectrum-Tabs-item:before { + block-size: 100%; + inset-block-start: 0; + } + .spectrum-Tabs.spectrum-Tabs--quiet { + background: linear-gradient(to var(--mod-tabs-list-background-direction, var(--spectrum-tabs-list-background-direction)), var(--highcontrast-tabs-divider-background-color, var(--mod-tabs-divider-background-color, var(--spectrum-tabs-divider-background-color))) 0 var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size)), transparent var(--mod-tabs-divider-size, var(--spectrum-tabs-divider-size))); + } +} +.spectrum-Tabs { + --spectrum-tabs-font-weight: var(--system-spectrum-tabs-font-weight); +} +/*# sourceMappingURL=components/tabs/index.css.map */ diff --git a/components/tabs/metadata.json b/components/tabs/metadata.json new file mode 100644 index 0000000000..9153f6453c --- /dev/null +++ b/components/tabs/metadata.json @@ -0,0 +1,215 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Tabs", + ".spectrum-Tabs .is-selected:before", + ".spectrum-Tabs .is-selected:focus,\n\t.spectrum-Tabs .is-selected:focus-visible", + ".spectrum-Tabs .spectrum-Tabs-item .spectrum-Icon,\n\t.spectrum-Tabs .spectrum-Tabs-item .spectrum-Tabs-itemLabel", + ".spectrum-Tabs--horizontal", + ".spectrum-Tabs--horizontal .spectrum-Tabs-item", + ".spectrum-Tabs--horizontal .spectrum-Tabs-item + :not(.spectrum-Tabs-selectionIndicator)", + ".spectrum-Tabs--horizontal .spectrum-Tabs-selectionIndicator", + ".spectrum-Tabs--horizontal.spectrum-Tabs--compact", + ".spectrum-Tabs--quiet", + ".spectrum-Tabs--quiet .spectrum-Tabs-selectionIndicator", + ".spectrum-Tabs--vertical", + ".spectrum-Tabs--vertical .spectrum-Icon,\n.spectrum-Tabs--vertical-right .spectrum-Icon", + ".spectrum-Tabs--vertical .spectrum-Tabs-item,\n.spectrum-Tabs--vertical-right .spectrum-Tabs-item", + ".spectrum-Tabs--vertical .spectrum-Tabs-item:before,\n.spectrum-Tabs--vertical-right .spectrum-Tabs-item:before", + ".spectrum-Tabs--vertical .spectrum-Tabs-selectionIndicator,\n.spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator", + ".spectrum-Tabs--vertical,\n.spectrum-Tabs--vertical-right", + ".spectrum-Tabs--vertical-right", + ".spectrum-Tabs--vertical-right .spectrum-Tabs-selectionIndicator", + ".spectrum-Tabs--vertical-right.spectrum-Tabs--quiet,\n.spectrum-Tabs--vertical.spectrum-Tabs--quiet", + ".spectrum-Tabs--vertical-right:dir(rtl),\n[dir=\"rtl\"] .spectrum-Tabs--vertical-right", + ".spectrum-Tabs--vertical:dir(rtl),\n[dir=\"rtl\"] .spectrum-Tabs--vertical", + ".spectrum-Tabs-item", + ".spectrum-Tabs-item .spectrum-Icon", + ".spectrum-Tabs-item .spectrum-Icon + .spectrum-Tabs-itemLabel", + ".spectrum-Tabs-item.is-disabled", + ".spectrum-Tabs-item.is-disabled .spectrum-Tabs-itemLabel", + ".spectrum-Tabs-item.is-selected", + ".spectrum-Tabs-item:before", + ".spectrum-Tabs-item:focus-visible", + ".spectrum-Tabs-item:focus-visible:before", + ".spectrum-Tabs-item:hover", + ".spectrum-Tabs-itemLabel", + ".spectrum-Tabs-itemLabel:empty", + ".spectrum-Tabs-selectionIndicator", + ".spectrum-Tabs.spectrum-Tabs--compact", + ".spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeL", + ".spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeS", + ".spectrum-Tabs.spectrum-Tabs--compact.spectrum-Tabs--sizeXL", + ".spectrum-Tabs.spectrum-Tabs--emphasized", + ".spectrum-Tabs.spectrum-Tabs--quiet", + ".spectrum-Tabs.spectrum-Tabs--sizeL", + ".spectrum-Tabs.spectrum-Tabs--sizeS", + ".spectrum-Tabs.spectrum-Tabs--sizeXL", + ".spectrum-Tabs.spectrum-Tabs--vertical.spectrum-Tabs--compact .spectrum-Tabs-item:before" + ], + "mods": [ + "--mod-tabs-animation-duration", + "--mod-tabs-animation-ease", + "--mod-tabs-bottom-to-text", + "--mod-tabs-bottom-to-text-compact", + "--mod-tabs-color", + "--mod-tabs-color-disabled", + "--mod-tabs-color-hover", + "--mod-tabs-color-hover-emphasized", + "--mod-tabs-color-key-focus", + "--mod-tabs-color-key-focus-emphasized", + "--mod-tabs-color-selected", + "--mod-tabs-color-selected-emphasized", + "--mod-tabs-divider-background-color", + "--mod-tabs-divider-border-radius", + "--mod-tabs-divider-size", + "--mod-tabs-focus-indicator-border-radius", + "--mod-tabs-focus-indicator-color", + "--mod-tabs-focus-indicator-gap", + "--mod-tabs-focus-indicator-width", + "--mod-tabs-font-family", + "--mod-tabs-font-size", + "--mod-tabs-font-style", + "--mod-tabs-font-weight", + "--mod-tabs-icon-size", + "--mod-tabs-icon-to-text", + "--mod-tabs-item-height", + "--mod-tabs-item-height-compact", + "--mod-tabs-item-horizontal-spacing", + "--mod-tabs-item-vertical-spacing", + "--mod-tabs-line-height", + "--mod-tabs-list-background-direction", + "--mod-tabs-list-background-direction-vertical", + "--mod-tabs-list-background-direction-vertical-right", + "--mod-tabs-selection-indicator-color", + "--mod-tabs-selection-indicator-color-emphasized", + "--mod-tabs-start-to-edge", + "--mod-tabs-start-to-item-quiet", + "--mod-tabs-top-to-icon", + "--mod-tabs-top-to-icon-compact", + "--mod-tabs-top-to-text", + "--mod-tabs-top-to-text-compact" + ], + "spectrum": [ + "--spectrum-accent-content-color-default", + "--spectrum-accent-content-color-hover", + "--spectrum-accent-content-color-key-focus", + "--spectrum-animation-duration-100", + "--spectrum-animation-ease-in-out", + "--spectrum-bold-font-weight", + "--spectrum-border-width-200", + "--spectrum-corner-radius-100", + "--spectrum-default-font-style", + "--spectrum-default-font-weight", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-300", + "--spectrum-gray-500", + "--spectrum-line-height-100", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-neutral-subdued-content-color-down", + "--spectrum-neutral-subdued-content-color-hover", + "--spectrum-neutral-subdued-content-color-key-focus", + "--spectrum-sans-font-family-stack", + "--spectrum-tab-item-bottom-to-text-extra-large", + "--spectrum-tab-item-bottom-to-text-large", + "--spectrum-tab-item-bottom-to-text-medium", + "--spectrum-tab-item-bottom-to-text-small", + "--spectrum-tab-item-compact-height-extra-large", + "--spectrum-tab-item-compact-height-large", + "--spectrum-tab-item-compact-height-medium", + "--spectrum-tab-item-compact-height-small", + "--spectrum-tab-item-focus-indicator-gap-extra-large", + "--spectrum-tab-item-focus-indicator-gap-large", + "--spectrum-tab-item-focus-indicator-gap-medium", + "--spectrum-tab-item-focus-indicator-gap-small", + "--spectrum-tab-item-height-extra-large", + "--spectrum-tab-item-height-large", + "--spectrum-tab-item-height-medium", + "--spectrum-tab-item-height-small", + "--spectrum-tab-item-start-to-edge-extra-large", + "--spectrum-tab-item-start-to-edge-large", + "--spectrum-tab-item-start-to-edge-medium", + "--spectrum-tab-item-start-to-edge-small", + "--spectrum-tab-item-to-tab-item-horizontal-extra-large", + "--spectrum-tab-item-to-tab-item-horizontal-large", + "--spectrum-tab-item-to-tab-item-horizontal-medium", + "--spectrum-tab-item-to-tab-item-horizontal-small", + "--spectrum-tab-item-to-tab-item-vertical-extra-large", + "--spectrum-tab-item-to-tab-item-vertical-large", + "--spectrum-tab-item-to-tab-item-vertical-medium", + "--spectrum-tab-item-to-tab-item-vertical-small", + "--spectrum-tab-item-top-to-text-compact-extra-large", + "--spectrum-tab-item-top-to-text-compact-large", + "--spectrum-tab-item-top-to-text-compact-medium", + "--spectrum-tab-item-top-to-text-compact-small", + "--spectrum-tab-item-top-to-text-extra-large", + "--spectrum-tab-item-top-to-text-large", + "--spectrum-tab-item-top-to-text-medium", + "--spectrum-tab-item-top-to-text-small", + "--spectrum-tab-item-top-to-workflow-icon-compact-extra-large", + "--spectrum-tab-item-top-to-workflow-icon-compact-large", + "--spectrum-tab-item-top-to-workflow-icon-compact-medium", + "--spectrum-tab-item-top-to-workflow-icon-compact-small", + "--spectrum-tab-item-top-to-workflow-icon-extra-large", + "--spectrum-tab-item-top-to-workflow-icon-large", + "--spectrum-tab-item-top-to-workflow-icon-medium", + "--spectrum-tab-item-top-to-workflow-icon-small", + "--spectrum-tabs-animation-duration", + "--spectrum-tabs-animation-ease", + "--spectrum-tabs-bottom-to-text", + "--spectrum-tabs-color", + "--spectrum-tabs-color-disabled", + "--spectrum-tabs-color-hover", + "--spectrum-tabs-color-key-focus", + "--spectrum-tabs-color-selected", + "--spectrum-tabs-divider-background-color", + "--spectrum-tabs-divider-border-radius", + "--spectrum-tabs-divider-size", + "--spectrum-tabs-focus-indicator-border-radius", + "--spectrum-tabs-focus-indicator-color", + "--spectrum-tabs-focus-indicator-gap", + "--spectrum-tabs-focus-indicator-width", + "--spectrum-tabs-font-family", + "--spectrum-tabs-font-size", + "--spectrum-tabs-font-style", + "--spectrum-tabs-font-weight", + "--spectrum-tabs-icon-size", + "--spectrum-tabs-icon-to-text", + "--spectrum-tabs-item-height", + "--spectrum-tabs-item-horizontal-spacing", + "--spectrum-tabs-item-vertical-spacing", + "--spectrum-tabs-line-height", + "--spectrum-tabs-list-background-direction", + "--spectrum-tabs-selection-indicator-color", + "--spectrum-tabs-start-to-edge", + "--spectrum-tabs-start-to-item-quiet", + "--spectrum-tabs-top-to-icon", + "--spectrum-tabs-top-to-text", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-300", + "--spectrum-text-to-visual-75", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-50", + "--spectrum-workflow-icon-size-75" + ], + "system": ["--system-spectrum-tabs-font-weight"], + "a11y": [ + "--highcontrast-tabs-color", + "--highcontrast-tabs-color-disabled", + "--highcontrast-tabs-color-hover", + "--highcontrast-tabs-color-key-focus", + "--highcontrast-tabs-color-selected", + "--highcontrast-tabs-divider-background-color", + "--highcontrast-tabs-focus-indicator-background-color", + "--highcontrast-tabs-focus-indicator-color", + "--highcontrast-tabs-selection-indicator-color" + ] +} diff --git a/components/tabs/package.json b/components/tabs/package.json new file mode 100644 index 0000000000..0db257da30 --- /dev/null +++ b/components/tabs/package.json @@ -0,0 +1,50 @@ +{ + "name": "@spectrum-css/tabs", + "version": "5.1.1", + "description": "The Spectrum CSS tabs component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/tabs", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/tabs" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/icon": ">=7", + "@spectrum-css/menu": ">=7", + "@spectrum-css/picker": ">=8", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/menu": "workspace:^", + "@spectrum-css/picker": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/tabs/template.js b/components/tabs/template.js new file mode 100644 index 0000000000..d332474bac --- /dev/null +++ b/components/tabs/template.js @@ -0,0 +1,131 @@ +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Template as Menu } from "@spectrum-css/menu/stories/template.js"; +import { Template as Picker } from "@spectrum-css/picker/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { repeat } from "lit/directives/repeat.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Tabs", + customClasses = [], + size = "m", + orientation = "horizontal", + isQuiet = false, + isOpen = false, + isEmphasized = false, + isCompact = false, + iconOnly = false, + customStyles = {}, + content = [], +} = {}, context = {}) => { + if (!content || !content.length) { + console.warn("Tabs: content required"); + return html``; + } + + const isVertical = orientation === "vertical"; + const isHorizontal = orientation === "horizontal"; + const isOverflow = orientation === "overflow"; + + const selectionIndicator = (isSelected) => when( + isSelected, + () => html` +
    ` + ); + + return html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + > + ${when(!isOverflow, () => repeat( + content, + (item) => item.id, + (item) => { + if (typeof item === "object") { + return html` +
    + ${when(item.icon, () => + Icon({ + iconName: item.icon, + size + }, context) + )} + ${when(item.label && !iconOnly, () => html` + + ${item.label} + + `)} + ${selectionIndicator(item.isSelected)} +
    + `; + } + else { + return item; + } + } + ), () => html` + ${Picker({ + isQuiet: true, + size, + isOpen, + placeholder: !iconOnly ? content?.[0].label : Icon({ iconName: content?.[0].icon, size }, context), + name: content?.[0].label, + id: "tab-selector", + customPopoverStyles: { + insetBlockStart: "24px", + }, + content: [ + () => Menu({ + selectionMode: "none", + size, + role: "listbox", + subrole: "option", + customStyles: { minWidth: "max-content" }, + items: content.filter((_, idx) => idx !== 0).map(item => { + return { + ...item, + iconName: item.icon, + label: !iconOnly ? item.label : undefined, + }; + }), + }, context), + ] + }, context)} + ${selectionIndicator(true)} + `)} +
    + `; +}; diff --git a/components/tabs/themes/express.css b/components/tabs/themes/express.css new file mode 100644 index 0000000000..01de07ecd8 --- /dev/null +++ b/components/tabs/themes/express.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-tabs-font-weight: var(--spectrum-bold-font-weight); +} +/*# sourceMappingURL=components/tabs/themes/express.css.map */ diff --git a/components/tabs/themes/spectrum.css b/components/tabs/themes/spectrum.css new file mode 100644 index 0000000000..188247ed89 --- /dev/null +++ b/components/tabs/themes/spectrum.css @@ -0,0 +1,17 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tabs-font-weight: var(--spectrum-default-font-weight); +} +/*# sourceMappingURL=components/tabs/themes/spectrum.css.map */ diff --git a/components/tag/index-base.css b/components/tag/index-base.css new file mode 100644 index 0000000000..cd1ed32221 --- /dev/null +++ b/components/tag/index-base.css @@ -0,0 +1,403 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Tag { + --spectrum-avatar-opacity-disabled: 0.3; + --spectrum-tag-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-tag-border-width: var(--spectrum-border-width-100); + --spectrum-tag-focus-ring-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-tag-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-tag-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-tag-label-line-height: var(--spectrum-line-height-100); + --spectrum-tag-label-font-weight: var(--spectrum-regular-font-weight); + --spectrum-tag-content-color-selected: var(--spectrum-gray-50); + --spectrum-tag-background-color-selected: var(--spectrum-neutral-background-color-selected-default); + --spectrum-tag-background-color-selected-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-tag-background-color-selected-active: var(--spectrum-neutral-background-color-selected-down); + --spectrum-tag-background-color-selected-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-tag-border-color-invalid: var(--spectrum-negative-color-900); + --spectrum-tag-border-color-invalid-hover: var(--spectrum-negative-color-1000); + --spectrum-tag-border-color-invalid-active: var(--spectrum-negative-color-1100); + --spectrum-tag-border-color-invalid-focus: var(--spectrum-negative-color-1000); + --spectrum-tag-content-color-invalid: var(--spectrum-negative-content-color-default); + --spectrum-tag-content-color-invalid-hover: var(--spectrum-negative-content-color-hover); + --spectrum-tag-content-color-invalid-active: var(--spectrum-negative-content-color-down); + --spectrum-tag-content-color-invalid-focus: var(--spectrum-negative-content-color-key-focus); + --spectrum-tag-border-color-invalid-selected: var(--spectrum-negative-background-color-default); + --spectrum-tag-border-color-invalid-selected-hover: var(--spectrum-negative-background-color-hover); + --spectrum-tag-border-color-invalid-selected-focus: var(--spectrum-negative-background-color-down); + --spectrum-tag-border-color-invalid-selected-active: var(--spectrum-negative-background-color-key-focus); + --spectrum-tag-background-color-invalid-selected: var(--spectrum-negative-background-color-default); + --spectrum-tag-background-color-invalid-selected-hover: var(--spectrum-negative-background-color-hover); + --spectrum-tag-background-color-invalid-selected-active: var(--spectrum-negative-background-color-down); + --spectrum-tag-background-color-invalid-selected-focus: var(--spectrum-negative-background-color-key-focus); + --spectrum-tag-content-color-invalid-selected: var(--spectrum-white); + --spectrum-tag-border-color-emphasized: var(--spectrum-accent-background-color-default); + --spectrum-tag-border-color-emphasized-hover: var(--spectrum-accent-background-color-hover); + --spectrum-tag-border-color-emphasized-active: var(--spectrum-accent-background-color-down); + --spectrum-tag-border-color-emphasized-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-tag-background-color-emphasized: var(--spectrum-accent-background-color-default); + --spectrum-tag-background-color-emphasized-hover: var(--spectrum-accent-background-color-hover); + --spectrum-tag-background-color-emphasized-active: var(--spectrum-accent-background-color-down); + --spectrum-tag-background-color-emphasized-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-tag-content-color-emphasized: var(--spectrum-white); + --spectrum-tag-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-100); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-100); + --spectrum-tag-height: var(--spectrum-component-height-100); + --spectrum-tag-font-size: var(--spectrum-font-size-100); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-medium); +} +.spectrum-Tag--sizeS { + --spectrum-tag-height: var(--spectrum-component-height-75); + --spectrum-tag-font-size: var(--spectrum-font-size-75); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-75); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-small); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-75); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-small); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-small); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-75); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-75); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-small-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-small-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-small-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-small-clear-button-spacing-inline-end); +} +.spectrum-Tag--sizeM { + --spectrum-tag-height: var(--spectrum-component-height-100); + --spectrum-tag-font-size: var(--spectrum-font-size-100); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-100); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-medium); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-100); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-medium-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-medium-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-medium-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-medium-clear-button-spacing-inline-end); +} +.spectrum-Tag--sizeL { + --spectrum-tag-height: var(--spectrum-component-height-200); + --spectrum-tag-font-size: var(--spectrum-font-size-200); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-200); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-large); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-200); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-large); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-large); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-200); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-200); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-large-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-large-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-large-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-large-clear-button-spacing-inline-end); +} +.spectrum-Tag { + border-color: var(--highcontrast-tag-border-color, var(--mod-tag-border-color, var(--spectrum-tag-border-color))); + background-color: var(--highcontrast-tag-background-color, var(--mod-tag-background-color, var(--spectrum-tag-background-color))); + color: var(--highcontrast-tag-content-color, var(--mod-tag-content-color, var(--spectrum-tag-content-color))); + border-radius: var(--mod-tag-corner-radius, var(--spectrum-tag-corner-radius)); + border-width: var(--mod-tag-border-width, var(--spectrum-tag-border-width)); + border-style: solid; + padding-inline-start: calc(var(--mod-tag-spacing-inline-start, var(--spectrum-tag-spacing-inline-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + padding-inline-end: 0; + block-size: var(--mod-tag-height, var(--spectrum-tag-height)); + position: relative; + display: inline-flex; + align-items: center; + box-sizing: border-box; + vertical-align: bottom; + max-inline-size: 100%; + outline: none; + -webkit-user-select: none; + user-select: none; + transition: + border-color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + box-shadow var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + background-color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out; +} +.spectrum-Tag .spectrum-Tag-itemIcon { + block-size: var(--mod-tag-icon-size, var(--spectrum-tag-icon-size)); + inline-size: var(--mod-tag-icon-size, var(--spectrum-tag-icon-size)); + margin-block-start: calc(var(--mod-tag-icon-spacing-block-start, var(--spectrum-tag-icon-spacing-block-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-block-end: calc(var(--mod-tag-icon-spacing-block-end, var(--spectrum-tag-icon-spacing-block-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: var(--mod-tag-icon-spacing-inline-end, var(--spectrum-tag-icon-spacing-inline-end)); +} +.spectrum-Tag .spectrum-Avatar { + margin-block-start: calc(var(--mod-tag-avatar-spacing-block-start, var(--spectrum-tag-avatar-spacing-block-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-block-end: calc(var(--mod-tag-avatar-spacing-block-end, var(--spectrum-tag-avatar-spacing-block-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: var(--mod-tag-avatar-spacing-inline-end, var(--spectrum-tag-avatar-spacing-inline-end)); +} +.spectrum-Tag .spectrum-Tag-clearButton { + box-sizing: border-box; + padding-block-start: calc(var(--mod-tag-clear-button-spacing-block, var(--spectrum-tag-clear-button-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + padding-block-end: calc(var(--mod-tag-clear-button-spacing-block, var(--spectrum-tag-clear-button-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-start: calc(var(--mod-tag-clear-button-spacing-inline-start, var(--spectrum-tag-clear-button-spacing-inline-start)) + var(--mod-tag-label-spacing-inline-end, var(--spectrum-tag-label-spacing-inline-end)) * -1); + margin-inline-end: calc(var(--mod-tag-clear-button-spacing-inline-end, var(--spectrum-tag-clear-button-spacing-inline-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + color: currentColor; + --mod-clear-button-width: fit-content; + --spectrum-clearbutton-fill-size: fit-content; + --spectrum-clearbutton-fill-background-color: transparent; +} +.spectrum-Tag .spectrum-Tag-clearButton .spectrum-ClearButton-fill { + background-color: var(--mod-clearbutton-fill-background-color, var(--spectrum-clearbutton-fill-background-color)); + inline-size: var(--mod-clearbutton-fill-size, var(--spectrum-clearbutton-fill-size)); + block-size: var(--mod-clearbutton-fill-size, var(--spectrum-clearbutton-fill-size)); +} +.spectrum-Tag .spectrum-Tag-itemLabel { + block-size: 100%; + box-sizing: border-box; + line-height: var(--mod-tag-label-line-height, var(--spectrum-tag-label-line-height)); + font-weight: var(--mod-tag-label-font-weight, var(--spectrum-tag-label-font-weight)); + flex: 1 1 auto; + font-size: var(--mod-tag-font-size, var(--spectrum-tag-font-size)); + cursor: default; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-block-start: calc(var(--mod-tag-label-spacing-block, var(--spectrum-tag-label-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: calc(var(--mod-tag-label-spacing-inline-end, var(--spectrum-tag-label-spacing-inline-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); +} +.spectrum-Tag:active { + border-color: var(--highcontrast-tag-border-color-active, var(--mod-tag-border-color-active, var(--spectrum-tag-border-color-active))); + background-color: var(--highcontrast-tag-background-color-active, var(--mod-tag-background-color-active, var(--spectrum-tag-background-color-active))); + color: var(--highcontrast-tag-content-color-active, var(--mod-tag-content-color-active, var(--spectrum-tag-content-color-active))); +} +.spectrum-Tag.is-focused, +.spectrum-Tag:focus-visible { + border-color: var(--highcontrast-tag-border-color-focus, var(--mod-tag-border-color-focus, var(--spectrum-tag-border-color-focus))); + background-color: var(--highcontrast-tag-background-color-focus, var(--mod-tag-background-color-focus, var(--spectrum-tag-background-color-focus))); + color: var(--highcontrast-tag-content-color-focus, var(--mod-tag-content-color-focus, var(--spectrum-tag-content-color-focus))); +} +.spectrum-Tag.is-focused:after, +.spectrum-Tag:focus-visible:after { + content: ""; + display: inline-block; + position: absolute; + inset-block-start: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-block-end: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-inline-start: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-inline-end: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + border-color: var(--highcontrast-tag-focus-ring-color, var(--mod-tag-focus-ring-color, var(--spectrum-tag-focus-ring-color))); + border-radius: calc(var(--mod-tag-corner-radius, var(--spectrum-tag-corner-radius)) + var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) + var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + border-width: var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness)); + border-style: solid; + pointer-events: none; +} +.spectrum-Tag.is-selected { + border-color: var(--highcontrast-tag-border-color-selected, var(--mod-tag-border-color-selected, var(--spectrum-tag-border-color-selected))); + background-color: var(--highcontrast-tag-background-color-selected, var(--mod-tag-background-color-selected, var(--spectrum-tag-background-color-selected))); + color: var(--highcontrast-tag-content-color-selected, var(--mod-tag-content-color-selected, var(--spectrum-tag-content-color-selected))); +} +.spectrum-Tag.is-selected:active { + border-color: var(--highcontrast-tag-border-color-selected-active, var(--mod-tag-border-color-selected-active, var(--spectrum-tag-border-color-selected-active))); + background-color: var(--highcontrast-tag-background-color-selected-active, var(--mod-tag-background-color-selected-active, var(--spectrum-tag-background-color-selected-active))); +} +.spectrum-Tag.is-selected.is-focused, +.spectrum-Tag.is-selected:focus-visible { + border-color: var(--highcontrast-tag-border-color-selected-focus, var(--mod-tag-border-color-selected-focus, var(--spectrum-tag-border-color-selected-focus))); + background-color: var(--highcontrast-tag-background-color-selected-focus, var(--mod-tag-background-color-selected-focus, var(--spectrum-tag-background-color-selected-focus))); +} +.spectrum-Tag.is-invalid { + border-color: var(--highcontrast-tag-border-color-invalid, var(--mod-tag-border-color-invalid, var(--spectrum-tag-border-color-invalid))); + color: var(--highcontrast-tag-content-color-invalid, var(--mod-tag-content-color-invalid, var(--spectrum-tag-content-color-invalid))); +} +.spectrum-Tag.is-invalid:active { + border-color: var(--highcontrast-tag-border-color-invalid-active, var(--mod-tag-border-color-invalid-active, var(--spectrum-tag-border-color-invalid-active))); + color: var(--highcontrast-tag-content-color-invalid-active, var(--mod-tag-content-color-invalid-active, var(--spectrum-tag-content-color-invalid-active))); +} +.spectrum-Tag.is-invalid.is-focused, +.spectrum-Tag.is-invalid:focus-visible { + border-color: var(--highcontrast-tag-border-color-invalid-focus, var(--mod-tag-border-color-invalid-focus, var(--spectrum-tag-border-color-invalid-focus))); + color: var(--highcontrast-tag-content-color-invalid-focus, var(--mod-tag-content-color-invalid-focus, var(--spectrum-tag-content-color-invalid-focus))); +} +.spectrum-Tag.is-invalid.is-selected { + border-color: var(--highcontrast-tag-border-color-invalid-selected, var(--mod-tag-border-color-invalid-selected, var(--spectrum-tag-border-color-invalid-selected))); + background-color: var(--highcontrast-tag-background-color-invalid-selected, var(--mod-tag-background-color-invalid-selected, var(--spectrum-tag-background-color-invalid-selected))); + color: var(--highcontrast-tag-content-color-invalid-selected, var(--mod-tag-content-color-invalid-selected, var(--spectrum-tag-content-color-invalid-selected))); +} +.spectrum-Tag.is-invalid.is-selected:active { + border-color: var(--highcontrast-tag-border-color-invalid-selected-active, var(--mod-tag-border-color-invalid-selected-active, var(--spectrum-tag-border-color-invalid-selected-active))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-active, var(--mod-tag-background-color-invalid-selected-active, var(--spectrum-tag-background-color-invalid-selected-active))); +} +.spectrum-Tag.is-invalid.is-selected.is-focused, +.spectrum-Tag.is-invalid.is-selected:focus-visible { + border-color: var(--highcontrast-tag-border-color-invalid-selected-focus, var(--mod-tag-border-color-invalid-selected-focus, var(--spectrum-tag-border-color-invalid-selected-focus))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-focus, var(--mod-tag-background-color-invalid-selected-focus, var(--spectrum-tag-background-color-invalid-selected-focus))); +} +.spectrum-Tag.is-emphasized { + border-color: var(--highcontrast-tag-border-color-emphasized, var(--mod-tag-border-color-emphasized, var(--spectrum-tag-border-color-emphasized))); + background-color: var(--highcontrast-tag-background-color-emphasized, var(--mod-tag-background-color-emphasized, var(--spectrum-tag-background-color-emphasized))); + color: var(--highcontrast-tag-content-color-emphasized, var(--mod-tag-content-color-emphasized, var(--spectrum-tag-content-color-emphasized))); +} +@media (hover: hover) { + .spectrum-Tag:hover { + border-color: var(--highcontrast-tag-border-color-hover, var(--mod-tag-border-color-hover, var(--spectrum-tag-border-color-hover))); + background-color: var(--highcontrast-tag-background-color-hover, var(--mod-tag-background-color-hover, var(--spectrum-tag-background-color-hover))); + color: var(--highcontrast-tag-content-color-hover, var(--mod-tag-content-color-hover, var(--spectrum-tag-content-color-hover))); + } + .spectrum-Tag.is-selected:hover { + border-color: var(--highcontrast-tag-border-color-selected-hover, var(--mod-tag-border-color-selected-hover, var(--spectrum-tag-border-color-selected-hover))); + background-color: var(--highcontrast-tag-background-color-selected-hover, var(--mod-tag-background-color-selected-hover, var(--spectrum-tag-background-color-selected-hover))); + color: var(--highcontrast-tag-content-color-selected, var(--mod-tag-content-color-selected, var(--spectrum-tag-content-color-selected))); + } + .spectrum-Tag.is-invalid:hover { + border-color: var(--highcontrast-tag-border-color-invalid-hover, var(--mod-tag-border-color-invalid-hover, var(--spectrum-tag-border-color-invalid-hover))); + color: var(--highcontrast-tag-content-color-invalid-hover, var(--mod-tag-content-color-invalid-hover, var(--spectrum-tag-content-color-invalid-hover))); + } + .spectrum-Tag.is-invalid.is-selected:hover { + border-color: var(--highcontrast-tag-border-color-invalid-selected-hover, var(--mod-tag-border-color-invalid-selected-hover, var(--spectrum-tag-border-color-invalid-selected-hover))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-hover, var(--mod-tag-background-color-invalid-selected-hover, var(--spectrum-tag-background-color-invalid-selected-hover))); + color: var(--highcontrast-tag-content-color-invalid-selected, var(--mod-tag-content-color-invalid-selected, var(--spectrum-tag-content-color-invalid-selected))); + } + .spectrum-Tag.is-emphasized:hover { + border-color: var(--highcontrast-tag-border-color-emphasized-hover, var(--mod-tag-border-color-emphasized-hover, var(--spectrum-tag-border-color-emphasized-hover))); + background-color: var(--highcontrast-tag-background-color-emphasized-hover, var(--mod-tag-background-color-emphasized-hover, var(--spectrum-tag-background-color-emphasized-hover))); + color: var(--highcontrast-tag-content-color-emphasized, var(--mod-tag-content-color-emphasized, var(--spectrum-tag-content-color-emphasized))); + } +} +.spectrum-Tag.is-emphasized:active { + border-color: var(--highcontrast-tag-border-color-emphasized-active, var(--mod-tag-border-color-emphasized-active, var(--spectrum-tag-border-color-emphasized-active))); + background-color: var(--highcontrast-tag-background-color-emphasized-active, var(--mod-tag-background-color-emphasized-active, var(--spectrum-tag-background-color-emphasized-active))); +} +.spectrum-Tag.is-emphasized.is-focused, +.spectrum-Tag.is-emphasized:focus-visible { + border-color: var(--highcontrast-tag-border-color-emphasized-focus, var(--mod-tag-border-color-emphasized-focus, var(--spectrum-tag-border-color-emphasized-focus))); + background-color: var(--highcontrast-tag-background-color-emphasized-focus, var(--mod-tag-background-color-emphasized-focus, var(--spectrum-tag-background-color-emphasized-focus))); +} +.spectrum-Tag.is-disabled { + border-color: var(--highcontrast-tag-border-color-disabled, var(--mod-tag-border-color-disabled, var(--spectrum-tag-border-color-disabled))); + background-color: var(--highcontrast-tag-background-color-disabled, var(--mod-tag-background-color-disabled, var(--spectrum-tag-background-color-disabled))); + color: var(--highcontrast-tag-content-color-disabled, var(--mod-tag-content-color-disabled, var(--spectrum-tag-content-color-disabled))); + pointer-events: none; +} +.spectrum-Tag.is-disabled .spectrum-Avatar { + opacity: var(--mod-avatar-opacity-disabled, var(--spectrum-avatar-opacity-disabled)); +} +@media (forced-colors: active) { + .spectrum-Tag { + forced-color-adjust: none; + --highcontrast-tag-border-color: ButtonText; + --highcontrast-tag-border-color-hover: ButtonText; + --highcontrast-tag-border-color-active: ButtonText; + --highcontrast-tag-border-color-focus: Highlight; + --highcontrast-tag-background-color: ButtonFace; + --highcontrast-tag-background-color-hover: ButtonFace; + --highcontrast-tag-background-color-active: ButtonFace; + --highcontrast-tag-background-color-focus: ButtonFace; + --highcontrast-tag-content-color: ButtonText; + --highcontrast-tag-content-color-hover: ButtonText; + --highcontrast-tag-content-color-active: ButtonText; + --highcontrast-tag-content-color-focus: ButtonText; + --highcontrast-tag-focus-ring-color: Highlight; + } + .spectrum-Tag.is-selected { + --highcontrast-tag-border-color-selected: Highlight; + --highcontrast-tag-border-color-selected-hover: Highlight; + --highcontrast-tag-border-color-selected-active: Highlight; + --highcontrast-tag-border-color-selected-focus: Highlight; + --highcontrast-tag-background-color-selected: Highlight; + --highcontrast-tag-background-color-selected-hover: Highlight; + --highcontrast-tag-background-color-selected-active: Highlight; + --highcontrast-tag-background-color-selected-focus: Highlight; + --highcontrast-tag-content-color-selected: HighlightText; + } + .spectrum-Tag.is-disabled { + --highcontrast-tag-border-color-disabled: GrayText; + --highcontrast-tag-background-color-disabled: ButtonFace; + --highcontrast-tag-content-color-disabled: GrayText; + } + .spectrum-Tag.is-invalid { + --highcontrast-tag-border-color-invalid: Highlight; + --highcontrast-tag-border-color-invalid-hover: Highlight; + --highcontrast-tag-border-color-invalid-active: Highlight; + --highcontrast-tag-border-color-invalid-focus: Highlight; + --highcontrast-tag-content-color-invalid: CanvasText; + --highcontrast-tag-content-color-invalid-hover: CanvasText; + --highcontrast-tag-content-color-invalid-active: CanvasText; + --highcontrast-tag-content-color-invalid-focus: CanvasText; + } + .spectrum-Tag.is-invalid.is-selected { + --highcontrast-tag-border-color-invalid-selected: Highlight; + --highcontrast-tag-border-color-invalid-selected-hover: Highlight; + --highcontrast-tag-border-color-invalid-selected-focus: Highlight; + --highcontrast-tag-border-color-invalid-selected-active: Highlight; + --highcontrast-tag-background-color-invalid-selected: Highlight; + --highcontrast-tag-background-color-invalid-selected-hover: Highlight; + --highcontrast-tag-background-color-invalid-selected-active: Highlight; + --highcontrast-tag-background-color-invalid-selected-focus: Highlight; + --highcontrast-tag-content-color-invalid-selected: HighlightText; + } + .spectrum-Tag.is-emphasized { + --highcontrast-tag-border-color-emphasized: Highlight; + --highcontrast-tag-border-color-emphasized-hover: Highlight; + --highcontrast-tag-border-color-emphasized-active: Highlight; + --highcontrast-tag-border-color-emphasized-focus: Highlight; + --highcontrast-tag-background-color-emphasized: ButtonFace; + --highcontrast-tag-background-color-emphasized-hover: ButtonFace; + --highcontrast-tag-background-color-emphasized-active: ButtonFace; + --highcontrast-tag-background-color-emphasized-focus: ButtonFace; + --highcontrast-tag-content-color-emphasized: CanvasText; + } +} +.spectrum-Tag { + --spectrum-tag-border-color: var(--system-spectrum-tag-border-color); + --spectrum-tag-border-color-hover: var(--system-spectrum-tag-border-color-hover); + --spectrum-tag-border-color-active: var(--system-spectrum-tag-border-color-active); + --spectrum-tag-border-color-focus: var(--system-spectrum-tag-border-color-focus); + --spectrum-tag-size-small-corner-radius: var(--system-spectrum-tag-size-small-corner-radius); + --spectrum-tag-size-medium-corner-radius: var(--system-spectrum-tag-size-medium-corner-radius); + --spectrum-tag-size-large-corner-radius: var(--system-spectrum-tag-size-large-corner-radius); + --spectrum-tag-background-color: var(--system-spectrum-tag-background-color); + --spectrum-tag-background-color-hover: var(--system-spectrum-tag-background-color-hover); + --spectrum-tag-background-color-active: var(--system-spectrum-tag-background-color-active); + --spectrum-tag-background-color-focus: var(--system-spectrum-tag-background-color-focus); + --spectrum-tag-content-color: var(--system-spectrum-tag-content-color); + --spectrum-tag-content-color-hover: var(--system-spectrum-tag-content-color-hover); + --spectrum-tag-content-color-active: var(--system-spectrum-tag-content-color-active); + --spectrum-tag-content-color-focus: var(--system-spectrum-tag-content-color-focus); + --spectrum-tag-border-color-selected: var(--system-spectrum-tag-border-color-selected); + --spectrum-tag-border-color-selected-hover: var(--system-spectrum-tag-border-color-selected-hover); + --spectrum-tag-border-color-selected-active: var(--system-spectrum-tag-border-color-selected-active); + --spectrum-tag-border-color-selected-focus: var(--system-spectrum-tag-border-color-selected-focus); + --spectrum-tag-border-color-disabled: var(--system-spectrum-tag-border-color-disabled); + --spectrum-tag-background-color-disabled: var(--system-spectrum-tag-background-color-disabled); + --spectrum-tag-size-small-spacing-inline-start: var(--system-spectrum-tag-size-small-spacing-inline-start); + --spectrum-tag-size-small-label-spacing-inline-end: var(--system-spectrum-tag-size-small-label-spacing-inline-end); + --spectrum-tag-size-small-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-small-clear-button-spacing-inline-end); + --spectrum-tag-size-medium-spacing-inline-start: var(--system-spectrum-tag-size-medium-spacing-inline-start); + --spectrum-tag-size-medium-label-spacing-inline-end: var(--system-spectrum-tag-size-medium-label-spacing-inline-end); + --spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-medium-clear-button-spacing-inline-end); + --spectrum-tag-size-large-spacing-inline-start: var(--system-spectrum-tag-size-large-spacing-inline-start); + --spectrum-tag-size-large-label-spacing-inline-end: var(--system-spectrum-tag-size-large-label-spacing-inline-end); + --spectrum-tag-size-large-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-large-clear-button-spacing-inline-end); +} +/*# sourceMappingURL=components/tag/index.css.map */ diff --git a/components/tag/index-theme.css b/components/tag/index-theme.css new file mode 100644 index 0000000000..567e1f1cf8 --- /dev/null +++ b/components/tag/index-theme.css @@ -0,0 +1,78 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tag-border-color: var(--spectrum-gray-700); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-900); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-background-color: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-200); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-75); + --system-spectrum-tag-content-color: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: transparent; + --system-spectrum-tag-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-200); +} +.spectrum--express { + --system-spectrum-tag-background-color: transparent; + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-400); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-component-height-75); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-component-height-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-component-height-200); + --system-spectrum-tag-border-color: var(--spectrum-gray-300); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-500); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-tag-content-color: var(--spectrum-neutral-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-tag-background-color-disabled: transparent; + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-200); +} +/*# sourceMappingURL=components/tag/themes/express.css.map */ diff --git a/components/tag/index-vars.css b/components/tag/index-vars.css new file mode 100644 index 0000000000..9e0e5654c8 --- /dev/null +++ b/components/tag/index-vars.css @@ -0,0 +1,467 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tag-border-color: var(--spectrum-gray-700); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-900); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-background-color: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-200); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-75); + --system-spectrum-tag-content-color: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: transparent; + --system-spectrum-tag-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-200); +} +.spectrum--express { + --system-spectrum-tag-background-color: transparent; + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-400); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-component-height-75); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-component-height-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-component-height-200); + --system-spectrum-tag-border-color: var(--spectrum-gray-300); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-500); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-tag-content-color: var(--spectrum-neutral-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-tag-background-color-disabled: transparent; + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-200); +} +.spectrum-Tag { + --spectrum-avatar-opacity-disabled: 0.3; + --spectrum-tag-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-tag-border-width: var(--spectrum-border-width-100); + --spectrum-tag-focus-ring-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-tag-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-tag-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-tag-label-line-height: var(--spectrum-line-height-100); + --spectrum-tag-label-font-weight: var(--spectrum-regular-font-weight); + --spectrum-tag-content-color-selected: var(--spectrum-gray-50); + --spectrum-tag-background-color-selected: var(--spectrum-neutral-background-color-selected-default); + --spectrum-tag-background-color-selected-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-tag-background-color-selected-active: var(--spectrum-neutral-background-color-selected-down); + --spectrum-tag-background-color-selected-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-tag-border-color-invalid: var(--spectrum-negative-color-900); + --spectrum-tag-border-color-invalid-hover: var(--spectrum-negative-color-1000); + --spectrum-tag-border-color-invalid-active: var(--spectrum-negative-color-1100); + --spectrum-tag-border-color-invalid-focus: var(--spectrum-negative-color-1000); + --spectrum-tag-content-color-invalid: var(--spectrum-negative-content-color-default); + --spectrum-tag-content-color-invalid-hover: var(--spectrum-negative-content-color-hover); + --spectrum-tag-content-color-invalid-active: var(--spectrum-negative-content-color-down); + --spectrum-tag-content-color-invalid-focus: var(--spectrum-negative-content-color-key-focus); + --spectrum-tag-border-color-invalid-selected: var(--spectrum-negative-background-color-default); + --spectrum-tag-border-color-invalid-selected-hover: var(--spectrum-negative-background-color-hover); + --spectrum-tag-border-color-invalid-selected-focus: var(--spectrum-negative-background-color-down); + --spectrum-tag-border-color-invalid-selected-active: var(--spectrum-negative-background-color-key-focus); + --spectrum-tag-background-color-invalid-selected: var(--spectrum-negative-background-color-default); + --spectrum-tag-background-color-invalid-selected-hover: var(--spectrum-negative-background-color-hover); + --spectrum-tag-background-color-invalid-selected-active: var(--spectrum-negative-background-color-down); + --spectrum-tag-background-color-invalid-selected-focus: var(--spectrum-negative-background-color-key-focus); + --spectrum-tag-content-color-invalid-selected: var(--spectrum-white); + --spectrum-tag-border-color-emphasized: var(--spectrum-accent-background-color-default); + --spectrum-tag-border-color-emphasized-hover: var(--spectrum-accent-background-color-hover); + --spectrum-tag-border-color-emphasized-active: var(--spectrum-accent-background-color-down); + --spectrum-tag-border-color-emphasized-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-tag-background-color-emphasized: var(--spectrum-accent-background-color-default); + --spectrum-tag-background-color-emphasized-hover: var(--spectrum-accent-background-color-hover); + --spectrum-tag-background-color-emphasized-active: var(--spectrum-accent-background-color-down); + --spectrum-tag-background-color-emphasized-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-tag-content-color-emphasized: var(--spectrum-white); + --spectrum-tag-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-100); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-100); + --spectrum-tag-height: var(--spectrum-component-height-100); + --spectrum-tag-font-size: var(--spectrum-font-size-100); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-medium); +} +.spectrum-Tag--sizeS { + --spectrum-tag-height: var(--spectrum-component-height-75); + --spectrum-tag-font-size: var(--spectrum-font-size-75); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-75); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-small); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-75); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-small); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-small); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-75); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-75); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-small-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-small-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-small-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-small-clear-button-spacing-inline-end); +} +.spectrum-Tag--sizeM { + --spectrum-tag-height: var(--spectrum-component-height-100); + --spectrum-tag-font-size: var(--spectrum-font-size-100); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-100); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-medium); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-100); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-medium-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-medium-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-medium-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-medium-clear-button-spacing-inline-end); +} +.spectrum-Tag--sizeL { + --spectrum-tag-height: var(--spectrum-component-height-200); + --spectrum-tag-font-size: var(--spectrum-font-size-200); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-200); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-large); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-200); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-large); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-large); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-200); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-200); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-large-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-large-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-large-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-large-clear-button-spacing-inline-end); +} +.spectrum-Tag { + border-color: var(--highcontrast-tag-border-color, var(--mod-tag-border-color, var(--spectrum-tag-border-color))); + background-color: var(--highcontrast-tag-background-color, var(--mod-tag-background-color, var(--spectrum-tag-background-color))); + color: var(--highcontrast-tag-content-color, var(--mod-tag-content-color, var(--spectrum-tag-content-color))); + border-radius: var(--mod-tag-corner-radius, var(--spectrum-tag-corner-radius)); + border-width: var(--mod-tag-border-width, var(--spectrum-tag-border-width)); + border-style: solid; + padding-inline-start: calc(var(--mod-tag-spacing-inline-start, var(--spectrum-tag-spacing-inline-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + padding-inline-end: 0; + block-size: var(--mod-tag-height, var(--spectrum-tag-height)); + position: relative; + display: inline-flex; + align-items: center; + box-sizing: border-box; + vertical-align: bottom; + max-inline-size: 100%; + outline: none; + -webkit-user-select: none; + user-select: none; + transition: + border-color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + box-shadow var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + background-color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out; +} +.spectrum-Tag .spectrum-Tag-itemIcon { + block-size: var(--mod-tag-icon-size, var(--spectrum-tag-icon-size)); + inline-size: var(--mod-tag-icon-size, var(--spectrum-tag-icon-size)); + margin-block-start: calc(var(--mod-tag-icon-spacing-block-start, var(--spectrum-tag-icon-spacing-block-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-block-end: calc(var(--mod-tag-icon-spacing-block-end, var(--spectrum-tag-icon-spacing-block-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: var(--mod-tag-icon-spacing-inline-end, var(--spectrum-tag-icon-spacing-inline-end)); +} +.spectrum-Tag .spectrum-Avatar { + margin-block-start: calc(var(--mod-tag-avatar-spacing-block-start, var(--spectrum-tag-avatar-spacing-block-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-block-end: calc(var(--mod-tag-avatar-spacing-block-end, var(--spectrum-tag-avatar-spacing-block-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: var(--mod-tag-avatar-spacing-inline-end, var(--spectrum-tag-avatar-spacing-inline-end)); +} +.spectrum-Tag .spectrum-Tag-clearButton { + box-sizing: border-box; + padding-block-start: calc(var(--mod-tag-clear-button-spacing-block, var(--spectrum-tag-clear-button-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + padding-block-end: calc(var(--mod-tag-clear-button-spacing-block, var(--spectrum-tag-clear-button-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-start: calc(var(--mod-tag-clear-button-spacing-inline-start, var(--spectrum-tag-clear-button-spacing-inline-start)) + var(--mod-tag-label-spacing-inline-end, var(--spectrum-tag-label-spacing-inline-end)) * -1); + margin-inline-end: calc(var(--mod-tag-clear-button-spacing-inline-end, var(--spectrum-tag-clear-button-spacing-inline-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + color: currentColor; + --mod-clear-button-width: fit-content; + --spectrum-clearbutton-fill-size: fit-content; + --spectrum-clearbutton-fill-background-color: transparent; +} +.spectrum-Tag .spectrum-Tag-clearButton .spectrum-ClearButton-fill { + background-color: var(--mod-clearbutton-fill-background-color, var(--spectrum-clearbutton-fill-background-color)); + inline-size: var(--mod-clearbutton-fill-size, var(--spectrum-clearbutton-fill-size)); + block-size: var(--mod-clearbutton-fill-size, var(--spectrum-clearbutton-fill-size)); +} +.spectrum-Tag .spectrum-Tag-itemLabel { + block-size: 100%; + box-sizing: border-box; + line-height: var(--mod-tag-label-line-height, var(--spectrum-tag-label-line-height)); + font-weight: var(--mod-tag-label-font-weight, var(--spectrum-tag-label-font-weight)); + flex: 1 1 auto; + font-size: var(--mod-tag-font-size, var(--spectrum-tag-font-size)); + cursor: default; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-block-start: calc(var(--mod-tag-label-spacing-block, var(--spectrum-tag-label-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: calc(var(--mod-tag-label-spacing-inline-end, var(--spectrum-tag-label-spacing-inline-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); +} +.spectrum-Tag:active { + border-color: var(--highcontrast-tag-border-color-active, var(--mod-tag-border-color-active, var(--spectrum-tag-border-color-active))); + background-color: var(--highcontrast-tag-background-color-active, var(--mod-tag-background-color-active, var(--spectrum-tag-background-color-active))); + color: var(--highcontrast-tag-content-color-active, var(--mod-tag-content-color-active, var(--spectrum-tag-content-color-active))); +} +.spectrum-Tag.is-focused, +.spectrum-Tag:focus-visible { + border-color: var(--highcontrast-tag-border-color-focus, var(--mod-tag-border-color-focus, var(--spectrum-tag-border-color-focus))); + background-color: var(--highcontrast-tag-background-color-focus, var(--mod-tag-background-color-focus, var(--spectrum-tag-background-color-focus))); + color: var(--highcontrast-tag-content-color-focus, var(--mod-tag-content-color-focus, var(--spectrum-tag-content-color-focus))); +} +.spectrum-Tag.is-focused:after, +.spectrum-Tag:focus-visible:after { + content: ""; + display: inline-block; + position: absolute; + inset-block-start: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-block-end: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-inline-start: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-inline-end: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + border-color: var(--highcontrast-tag-focus-ring-color, var(--mod-tag-focus-ring-color, var(--spectrum-tag-focus-ring-color))); + border-radius: calc(var(--mod-tag-corner-radius, var(--spectrum-tag-corner-radius)) + var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) + var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + border-width: var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness)); + border-style: solid; + pointer-events: none; +} +.spectrum-Tag.is-selected { + border-color: var(--highcontrast-tag-border-color-selected, var(--mod-tag-border-color-selected, var(--spectrum-tag-border-color-selected))); + background-color: var(--highcontrast-tag-background-color-selected, var(--mod-tag-background-color-selected, var(--spectrum-tag-background-color-selected))); + color: var(--highcontrast-tag-content-color-selected, var(--mod-tag-content-color-selected, var(--spectrum-tag-content-color-selected))); +} +.spectrum-Tag.is-selected:active { + border-color: var(--highcontrast-tag-border-color-selected-active, var(--mod-tag-border-color-selected-active, var(--spectrum-tag-border-color-selected-active))); + background-color: var(--highcontrast-tag-background-color-selected-active, var(--mod-tag-background-color-selected-active, var(--spectrum-tag-background-color-selected-active))); +} +.spectrum-Tag.is-selected.is-focused, +.spectrum-Tag.is-selected:focus-visible { + border-color: var(--highcontrast-tag-border-color-selected-focus, var(--mod-tag-border-color-selected-focus, var(--spectrum-tag-border-color-selected-focus))); + background-color: var(--highcontrast-tag-background-color-selected-focus, var(--mod-tag-background-color-selected-focus, var(--spectrum-tag-background-color-selected-focus))); +} +.spectrum-Tag.is-invalid { + border-color: var(--highcontrast-tag-border-color-invalid, var(--mod-tag-border-color-invalid, var(--spectrum-tag-border-color-invalid))); + color: var(--highcontrast-tag-content-color-invalid, var(--mod-tag-content-color-invalid, var(--spectrum-tag-content-color-invalid))); +} +.spectrum-Tag.is-invalid:active { + border-color: var(--highcontrast-tag-border-color-invalid-active, var(--mod-tag-border-color-invalid-active, var(--spectrum-tag-border-color-invalid-active))); + color: var(--highcontrast-tag-content-color-invalid-active, var(--mod-tag-content-color-invalid-active, var(--spectrum-tag-content-color-invalid-active))); +} +.spectrum-Tag.is-invalid.is-focused, +.spectrum-Tag.is-invalid:focus-visible { + border-color: var(--highcontrast-tag-border-color-invalid-focus, var(--mod-tag-border-color-invalid-focus, var(--spectrum-tag-border-color-invalid-focus))); + color: var(--highcontrast-tag-content-color-invalid-focus, var(--mod-tag-content-color-invalid-focus, var(--spectrum-tag-content-color-invalid-focus))); +} +.spectrum-Tag.is-invalid.is-selected { + border-color: var(--highcontrast-tag-border-color-invalid-selected, var(--mod-tag-border-color-invalid-selected, var(--spectrum-tag-border-color-invalid-selected))); + background-color: var(--highcontrast-tag-background-color-invalid-selected, var(--mod-tag-background-color-invalid-selected, var(--spectrum-tag-background-color-invalid-selected))); + color: var(--highcontrast-tag-content-color-invalid-selected, var(--mod-tag-content-color-invalid-selected, var(--spectrum-tag-content-color-invalid-selected))); +} +.spectrum-Tag.is-invalid.is-selected:active { + border-color: var(--highcontrast-tag-border-color-invalid-selected-active, var(--mod-tag-border-color-invalid-selected-active, var(--spectrum-tag-border-color-invalid-selected-active))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-active, var(--mod-tag-background-color-invalid-selected-active, var(--spectrum-tag-background-color-invalid-selected-active))); +} +.spectrum-Tag.is-invalid.is-selected.is-focused, +.spectrum-Tag.is-invalid.is-selected:focus-visible { + border-color: var(--highcontrast-tag-border-color-invalid-selected-focus, var(--mod-tag-border-color-invalid-selected-focus, var(--spectrum-tag-border-color-invalid-selected-focus))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-focus, var(--mod-tag-background-color-invalid-selected-focus, var(--spectrum-tag-background-color-invalid-selected-focus))); +} +.spectrum-Tag.is-emphasized { + border-color: var(--highcontrast-tag-border-color-emphasized, var(--mod-tag-border-color-emphasized, var(--spectrum-tag-border-color-emphasized))); + background-color: var(--highcontrast-tag-background-color-emphasized, var(--mod-tag-background-color-emphasized, var(--spectrum-tag-background-color-emphasized))); + color: var(--highcontrast-tag-content-color-emphasized, var(--mod-tag-content-color-emphasized, var(--spectrum-tag-content-color-emphasized))); +} +@media (hover: hover) { + .spectrum-Tag:hover { + border-color: var(--highcontrast-tag-border-color-hover, var(--mod-tag-border-color-hover, var(--spectrum-tag-border-color-hover))); + background-color: var(--highcontrast-tag-background-color-hover, var(--mod-tag-background-color-hover, var(--spectrum-tag-background-color-hover))); + color: var(--highcontrast-tag-content-color-hover, var(--mod-tag-content-color-hover, var(--spectrum-tag-content-color-hover))); + } + .spectrum-Tag.is-selected:hover { + border-color: var(--highcontrast-tag-border-color-selected-hover, var(--mod-tag-border-color-selected-hover, var(--spectrum-tag-border-color-selected-hover))); + background-color: var(--highcontrast-tag-background-color-selected-hover, var(--mod-tag-background-color-selected-hover, var(--spectrum-tag-background-color-selected-hover))); + color: var(--highcontrast-tag-content-color-selected, var(--mod-tag-content-color-selected, var(--spectrum-tag-content-color-selected))); + } + .spectrum-Tag.is-invalid:hover { + border-color: var(--highcontrast-tag-border-color-invalid-hover, var(--mod-tag-border-color-invalid-hover, var(--spectrum-tag-border-color-invalid-hover))); + color: var(--highcontrast-tag-content-color-invalid-hover, var(--mod-tag-content-color-invalid-hover, var(--spectrum-tag-content-color-invalid-hover))); + } + .spectrum-Tag.is-invalid.is-selected:hover { + border-color: var(--highcontrast-tag-border-color-invalid-selected-hover, var(--mod-tag-border-color-invalid-selected-hover, var(--spectrum-tag-border-color-invalid-selected-hover))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-hover, var(--mod-tag-background-color-invalid-selected-hover, var(--spectrum-tag-background-color-invalid-selected-hover))); + color: var(--highcontrast-tag-content-color-invalid-selected, var(--mod-tag-content-color-invalid-selected, var(--spectrum-tag-content-color-invalid-selected))); + } + .spectrum-Tag.is-emphasized:hover { + border-color: var(--highcontrast-tag-border-color-emphasized-hover, var(--mod-tag-border-color-emphasized-hover, var(--spectrum-tag-border-color-emphasized-hover))); + background-color: var(--highcontrast-tag-background-color-emphasized-hover, var(--mod-tag-background-color-emphasized-hover, var(--spectrum-tag-background-color-emphasized-hover))); + color: var(--highcontrast-tag-content-color-emphasized, var(--mod-tag-content-color-emphasized, var(--spectrum-tag-content-color-emphasized))); + } +} +.spectrum-Tag.is-emphasized:active { + border-color: var(--highcontrast-tag-border-color-emphasized-active, var(--mod-tag-border-color-emphasized-active, var(--spectrum-tag-border-color-emphasized-active))); + background-color: var(--highcontrast-tag-background-color-emphasized-active, var(--mod-tag-background-color-emphasized-active, var(--spectrum-tag-background-color-emphasized-active))); +} +.spectrum-Tag.is-emphasized.is-focused, +.spectrum-Tag.is-emphasized:focus-visible { + border-color: var(--highcontrast-tag-border-color-emphasized-focus, var(--mod-tag-border-color-emphasized-focus, var(--spectrum-tag-border-color-emphasized-focus))); + background-color: var(--highcontrast-tag-background-color-emphasized-focus, var(--mod-tag-background-color-emphasized-focus, var(--spectrum-tag-background-color-emphasized-focus))); +} +.spectrum-Tag.is-disabled { + border-color: var(--highcontrast-tag-border-color-disabled, var(--mod-tag-border-color-disabled, var(--spectrum-tag-border-color-disabled))); + background-color: var(--highcontrast-tag-background-color-disabled, var(--mod-tag-background-color-disabled, var(--spectrum-tag-background-color-disabled))); + color: var(--highcontrast-tag-content-color-disabled, var(--mod-tag-content-color-disabled, var(--spectrum-tag-content-color-disabled))); + pointer-events: none; +} +.spectrum-Tag.is-disabled .spectrum-Avatar { + opacity: var(--mod-avatar-opacity-disabled, var(--spectrum-avatar-opacity-disabled)); +} +@media (forced-colors: active) { + .spectrum-Tag { + forced-color-adjust: none; + --highcontrast-tag-border-color: ButtonText; + --highcontrast-tag-border-color-hover: ButtonText; + --highcontrast-tag-border-color-active: ButtonText; + --highcontrast-tag-border-color-focus: Highlight; + --highcontrast-tag-background-color: ButtonFace; + --highcontrast-tag-background-color-hover: ButtonFace; + --highcontrast-tag-background-color-active: ButtonFace; + --highcontrast-tag-background-color-focus: ButtonFace; + --highcontrast-tag-content-color: ButtonText; + --highcontrast-tag-content-color-hover: ButtonText; + --highcontrast-tag-content-color-active: ButtonText; + --highcontrast-tag-content-color-focus: ButtonText; + --highcontrast-tag-focus-ring-color: Highlight; + } + .spectrum-Tag.is-selected { + --highcontrast-tag-border-color-selected: Highlight; + --highcontrast-tag-border-color-selected-hover: Highlight; + --highcontrast-tag-border-color-selected-active: Highlight; + --highcontrast-tag-border-color-selected-focus: Highlight; + --highcontrast-tag-background-color-selected: Highlight; + --highcontrast-tag-background-color-selected-hover: Highlight; + --highcontrast-tag-background-color-selected-active: Highlight; + --highcontrast-tag-background-color-selected-focus: Highlight; + --highcontrast-tag-content-color-selected: HighlightText; + } + .spectrum-Tag.is-disabled { + --highcontrast-tag-border-color-disabled: GrayText; + --highcontrast-tag-background-color-disabled: ButtonFace; + --highcontrast-tag-content-color-disabled: GrayText; + } + .spectrum-Tag.is-invalid { + --highcontrast-tag-border-color-invalid: Highlight; + --highcontrast-tag-border-color-invalid-hover: Highlight; + --highcontrast-tag-border-color-invalid-active: Highlight; + --highcontrast-tag-border-color-invalid-focus: Highlight; + --highcontrast-tag-content-color-invalid: CanvasText; + --highcontrast-tag-content-color-invalid-hover: CanvasText; + --highcontrast-tag-content-color-invalid-active: CanvasText; + --highcontrast-tag-content-color-invalid-focus: CanvasText; + } + .spectrum-Tag.is-invalid.is-selected { + --highcontrast-tag-border-color-invalid-selected: Highlight; + --highcontrast-tag-border-color-invalid-selected-hover: Highlight; + --highcontrast-tag-border-color-invalid-selected-focus: Highlight; + --highcontrast-tag-border-color-invalid-selected-active: Highlight; + --highcontrast-tag-background-color-invalid-selected: Highlight; + --highcontrast-tag-background-color-invalid-selected-hover: Highlight; + --highcontrast-tag-background-color-invalid-selected-active: Highlight; + --highcontrast-tag-background-color-invalid-selected-focus: Highlight; + --highcontrast-tag-content-color-invalid-selected: HighlightText; + } + .spectrum-Tag.is-emphasized { + --highcontrast-tag-border-color-emphasized: Highlight; + --highcontrast-tag-border-color-emphasized-hover: Highlight; + --highcontrast-tag-border-color-emphasized-active: Highlight; + --highcontrast-tag-border-color-emphasized-focus: Highlight; + --highcontrast-tag-background-color-emphasized: ButtonFace; + --highcontrast-tag-background-color-emphasized-hover: ButtonFace; + --highcontrast-tag-background-color-emphasized-active: ButtonFace; + --highcontrast-tag-background-color-emphasized-focus: ButtonFace; + --highcontrast-tag-content-color-emphasized: CanvasText; + } +} +.spectrum-Tag { + --spectrum-tag-border-color: var(--system-spectrum-tag-border-color); + --spectrum-tag-border-color-hover: var(--system-spectrum-tag-border-color-hover); + --spectrum-tag-border-color-active: var(--system-spectrum-tag-border-color-active); + --spectrum-tag-border-color-focus: var(--system-spectrum-tag-border-color-focus); + --spectrum-tag-size-small-corner-radius: var(--system-spectrum-tag-size-small-corner-radius); + --spectrum-tag-size-medium-corner-radius: var(--system-spectrum-tag-size-medium-corner-radius); + --spectrum-tag-size-large-corner-radius: var(--system-spectrum-tag-size-large-corner-radius); + --spectrum-tag-background-color: var(--system-spectrum-tag-background-color); + --spectrum-tag-background-color-hover: var(--system-spectrum-tag-background-color-hover); + --spectrum-tag-background-color-active: var(--system-spectrum-tag-background-color-active); + --spectrum-tag-background-color-focus: var(--system-spectrum-tag-background-color-focus); + --spectrum-tag-content-color: var(--system-spectrum-tag-content-color); + --spectrum-tag-content-color-hover: var(--system-spectrum-tag-content-color-hover); + --spectrum-tag-content-color-active: var(--system-spectrum-tag-content-color-active); + --spectrum-tag-content-color-focus: var(--system-spectrum-tag-content-color-focus); + --spectrum-tag-border-color-selected: var(--system-spectrum-tag-border-color-selected); + --spectrum-tag-border-color-selected-hover: var(--system-spectrum-tag-border-color-selected-hover); + --spectrum-tag-border-color-selected-active: var(--system-spectrum-tag-border-color-selected-active); + --spectrum-tag-border-color-selected-focus: var(--system-spectrum-tag-border-color-selected-focus); + --spectrum-tag-border-color-disabled: var(--system-spectrum-tag-border-color-disabled); + --spectrum-tag-background-color-disabled: var(--system-spectrum-tag-background-color-disabled); + --spectrum-tag-size-small-spacing-inline-start: var(--system-spectrum-tag-size-small-spacing-inline-start); + --spectrum-tag-size-small-label-spacing-inline-end: var(--system-spectrum-tag-size-small-label-spacing-inline-end); + --spectrum-tag-size-small-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-small-clear-button-spacing-inline-end); + --spectrum-tag-size-medium-spacing-inline-start: var(--system-spectrum-tag-size-medium-spacing-inline-start); + --spectrum-tag-size-medium-label-spacing-inline-end: var(--system-spectrum-tag-size-medium-label-spacing-inline-end); + --spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-medium-clear-button-spacing-inline-end); + --spectrum-tag-size-large-spacing-inline-start: var(--system-spectrum-tag-size-large-spacing-inline-start); + --spectrum-tag-size-large-label-spacing-inline-end: var(--system-spectrum-tag-size-large-label-spacing-inline-end); + --spectrum-tag-size-large-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-large-clear-button-spacing-inline-end); +} +/*# sourceMappingURL=components/tag/index.css.map */ diff --git a/components/tag/index.css b/components/tag/index.css new file mode 100644 index 0000000000..9e0e5654c8 --- /dev/null +++ b/components/tag/index.css @@ -0,0 +1,467 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tag-border-color: var(--spectrum-gray-700); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-900); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-background-color: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-200); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-75); + --system-spectrum-tag-content-color: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: transparent; + --system-spectrum-tag-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-200); +} +.spectrum--express { + --system-spectrum-tag-background-color: transparent; + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-400); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-component-height-75); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-component-height-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-component-height-200); + --system-spectrum-tag-border-color: var(--spectrum-gray-300); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-500); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-tag-content-color: var(--spectrum-neutral-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-tag-background-color-disabled: transparent; + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-200); +} +.spectrum-Tag { + --spectrum-avatar-opacity-disabled: 0.3; + --spectrum-tag-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-tag-border-width: var(--spectrum-border-width-100); + --spectrum-tag-focus-ring-thickness: var(--spectrum-focus-indicator-thickness); + --spectrum-tag-focus-ring-gap: var(--spectrum-focus-indicator-gap); + --spectrum-tag-focus-ring-color: var(--spectrum-focus-indicator-color); + --spectrum-tag-label-line-height: var(--spectrum-line-height-100); + --spectrum-tag-label-font-weight: var(--spectrum-regular-font-weight); + --spectrum-tag-content-color-selected: var(--spectrum-gray-50); + --spectrum-tag-background-color-selected: var(--spectrum-neutral-background-color-selected-default); + --spectrum-tag-background-color-selected-hover: var(--spectrum-neutral-background-color-selected-hover); + --spectrum-tag-background-color-selected-active: var(--spectrum-neutral-background-color-selected-down); + --spectrum-tag-background-color-selected-focus: var(--spectrum-neutral-background-color-selected-key-focus); + --spectrum-tag-border-color-invalid: var(--spectrum-negative-color-900); + --spectrum-tag-border-color-invalid-hover: var(--spectrum-negative-color-1000); + --spectrum-tag-border-color-invalid-active: var(--spectrum-negative-color-1100); + --spectrum-tag-border-color-invalid-focus: var(--spectrum-negative-color-1000); + --spectrum-tag-content-color-invalid: var(--spectrum-negative-content-color-default); + --spectrum-tag-content-color-invalid-hover: var(--spectrum-negative-content-color-hover); + --spectrum-tag-content-color-invalid-active: var(--spectrum-negative-content-color-down); + --spectrum-tag-content-color-invalid-focus: var(--spectrum-negative-content-color-key-focus); + --spectrum-tag-border-color-invalid-selected: var(--spectrum-negative-background-color-default); + --spectrum-tag-border-color-invalid-selected-hover: var(--spectrum-negative-background-color-hover); + --spectrum-tag-border-color-invalid-selected-focus: var(--spectrum-negative-background-color-down); + --spectrum-tag-border-color-invalid-selected-active: var(--spectrum-negative-background-color-key-focus); + --spectrum-tag-background-color-invalid-selected: var(--spectrum-negative-background-color-default); + --spectrum-tag-background-color-invalid-selected-hover: var(--spectrum-negative-background-color-hover); + --spectrum-tag-background-color-invalid-selected-active: var(--spectrum-negative-background-color-down); + --spectrum-tag-background-color-invalid-selected-focus: var(--spectrum-negative-background-color-key-focus); + --spectrum-tag-content-color-invalid-selected: var(--spectrum-white); + --spectrum-tag-border-color-emphasized: var(--spectrum-accent-background-color-default); + --spectrum-tag-border-color-emphasized-hover: var(--spectrum-accent-background-color-hover); + --spectrum-tag-border-color-emphasized-active: var(--spectrum-accent-background-color-down); + --spectrum-tag-border-color-emphasized-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-tag-background-color-emphasized: var(--spectrum-accent-background-color-default); + --spectrum-tag-background-color-emphasized-hover: var(--spectrum-accent-background-color-hover); + --spectrum-tag-background-color-emphasized-active: var(--spectrum-accent-background-color-down); + --spectrum-tag-background-color-emphasized-focus: var(--spectrum-accent-background-color-key-focus); + --spectrum-tag-content-color-emphasized: var(--spectrum-white); + --spectrum-tag-content-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-100); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-100); + --spectrum-tag-height: var(--spectrum-component-height-100); + --spectrum-tag-font-size: var(--spectrum-font-size-100); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-medium); +} +.spectrum-Tag--sizeS { + --spectrum-tag-height: var(--spectrum-component-height-75); + --spectrum-tag-font-size: var(--spectrum-font-size-75); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-75); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-75); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-small); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-75); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-75); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-small); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-small); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-75); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-75); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-small-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-small-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-small-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-small-clear-button-spacing-inline-end); +} +.spectrum-Tag--sizeM { + --spectrum-tag-height: var(--spectrum-component-height-100); + --spectrum-tag-font-size: var(--spectrum-font-size-100); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-100); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-100); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-medium); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-100); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-medium); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-100); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-100); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-medium-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-medium-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-medium-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-medium-clear-button-spacing-inline-end); +} +.spectrum-Tag--sizeL { + --spectrum-tag-height: var(--spectrum-component-height-200); + --spectrum-tag-font-size: var(--spectrum-font-size-200); + --spectrum-tag-icon-size: var(--spectrum-workflow-icon-size-200); + --spectrum-tag-clear-button-spacing-inline-start: var(--spectrum-text-to-visual-200); + --spectrum-tag-clear-button-spacing-block: var(--spectrum-tag-top-to-cross-icon-large); + --spectrum-tag-icon-spacing-block-start: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-tag-icon-spacing-block-end: var(--spectrum-component-top-to-workflow-icon-200); + --spectrum-tag-icon-spacing-inline-end: var(--spectrum-text-to-visual-200); + --spectrum-tag-avatar-spacing-block-start: var(--spectrum-tag-top-to-avatar-large); + --spectrum-tag-avatar-spacing-block-end: var(--spectrum-tag-top-to-avatar-large); + --spectrum-tag-avatar-spacing-inline-end: var(--spectrum-text-to-visual-200); + --spectrum-tag-label-spacing-block: var(--spectrum-component-top-to-text-200); + --spectrum-tag-corner-radius: var(--spectrum-tag-size-large-corner-radius); + --spectrum-tag-spacing-inline-start: var(--spectrum-tag-size-large-spacing-inline-start); + --spectrum-tag-label-spacing-inline-end: var(--spectrum-tag-size-large-label-spacing-inline-end); + --spectrum-tag-clear-button-spacing-inline-end: var(--spectrum-tag-size-large-clear-button-spacing-inline-end); +} +.spectrum-Tag { + border-color: var(--highcontrast-tag-border-color, var(--mod-tag-border-color, var(--spectrum-tag-border-color))); + background-color: var(--highcontrast-tag-background-color, var(--mod-tag-background-color, var(--spectrum-tag-background-color))); + color: var(--highcontrast-tag-content-color, var(--mod-tag-content-color, var(--spectrum-tag-content-color))); + border-radius: var(--mod-tag-corner-radius, var(--spectrum-tag-corner-radius)); + border-width: var(--mod-tag-border-width, var(--spectrum-tag-border-width)); + border-style: solid; + padding-inline-start: calc(var(--mod-tag-spacing-inline-start, var(--spectrum-tag-spacing-inline-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + padding-inline-end: 0; + block-size: var(--mod-tag-height, var(--spectrum-tag-height)); + position: relative; + display: inline-flex; + align-items: center; + box-sizing: border-box; + vertical-align: bottom; + max-inline-size: 100%; + outline: none; + -webkit-user-select: none; + user-select: none; + transition: + border-color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + box-shadow var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out, + background-color var(--mod-tag-animation-duration, var(--spectrum-tag-animation-duration)) ease-in-out; +} +.spectrum-Tag .spectrum-Tag-itemIcon { + block-size: var(--mod-tag-icon-size, var(--spectrum-tag-icon-size)); + inline-size: var(--mod-tag-icon-size, var(--spectrum-tag-icon-size)); + margin-block-start: calc(var(--mod-tag-icon-spacing-block-start, var(--spectrum-tag-icon-spacing-block-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-block-end: calc(var(--mod-tag-icon-spacing-block-end, var(--spectrum-tag-icon-spacing-block-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: var(--mod-tag-icon-spacing-inline-end, var(--spectrum-tag-icon-spacing-inline-end)); +} +.spectrum-Tag .spectrum-Avatar { + margin-block-start: calc(var(--mod-tag-avatar-spacing-block-start, var(--spectrum-tag-avatar-spacing-block-start)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-block-end: calc(var(--mod-tag-avatar-spacing-block-end, var(--spectrum-tag-avatar-spacing-block-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: var(--mod-tag-avatar-spacing-inline-end, var(--spectrum-tag-avatar-spacing-inline-end)); +} +.spectrum-Tag .spectrum-Tag-clearButton { + box-sizing: border-box; + padding-block-start: calc(var(--mod-tag-clear-button-spacing-block, var(--spectrum-tag-clear-button-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + padding-block-end: calc(var(--mod-tag-clear-button-spacing-block, var(--spectrum-tag-clear-button-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-start: calc(var(--mod-tag-clear-button-spacing-inline-start, var(--spectrum-tag-clear-button-spacing-inline-start)) + var(--mod-tag-label-spacing-inline-end, var(--spectrum-tag-label-spacing-inline-end)) * -1); + margin-inline-end: calc(var(--mod-tag-clear-button-spacing-inline-end, var(--spectrum-tag-clear-button-spacing-inline-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + color: currentColor; + --mod-clear-button-width: fit-content; + --spectrum-clearbutton-fill-size: fit-content; + --spectrum-clearbutton-fill-background-color: transparent; +} +.spectrum-Tag .spectrum-Tag-clearButton .spectrum-ClearButton-fill { + background-color: var(--mod-clearbutton-fill-background-color, var(--spectrum-clearbutton-fill-background-color)); + inline-size: var(--mod-clearbutton-fill-size, var(--spectrum-clearbutton-fill-size)); + block-size: var(--mod-clearbutton-fill-size, var(--spectrum-clearbutton-fill-size)); +} +.spectrum-Tag .spectrum-Tag-itemLabel { + block-size: 100%; + box-sizing: border-box; + line-height: var(--mod-tag-label-line-height, var(--spectrum-tag-label-line-height)); + font-weight: var(--mod-tag-label-font-weight, var(--spectrum-tag-label-font-weight)); + flex: 1 1 auto; + font-size: var(--mod-tag-font-size, var(--spectrum-tag-font-size)); + cursor: default; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-block-start: calc(var(--mod-tag-label-spacing-block, var(--spectrum-tag-label-spacing-block)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + margin-inline-end: calc(var(--mod-tag-label-spacing-inline-end, var(--spectrum-tag-label-spacing-inline-end)) - var(--mod-tag-border-width, var(--spectrum-tag-border-width))); +} +.spectrum-Tag:active { + border-color: var(--highcontrast-tag-border-color-active, var(--mod-tag-border-color-active, var(--spectrum-tag-border-color-active))); + background-color: var(--highcontrast-tag-background-color-active, var(--mod-tag-background-color-active, var(--spectrum-tag-background-color-active))); + color: var(--highcontrast-tag-content-color-active, var(--mod-tag-content-color-active, var(--spectrum-tag-content-color-active))); +} +.spectrum-Tag.is-focused, +.spectrum-Tag:focus-visible { + border-color: var(--highcontrast-tag-border-color-focus, var(--mod-tag-border-color-focus, var(--spectrum-tag-border-color-focus))); + background-color: var(--highcontrast-tag-background-color-focus, var(--mod-tag-background-color-focus, var(--spectrum-tag-background-color-focus))); + color: var(--highcontrast-tag-content-color-focus, var(--mod-tag-content-color-focus, var(--spectrum-tag-content-color-focus))); +} +.spectrum-Tag.is-focused:after, +.spectrum-Tag:focus-visible:after { + content: ""; + display: inline-block; + position: absolute; + inset-block-start: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-block-end: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-inline-start: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + inset-inline-end: calc(var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) * -1 - var(--mod-tag-border-width, var(--spectrum-tag-border-width)) - var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness))); + border-color: var(--highcontrast-tag-focus-ring-color, var(--mod-tag-focus-ring-color, var(--spectrum-tag-focus-ring-color))); + border-radius: calc(var(--mod-tag-corner-radius, var(--spectrum-tag-corner-radius)) + var(--mod-tag-focus-ring-gap, var(--spectrum-tag-focus-ring-gap)) + var(--mod-tag-border-width, var(--spectrum-tag-border-width))); + border-width: var(--mod-tag-focus-ring-thickness, var(--spectrum-tag-focus-ring-thickness)); + border-style: solid; + pointer-events: none; +} +.spectrum-Tag.is-selected { + border-color: var(--highcontrast-tag-border-color-selected, var(--mod-tag-border-color-selected, var(--spectrum-tag-border-color-selected))); + background-color: var(--highcontrast-tag-background-color-selected, var(--mod-tag-background-color-selected, var(--spectrum-tag-background-color-selected))); + color: var(--highcontrast-tag-content-color-selected, var(--mod-tag-content-color-selected, var(--spectrum-tag-content-color-selected))); +} +.spectrum-Tag.is-selected:active { + border-color: var(--highcontrast-tag-border-color-selected-active, var(--mod-tag-border-color-selected-active, var(--spectrum-tag-border-color-selected-active))); + background-color: var(--highcontrast-tag-background-color-selected-active, var(--mod-tag-background-color-selected-active, var(--spectrum-tag-background-color-selected-active))); +} +.spectrum-Tag.is-selected.is-focused, +.spectrum-Tag.is-selected:focus-visible { + border-color: var(--highcontrast-tag-border-color-selected-focus, var(--mod-tag-border-color-selected-focus, var(--spectrum-tag-border-color-selected-focus))); + background-color: var(--highcontrast-tag-background-color-selected-focus, var(--mod-tag-background-color-selected-focus, var(--spectrum-tag-background-color-selected-focus))); +} +.spectrum-Tag.is-invalid { + border-color: var(--highcontrast-tag-border-color-invalid, var(--mod-tag-border-color-invalid, var(--spectrum-tag-border-color-invalid))); + color: var(--highcontrast-tag-content-color-invalid, var(--mod-tag-content-color-invalid, var(--spectrum-tag-content-color-invalid))); +} +.spectrum-Tag.is-invalid:active { + border-color: var(--highcontrast-tag-border-color-invalid-active, var(--mod-tag-border-color-invalid-active, var(--spectrum-tag-border-color-invalid-active))); + color: var(--highcontrast-tag-content-color-invalid-active, var(--mod-tag-content-color-invalid-active, var(--spectrum-tag-content-color-invalid-active))); +} +.spectrum-Tag.is-invalid.is-focused, +.spectrum-Tag.is-invalid:focus-visible { + border-color: var(--highcontrast-tag-border-color-invalid-focus, var(--mod-tag-border-color-invalid-focus, var(--spectrum-tag-border-color-invalid-focus))); + color: var(--highcontrast-tag-content-color-invalid-focus, var(--mod-tag-content-color-invalid-focus, var(--spectrum-tag-content-color-invalid-focus))); +} +.spectrum-Tag.is-invalid.is-selected { + border-color: var(--highcontrast-tag-border-color-invalid-selected, var(--mod-tag-border-color-invalid-selected, var(--spectrum-tag-border-color-invalid-selected))); + background-color: var(--highcontrast-tag-background-color-invalid-selected, var(--mod-tag-background-color-invalid-selected, var(--spectrum-tag-background-color-invalid-selected))); + color: var(--highcontrast-tag-content-color-invalid-selected, var(--mod-tag-content-color-invalid-selected, var(--spectrum-tag-content-color-invalid-selected))); +} +.spectrum-Tag.is-invalid.is-selected:active { + border-color: var(--highcontrast-tag-border-color-invalid-selected-active, var(--mod-tag-border-color-invalid-selected-active, var(--spectrum-tag-border-color-invalid-selected-active))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-active, var(--mod-tag-background-color-invalid-selected-active, var(--spectrum-tag-background-color-invalid-selected-active))); +} +.spectrum-Tag.is-invalid.is-selected.is-focused, +.spectrum-Tag.is-invalid.is-selected:focus-visible { + border-color: var(--highcontrast-tag-border-color-invalid-selected-focus, var(--mod-tag-border-color-invalid-selected-focus, var(--spectrum-tag-border-color-invalid-selected-focus))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-focus, var(--mod-tag-background-color-invalid-selected-focus, var(--spectrum-tag-background-color-invalid-selected-focus))); +} +.spectrum-Tag.is-emphasized { + border-color: var(--highcontrast-tag-border-color-emphasized, var(--mod-tag-border-color-emphasized, var(--spectrum-tag-border-color-emphasized))); + background-color: var(--highcontrast-tag-background-color-emphasized, var(--mod-tag-background-color-emphasized, var(--spectrum-tag-background-color-emphasized))); + color: var(--highcontrast-tag-content-color-emphasized, var(--mod-tag-content-color-emphasized, var(--spectrum-tag-content-color-emphasized))); +} +@media (hover: hover) { + .spectrum-Tag:hover { + border-color: var(--highcontrast-tag-border-color-hover, var(--mod-tag-border-color-hover, var(--spectrum-tag-border-color-hover))); + background-color: var(--highcontrast-tag-background-color-hover, var(--mod-tag-background-color-hover, var(--spectrum-tag-background-color-hover))); + color: var(--highcontrast-tag-content-color-hover, var(--mod-tag-content-color-hover, var(--spectrum-tag-content-color-hover))); + } + .spectrum-Tag.is-selected:hover { + border-color: var(--highcontrast-tag-border-color-selected-hover, var(--mod-tag-border-color-selected-hover, var(--spectrum-tag-border-color-selected-hover))); + background-color: var(--highcontrast-tag-background-color-selected-hover, var(--mod-tag-background-color-selected-hover, var(--spectrum-tag-background-color-selected-hover))); + color: var(--highcontrast-tag-content-color-selected, var(--mod-tag-content-color-selected, var(--spectrum-tag-content-color-selected))); + } + .spectrum-Tag.is-invalid:hover { + border-color: var(--highcontrast-tag-border-color-invalid-hover, var(--mod-tag-border-color-invalid-hover, var(--spectrum-tag-border-color-invalid-hover))); + color: var(--highcontrast-tag-content-color-invalid-hover, var(--mod-tag-content-color-invalid-hover, var(--spectrum-tag-content-color-invalid-hover))); + } + .spectrum-Tag.is-invalid.is-selected:hover { + border-color: var(--highcontrast-tag-border-color-invalid-selected-hover, var(--mod-tag-border-color-invalid-selected-hover, var(--spectrum-tag-border-color-invalid-selected-hover))); + background-color: var(--highcontrast-tag-background-color-invalid-selected-hover, var(--mod-tag-background-color-invalid-selected-hover, var(--spectrum-tag-background-color-invalid-selected-hover))); + color: var(--highcontrast-tag-content-color-invalid-selected, var(--mod-tag-content-color-invalid-selected, var(--spectrum-tag-content-color-invalid-selected))); + } + .spectrum-Tag.is-emphasized:hover { + border-color: var(--highcontrast-tag-border-color-emphasized-hover, var(--mod-tag-border-color-emphasized-hover, var(--spectrum-tag-border-color-emphasized-hover))); + background-color: var(--highcontrast-tag-background-color-emphasized-hover, var(--mod-tag-background-color-emphasized-hover, var(--spectrum-tag-background-color-emphasized-hover))); + color: var(--highcontrast-tag-content-color-emphasized, var(--mod-tag-content-color-emphasized, var(--spectrum-tag-content-color-emphasized))); + } +} +.spectrum-Tag.is-emphasized:active { + border-color: var(--highcontrast-tag-border-color-emphasized-active, var(--mod-tag-border-color-emphasized-active, var(--spectrum-tag-border-color-emphasized-active))); + background-color: var(--highcontrast-tag-background-color-emphasized-active, var(--mod-tag-background-color-emphasized-active, var(--spectrum-tag-background-color-emphasized-active))); +} +.spectrum-Tag.is-emphasized.is-focused, +.spectrum-Tag.is-emphasized:focus-visible { + border-color: var(--highcontrast-tag-border-color-emphasized-focus, var(--mod-tag-border-color-emphasized-focus, var(--spectrum-tag-border-color-emphasized-focus))); + background-color: var(--highcontrast-tag-background-color-emphasized-focus, var(--mod-tag-background-color-emphasized-focus, var(--spectrum-tag-background-color-emphasized-focus))); +} +.spectrum-Tag.is-disabled { + border-color: var(--highcontrast-tag-border-color-disabled, var(--mod-tag-border-color-disabled, var(--spectrum-tag-border-color-disabled))); + background-color: var(--highcontrast-tag-background-color-disabled, var(--mod-tag-background-color-disabled, var(--spectrum-tag-background-color-disabled))); + color: var(--highcontrast-tag-content-color-disabled, var(--mod-tag-content-color-disabled, var(--spectrum-tag-content-color-disabled))); + pointer-events: none; +} +.spectrum-Tag.is-disabled .spectrum-Avatar { + opacity: var(--mod-avatar-opacity-disabled, var(--spectrum-avatar-opacity-disabled)); +} +@media (forced-colors: active) { + .spectrum-Tag { + forced-color-adjust: none; + --highcontrast-tag-border-color: ButtonText; + --highcontrast-tag-border-color-hover: ButtonText; + --highcontrast-tag-border-color-active: ButtonText; + --highcontrast-tag-border-color-focus: Highlight; + --highcontrast-tag-background-color: ButtonFace; + --highcontrast-tag-background-color-hover: ButtonFace; + --highcontrast-tag-background-color-active: ButtonFace; + --highcontrast-tag-background-color-focus: ButtonFace; + --highcontrast-tag-content-color: ButtonText; + --highcontrast-tag-content-color-hover: ButtonText; + --highcontrast-tag-content-color-active: ButtonText; + --highcontrast-tag-content-color-focus: ButtonText; + --highcontrast-tag-focus-ring-color: Highlight; + } + .spectrum-Tag.is-selected { + --highcontrast-tag-border-color-selected: Highlight; + --highcontrast-tag-border-color-selected-hover: Highlight; + --highcontrast-tag-border-color-selected-active: Highlight; + --highcontrast-tag-border-color-selected-focus: Highlight; + --highcontrast-tag-background-color-selected: Highlight; + --highcontrast-tag-background-color-selected-hover: Highlight; + --highcontrast-tag-background-color-selected-active: Highlight; + --highcontrast-tag-background-color-selected-focus: Highlight; + --highcontrast-tag-content-color-selected: HighlightText; + } + .spectrum-Tag.is-disabled { + --highcontrast-tag-border-color-disabled: GrayText; + --highcontrast-tag-background-color-disabled: ButtonFace; + --highcontrast-tag-content-color-disabled: GrayText; + } + .spectrum-Tag.is-invalid { + --highcontrast-tag-border-color-invalid: Highlight; + --highcontrast-tag-border-color-invalid-hover: Highlight; + --highcontrast-tag-border-color-invalid-active: Highlight; + --highcontrast-tag-border-color-invalid-focus: Highlight; + --highcontrast-tag-content-color-invalid: CanvasText; + --highcontrast-tag-content-color-invalid-hover: CanvasText; + --highcontrast-tag-content-color-invalid-active: CanvasText; + --highcontrast-tag-content-color-invalid-focus: CanvasText; + } + .spectrum-Tag.is-invalid.is-selected { + --highcontrast-tag-border-color-invalid-selected: Highlight; + --highcontrast-tag-border-color-invalid-selected-hover: Highlight; + --highcontrast-tag-border-color-invalid-selected-focus: Highlight; + --highcontrast-tag-border-color-invalid-selected-active: Highlight; + --highcontrast-tag-background-color-invalid-selected: Highlight; + --highcontrast-tag-background-color-invalid-selected-hover: Highlight; + --highcontrast-tag-background-color-invalid-selected-active: Highlight; + --highcontrast-tag-background-color-invalid-selected-focus: Highlight; + --highcontrast-tag-content-color-invalid-selected: HighlightText; + } + .spectrum-Tag.is-emphasized { + --highcontrast-tag-border-color-emphasized: Highlight; + --highcontrast-tag-border-color-emphasized-hover: Highlight; + --highcontrast-tag-border-color-emphasized-active: Highlight; + --highcontrast-tag-border-color-emphasized-focus: Highlight; + --highcontrast-tag-background-color-emphasized: ButtonFace; + --highcontrast-tag-background-color-emphasized-hover: ButtonFace; + --highcontrast-tag-background-color-emphasized-active: ButtonFace; + --highcontrast-tag-background-color-emphasized-focus: ButtonFace; + --highcontrast-tag-content-color-emphasized: CanvasText; + } +} +.spectrum-Tag { + --spectrum-tag-border-color: var(--system-spectrum-tag-border-color); + --spectrum-tag-border-color-hover: var(--system-spectrum-tag-border-color-hover); + --spectrum-tag-border-color-active: var(--system-spectrum-tag-border-color-active); + --spectrum-tag-border-color-focus: var(--system-spectrum-tag-border-color-focus); + --spectrum-tag-size-small-corner-radius: var(--system-spectrum-tag-size-small-corner-radius); + --spectrum-tag-size-medium-corner-radius: var(--system-spectrum-tag-size-medium-corner-radius); + --spectrum-tag-size-large-corner-radius: var(--system-spectrum-tag-size-large-corner-radius); + --spectrum-tag-background-color: var(--system-spectrum-tag-background-color); + --spectrum-tag-background-color-hover: var(--system-spectrum-tag-background-color-hover); + --spectrum-tag-background-color-active: var(--system-spectrum-tag-background-color-active); + --spectrum-tag-background-color-focus: var(--system-spectrum-tag-background-color-focus); + --spectrum-tag-content-color: var(--system-spectrum-tag-content-color); + --spectrum-tag-content-color-hover: var(--system-spectrum-tag-content-color-hover); + --spectrum-tag-content-color-active: var(--system-spectrum-tag-content-color-active); + --spectrum-tag-content-color-focus: var(--system-spectrum-tag-content-color-focus); + --spectrum-tag-border-color-selected: var(--system-spectrum-tag-border-color-selected); + --spectrum-tag-border-color-selected-hover: var(--system-spectrum-tag-border-color-selected-hover); + --spectrum-tag-border-color-selected-active: var(--system-spectrum-tag-border-color-selected-active); + --spectrum-tag-border-color-selected-focus: var(--system-spectrum-tag-border-color-selected-focus); + --spectrum-tag-border-color-disabled: var(--system-spectrum-tag-border-color-disabled); + --spectrum-tag-background-color-disabled: var(--system-spectrum-tag-background-color-disabled); + --spectrum-tag-size-small-spacing-inline-start: var(--system-spectrum-tag-size-small-spacing-inline-start); + --spectrum-tag-size-small-label-spacing-inline-end: var(--system-spectrum-tag-size-small-label-spacing-inline-end); + --spectrum-tag-size-small-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-small-clear-button-spacing-inline-end); + --spectrum-tag-size-medium-spacing-inline-start: var(--system-spectrum-tag-size-medium-spacing-inline-start); + --spectrum-tag-size-medium-label-spacing-inline-end: var(--system-spectrum-tag-size-medium-label-spacing-inline-end); + --spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-medium-clear-button-spacing-inline-end); + --spectrum-tag-size-large-spacing-inline-start: var(--system-spectrum-tag-size-large-spacing-inline-start); + --spectrum-tag-size-large-label-spacing-inline-end: var(--system-spectrum-tag-size-large-label-spacing-inline-end); + --spectrum-tag-size-large-clear-button-spacing-inline-end: var(--system-spectrum-tag-size-large-clear-button-spacing-inline-end); +} +/*# sourceMappingURL=components/tag/index.css.map */ diff --git a/components/tag/metadata.json b/components/tag/metadata.json new file mode 100644 index 0000000000..5c40dd9f9d --- /dev/null +++ b/components/tag/metadata.json @@ -0,0 +1,382 @@ +{ + "selectors": [ + ".spectrum", + ".spectrum--express", + ".spectrum-Tag", + ".spectrum-Tag .spectrum-Avatar", + ".spectrum-Tag .spectrum-Tag-clearButton", + ".spectrum-Tag .spectrum-Tag-clearButton .spectrum-ClearButton-fill", + ".spectrum-Tag .spectrum-Tag-itemIcon", + ".spectrum-Tag .spectrum-Tag-itemLabel", + ".spectrum-Tag--sizeL", + ".spectrum-Tag--sizeM", + ".spectrum-Tag--sizeS", + ".spectrum-Tag.is-disabled", + ".spectrum-Tag.is-disabled .spectrum-Avatar", + ".spectrum-Tag.is-emphasized", + ".spectrum-Tag.is-emphasized.is-focused,\n.spectrum-Tag.is-emphasized:focus-visible", + ".spectrum-Tag.is-emphasized:active", + ".spectrum-Tag.is-emphasized:hover", + ".spectrum-Tag.is-focused,\n.spectrum-Tag:focus-visible", + ".spectrum-Tag.is-focused:after,\n.spectrum-Tag:focus-visible:after", + ".spectrum-Tag.is-invalid", + ".spectrum-Tag.is-invalid.is-focused,\n.spectrum-Tag.is-invalid:focus-visible", + ".spectrum-Tag.is-invalid.is-selected", + ".spectrum-Tag.is-invalid.is-selected.is-focused,\n.spectrum-Tag.is-invalid.is-selected:focus-visible", + ".spectrum-Tag.is-invalid.is-selected:active", + ".spectrum-Tag.is-invalid.is-selected:hover", + ".spectrum-Tag.is-invalid:active", + ".spectrum-Tag.is-invalid:hover", + ".spectrum-Tag.is-selected", + ".spectrum-Tag.is-selected.is-focused,\n.spectrum-Tag.is-selected:focus-visible", + ".spectrum-Tag.is-selected:active", + ".spectrum-Tag.is-selected:hover", + ".spectrum-Tag:active", + ".spectrum-Tag:hover" + ], + "mods": [ + "--mod-avatar-opacity-disabled", + "--mod-clearbutton-fill-background-color", + "--mod-clearbutton-fill-size", + "--mod-tag-animation-duration", + "--mod-tag-avatar-spacing-block-end", + "--mod-tag-avatar-spacing-block-start", + "--mod-tag-avatar-spacing-inline-end", + "--mod-tag-background-color", + "--mod-tag-background-color-active", + "--mod-tag-background-color-disabled", + "--mod-tag-background-color-emphasized", + "--mod-tag-background-color-emphasized-active", + "--mod-tag-background-color-emphasized-focus", + "--mod-tag-background-color-emphasized-hover", + "--mod-tag-background-color-focus", + "--mod-tag-background-color-hover", + "--mod-tag-background-color-invalid-selected", + "--mod-tag-background-color-invalid-selected-active", + "--mod-tag-background-color-invalid-selected-focus", + "--mod-tag-background-color-invalid-selected-hover", + "--mod-tag-background-color-selected", + "--mod-tag-background-color-selected-active", + "--mod-tag-background-color-selected-focus", + "--mod-tag-background-color-selected-hover", + "--mod-tag-border-color", + "--mod-tag-border-color-active", + "--mod-tag-border-color-disabled", + "--mod-tag-border-color-emphasized", + "--mod-tag-border-color-emphasized-active", + "--mod-tag-border-color-emphasized-focus", + "--mod-tag-border-color-emphasized-hover", + "--mod-tag-border-color-focus", + "--mod-tag-border-color-hover", + "--mod-tag-border-color-invalid", + "--mod-tag-border-color-invalid-active", + "--mod-tag-border-color-invalid-focus", + "--mod-tag-border-color-invalid-hover", + "--mod-tag-border-color-invalid-selected", + "--mod-tag-border-color-invalid-selected-active", + "--mod-tag-border-color-invalid-selected-focus", + "--mod-tag-border-color-invalid-selected-hover", + "--mod-tag-border-color-selected", + "--mod-tag-border-color-selected-active", + "--mod-tag-border-color-selected-focus", + "--mod-tag-border-color-selected-hover", + "--mod-tag-border-width", + "--mod-tag-clear-button-spacing-block", + "--mod-tag-clear-button-spacing-inline-end", + "--mod-tag-clear-button-spacing-inline-start", + "--mod-tag-content-color", + "--mod-tag-content-color-active", + "--mod-tag-content-color-disabled", + "--mod-tag-content-color-emphasized", + "--mod-tag-content-color-focus", + "--mod-tag-content-color-hover", + "--mod-tag-content-color-invalid", + "--mod-tag-content-color-invalid-active", + "--mod-tag-content-color-invalid-focus", + "--mod-tag-content-color-invalid-hover", + "--mod-tag-content-color-invalid-selected", + "--mod-tag-content-color-selected", + "--mod-tag-corner-radius", + "--mod-tag-focus-ring-color", + "--mod-tag-focus-ring-gap", + "--mod-tag-focus-ring-thickness", + "--mod-tag-font-size", + "--mod-tag-height", + "--mod-tag-icon-size", + "--mod-tag-icon-spacing-block-end", + "--mod-tag-icon-spacing-block-start", + "--mod-tag-icon-spacing-inline-end", + "--mod-tag-label-font-weight", + "--mod-tag-label-line-height", + "--mod-tag-label-spacing-block", + "--mod-tag-label-spacing-inline-end", + "--mod-tag-spacing-inline-start" + ], + "spectrum": [ + "--spectrum-accent-background-color-default", + "--spectrum-accent-background-color-down", + "--spectrum-accent-background-color-hover", + "--spectrum-accent-background-color-key-focus", + "--spectrum-animation-duration-100", + "--spectrum-avatar-opacity-disabled", + "--spectrum-border-width-100", + "--spectrum-clearbutton-fill-background-color", + "--spectrum-clearbutton-fill-size", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-edge-to-visual-100", + "--spectrum-component-edge-to-visual-200", + "--spectrum-component-edge-to-visual-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-75", + "--spectrum-component-pill-edge-to-text-100", + "--spectrum-component-pill-edge-to-text-200", + "--spectrum-component-pill-edge-to-text-75", + "--spectrum-component-pill-edge-to-visual-100", + "--spectrum-component-pill-edge-to-visual-200", + "--spectrum-component-pill-edge-to-visual-75", + "--spectrum-component-top-to-text-100", + "--spectrum-component-top-to-text-200", + "--spectrum-component-top-to-text-75", + "--spectrum-component-top-to-workflow-icon-100", + "--spectrum-component-top-to-workflow-icon-200", + "--spectrum-component-top-to-workflow-icon-75", + "--spectrum-corner-radius-100", + "--spectrum-disabled-background-color", + "--spectrum-disabled-border-color", + "--spectrum-disabled-content-color", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-75", + "--spectrum-gray-200", + "--spectrum-gray-300", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-500", + "--spectrum-gray-700", + "--spectrum-gray-75", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-line-height-100", + "--spectrum-negative-background-color-default", + "--spectrum-negative-background-color-down", + "--spectrum-negative-background-color-hover", + "--spectrum-negative-background-color-key-focus", + "--spectrum-negative-color-1000", + "--spectrum-negative-color-1100", + "--spectrum-negative-color-900", + "--spectrum-negative-content-color-default", + "--spectrum-negative-content-color-down", + "--spectrum-negative-content-color-hover", + "--spectrum-negative-content-color-key-focus", + "--spectrum-neutral-background-color-default", + "--spectrum-neutral-background-color-down", + "--spectrum-neutral-background-color-hover", + "--spectrum-neutral-background-color-key-focus", + "--spectrum-neutral-background-color-selected-default", + "--spectrum-neutral-background-color-selected-down", + "--spectrum-neutral-background-color-selected-hover", + "--spectrum-neutral-background-color-selected-key-focus", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-down", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-neutral-subdued-background-color-default", + "--spectrum-neutral-subdued-background-color-down", + "--spectrum-neutral-subdued-background-color-hover", + "--spectrum-neutral-subdued-background-color-key-focus", + "--spectrum-neutral-subdued-content-color-default", + "--spectrum-neutral-subdued-content-color-down", + "--spectrum-neutral-subdued-content-color-hover", + "--spectrum-neutral-subdued-content-color-key-focus", + "--spectrum-regular-font-weight", + "--spectrum-tag-animation-duration", + "--spectrum-tag-avatar-spacing-block-end", + "--spectrum-tag-avatar-spacing-block-start", + "--spectrum-tag-avatar-spacing-inline-end", + "--spectrum-tag-background-color", + "--spectrum-tag-background-color-active", + "--spectrum-tag-background-color-disabled", + "--spectrum-tag-background-color-emphasized", + "--spectrum-tag-background-color-emphasized-active", + "--spectrum-tag-background-color-emphasized-focus", + "--spectrum-tag-background-color-emphasized-hover", + "--spectrum-tag-background-color-focus", + "--spectrum-tag-background-color-hover", + "--spectrum-tag-background-color-invalid-selected", + "--spectrum-tag-background-color-invalid-selected-active", + "--spectrum-tag-background-color-invalid-selected-focus", + "--spectrum-tag-background-color-invalid-selected-hover", + "--spectrum-tag-background-color-selected", + "--spectrum-tag-background-color-selected-active", + "--spectrum-tag-background-color-selected-focus", + "--spectrum-tag-background-color-selected-hover", + "--spectrum-tag-border-color", + "--spectrum-tag-border-color-active", + "--spectrum-tag-border-color-disabled", + "--spectrum-tag-border-color-emphasized", + "--spectrum-tag-border-color-emphasized-active", + "--spectrum-tag-border-color-emphasized-focus", + "--spectrum-tag-border-color-emphasized-hover", + "--spectrum-tag-border-color-focus", + "--spectrum-tag-border-color-hover", + "--spectrum-tag-border-color-invalid", + "--spectrum-tag-border-color-invalid-active", + "--spectrum-tag-border-color-invalid-focus", + "--spectrum-tag-border-color-invalid-hover", + "--spectrum-tag-border-color-invalid-selected", + "--spectrum-tag-border-color-invalid-selected-active", + "--spectrum-tag-border-color-invalid-selected-focus", + "--spectrum-tag-border-color-invalid-selected-hover", + "--spectrum-tag-border-color-selected", + "--spectrum-tag-border-color-selected-active", + "--spectrum-tag-border-color-selected-focus", + "--spectrum-tag-border-color-selected-hover", + "--spectrum-tag-border-width", + "--spectrum-tag-clear-button-spacing-block", + "--spectrum-tag-clear-button-spacing-inline-end", + "--spectrum-tag-clear-button-spacing-inline-start", + "--spectrum-tag-content-color", + "--spectrum-tag-content-color-active", + "--spectrum-tag-content-color-disabled", + "--spectrum-tag-content-color-emphasized", + "--spectrum-tag-content-color-focus", + "--spectrum-tag-content-color-hover", + "--spectrum-tag-content-color-invalid", + "--spectrum-tag-content-color-invalid-active", + "--spectrum-tag-content-color-invalid-focus", + "--spectrum-tag-content-color-invalid-hover", + "--spectrum-tag-content-color-invalid-selected", + "--spectrum-tag-content-color-selected", + "--spectrum-tag-corner-radius", + "--spectrum-tag-focus-ring-color", + "--spectrum-tag-focus-ring-gap", + "--spectrum-tag-focus-ring-thickness", + "--spectrum-tag-font-size", + "--spectrum-tag-height", + "--spectrum-tag-icon-size", + "--spectrum-tag-icon-spacing-block-end", + "--spectrum-tag-icon-spacing-block-start", + "--spectrum-tag-icon-spacing-inline-end", + "--spectrum-tag-label-font-weight", + "--spectrum-tag-label-line-height", + "--spectrum-tag-label-spacing-block", + "--spectrum-tag-label-spacing-inline-end", + "--spectrum-tag-size-large-clear-button-spacing-inline-end", + "--spectrum-tag-size-large-corner-radius", + "--spectrum-tag-size-large-label-spacing-inline-end", + "--spectrum-tag-size-large-spacing-inline-start", + "--spectrum-tag-size-medium-clear-button-spacing-inline-end", + "--spectrum-tag-size-medium-corner-radius", + "--spectrum-tag-size-medium-label-spacing-inline-end", + "--spectrum-tag-size-medium-spacing-inline-start", + "--spectrum-tag-size-small-clear-button-spacing-inline-end", + "--spectrum-tag-size-small-corner-radius", + "--spectrum-tag-size-small-label-spacing-inline-end", + "--spectrum-tag-size-small-spacing-inline-start", + "--spectrum-tag-spacing-inline-start", + "--spectrum-tag-top-to-avatar-large", + "--spectrum-tag-top-to-avatar-medium", + "--spectrum-tag-top-to-avatar-small", + "--spectrum-tag-top-to-cross-icon-large", + "--spectrum-tag-top-to-cross-icon-medium", + "--spectrum-tag-top-to-cross-icon-small", + "--spectrum-text-to-visual-100", + "--spectrum-text-to-visual-200", + "--spectrum-text-to-visual-75", + "--spectrum-white", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-75" + ], + "system": [ + "--system-spectrum-tag-background-color", + "--system-spectrum-tag-background-color-active", + "--system-spectrum-tag-background-color-disabled", + "--system-spectrum-tag-background-color-focus", + "--system-spectrum-tag-background-color-hover", + "--system-spectrum-tag-border-color", + "--system-spectrum-tag-border-color-active", + "--system-spectrum-tag-border-color-disabled", + "--system-spectrum-tag-border-color-focus", + "--system-spectrum-tag-border-color-hover", + "--system-spectrum-tag-border-color-selected", + "--system-spectrum-tag-border-color-selected-active", + "--system-spectrum-tag-border-color-selected-focus", + "--system-spectrum-tag-border-color-selected-hover", + "--system-spectrum-tag-content-color", + "--system-spectrum-tag-content-color-active", + "--system-spectrum-tag-content-color-focus", + "--system-spectrum-tag-content-color-hover", + "--system-spectrum-tag-size-large-clear-button-spacing-inline-end", + "--system-spectrum-tag-size-large-corner-radius", + "--system-spectrum-tag-size-large-label-spacing-inline-end", + "--system-spectrum-tag-size-large-spacing-inline-start", + "--system-spectrum-tag-size-medium-clear-button-spacing-inline-end", + "--system-spectrum-tag-size-medium-corner-radius", + "--system-spectrum-tag-size-medium-label-spacing-inline-end", + "--system-spectrum-tag-size-medium-spacing-inline-start", + "--system-spectrum-tag-size-small-clear-button-spacing-inline-end", + "--system-spectrum-tag-size-small-corner-radius", + "--system-spectrum-tag-size-small-label-spacing-inline-end", + "--system-spectrum-tag-size-small-spacing-inline-start" + ], + "a11y": [ + "--highcontrast-tag-background-color", + "--highcontrast-tag-background-color-active", + "--highcontrast-tag-background-color-disabled", + "--highcontrast-tag-background-color-emphasized", + "--highcontrast-tag-background-color-emphasized-active", + "--highcontrast-tag-background-color-emphasized-focus", + "--highcontrast-tag-background-color-emphasized-hover", + "--highcontrast-tag-background-color-focus", + "--highcontrast-tag-background-color-hover", + "--highcontrast-tag-background-color-invalid-selected", + "--highcontrast-tag-background-color-invalid-selected-active", + "--highcontrast-tag-background-color-invalid-selected-focus", + "--highcontrast-tag-background-color-invalid-selected-hover", + "--highcontrast-tag-background-color-selected", + "--highcontrast-tag-background-color-selected-active", + "--highcontrast-tag-background-color-selected-focus", + "--highcontrast-tag-background-color-selected-hover", + "--highcontrast-tag-border-color", + "--highcontrast-tag-border-color-active", + "--highcontrast-tag-border-color-disabled", + "--highcontrast-tag-border-color-emphasized", + "--highcontrast-tag-border-color-emphasized-active", + "--highcontrast-tag-border-color-emphasized-focus", + "--highcontrast-tag-border-color-emphasized-hover", + "--highcontrast-tag-border-color-focus", + "--highcontrast-tag-border-color-hover", + "--highcontrast-tag-border-color-invalid", + "--highcontrast-tag-border-color-invalid-active", + "--highcontrast-tag-border-color-invalid-focus", + "--highcontrast-tag-border-color-invalid-hover", + "--highcontrast-tag-border-color-invalid-selected", + "--highcontrast-tag-border-color-invalid-selected-active", + "--highcontrast-tag-border-color-invalid-selected-focus", + "--highcontrast-tag-border-color-invalid-selected-hover", + "--highcontrast-tag-border-color-selected", + "--highcontrast-tag-border-color-selected-active", + "--highcontrast-tag-border-color-selected-focus", + "--highcontrast-tag-border-color-selected-hover", + "--highcontrast-tag-content-color", + "--highcontrast-tag-content-color-active", + "--highcontrast-tag-content-color-disabled", + "--highcontrast-tag-content-color-emphasized", + "--highcontrast-tag-content-color-focus", + "--highcontrast-tag-content-color-hover", + "--highcontrast-tag-content-color-invalid", + "--highcontrast-tag-content-color-invalid-active", + "--highcontrast-tag-content-color-invalid-focus", + "--highcontrast-tag-content-color-invalid-hover", + "--highcontrast-tag-content-color-invalid-selected", + "--highcontrast-tag-content-color-selected", + "--highcontrast-tag-focus-ring-color" + ] +} diff --git a/components/tag/package.json b/components/tag/package.json new file mode 100644 index 0000000000..97f8f59a2b --- /dev/null +++ b/components/tag/package.json @@ -0,0 +1,53 @@ +{ + "name": "@spectrum-css/tag", + "version": "9.1.1", + "description": "The Spectrum CSS tags component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/tag", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/tag" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/avatar": ">=7", + "@spectrum-css/clearbutton": ">=6", + "@spectrum-css/icon": ">=7", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/avatar": { + "optional": true + }, + "@spectrum-css/icon": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/avatar": "workspace:^", + "@spectrum-css/clearbutton": "workspace:^", + "@spectrum-css/icon": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/tag/template.js b/components/tag/template.js new file mode 100644 index 0000000000..b3222ce7d6 --- /dev/null +++ b/components/tag/template.js @@ -0,0 +1,74 @@ +import { Template as Avatar } from "@spectrum-css/avatar/stories/template.js"; +import { Template as ClearButton } from "@spectrum-css/clearbutton/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-Tag", + size = "m", + iconName, + avatarUrl, + label, + isSelected = false, + isEmphasized = false, + isDisabled = false, + isInvalid = false, + hasClearButton = false, + id, + customClasses = [], + customStyles = {}, +} = {}, context = {}) => { + if(isInvalid) iconName = "Alert"; + + return html` +
    ({ ...a, [c]: true }), {}), + })} + id=${ifDefined(id)} + tabindex=${isDisabled ? "-1" : "0"} + style=${styleMap(customStyles)} + > + ${when(avatarUrl && !isInvalid, () => + Avatar({ + image: avatarUrl, + size: "50", + }, context) + )} + ${when(iconName || isInvalid, () => + Icon({ + size, + iconName, + customClasses: [`${rootClass}-itemIcon`], + }, context) + )} + ${label} + ${when(hasClearButton, () => + ClearButton({ + size, + customClasses: [`${rootClass}-clearButton`], + onclick: (evt) => { + const el = evt.target; + if (!el) return; + + const wrapper = el.closest(rootClass); + wrapper.parentNode.removeChild(wrapper); + }, + }, context) + )} +
    + `; +}; diff --git a/components/tag/themes/express.css b/components/tag/themes/express.css new file mode 100644 index 0000000000..a7996ebe39 --- /dev/null +++ b/components/tag/themes/express.css @@ -0,0 +1,46 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum--express { + --system-spectrum-tag-border-color: var(--spectrum-gray-300); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-400); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-500); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-400); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-component-height-75); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-component-height-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-component-height-200); + --system-spectrum-tag-background-color: transparent; + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-300); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-400); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-300); + --system-spectrum-tag-content-color: var(--spectrum-neutral-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: var(--spectrum-disabled-border-color); + --system-spectrum-tag-background-color-disabled: transparent; + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-pill-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-pill-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-pill-edge-to-visual-200); +} +/*# sourceMappingURL=components/tag/themes/express.css.map */ diff --git a/components/tag/themes/spectrum.css b/components/tag/themes/spectrum.css new file mode 100644 index 0000000000..10f78df16f --- /dev/null +++ b/components/tag/themes/spectrum.css @@ -0,0 +1,46 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-tag-border-color: var(--spectrum-gray-700); + --system-spectrum-tag-border-color-hover: var(--spectrum-gray-800); + --system-spectrum-tag-border-color-active: var(--spectrum-gray-900); + --system-spectrum-tag-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-tag-size-small-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-medium-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-size-large-corner-radius: var(--spectrum-corner-radius-100); + --system-spectrum-tag-background-color: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-hover: var(--spectrum-gray-75); + --system-spectrum-tag-background-color-active: var(--spectrum-gray-200); + --system-spectrum-tag-background-color-focus: var(--spectrum-gray-75); + --system-spectrum-tag-content-color: var(--spectrum-neutral-subdued-content-color-default); + --system-spectrum-tag-content-color-hover: var(--spectrum-neutral-subdued-content-color-hover); + --system-spectrum-tag-content-color-active: var(--spectrum-neutral-subdued-content-color-down); + --system-spectrum-tag-content-color-focus: var(--spectrum-neutral-subdued-content-color-key-focus); + --system-spectrum-tag-border-color-selected: var(--spectrum-neutral-subdued-background-color-default); + --system-spectrum-tag-border-color-selected-hover: var(--spectrum-neutral-subdued-background-color-hover); + --system-spectrum-tag-border-color-selected-active: var(--spectrum-neutral-subdued-background-color-down); + --system-spectrum-tag-border-color-selected-focus: var(--spectrum-neutral-subdued-background-color-key-focus); + --system-spectrum-tag-border-color-disabled: transparent; + --system-spectrum-tag-background-color-disabled: var(--spectrum-disabled-background-color); + --system-spectrum-tag-size-small-spacing-inline-start: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-small-label-spacing-inline-end: var(--spectrum-component-edge-to-text-75); + --system-spectrum-tag-size-small-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-75); + --system-spectrum-tag-size-medium-spacing-inline-start: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-medium-label-spacing-inline-end: var(--spectrum-component-edge-to-text-100); + --system-spectrum-tag-size-medium-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-100); + --system-spectrum-tag-size-large-spacing-inline-start: var(--spectrum-component-edge-to-visual-200); + --system-spectrum-tag-size-large-label-spacing-inline-end: var(--spectrum-component-edge-to-text-200); + --system-spectrum-tag-size-large-clear-button-spacing-inline-end: var(--spectrum-component-edge-to-visual-200); +} +/*# sourceMappingURL=components/tag/themes/spectrum.css.map */ diff --git a/components/taggroup/index-base.css b/components/taggroup/index-base.css new file mode 100644 index 0000000000..0ac1aad889 --- /dev/null +++ b/components/taggroup/index-base.css @@ -0,0 +1,27 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-TagGroup { + --spectrum-tag-group-item-margin-block: var(--spectrum-spacing-75); + --spectrum-tag-group-item-margin-inline: var(--spectrum-spacing-75); + display: inline-flex; + flex-wrap: wrap; + margin: 0; + padding: 0; + list-style: none; +} +.spectrum-TagGroup-item { + margin-block: var(--mod-tag-group-item-margin-block, var(--spectrum-tag-group-item-margin-block)); + margin-inline: var(--mod-tag-group-item-margin-inline, var(--spectrum-tag-group-item-margin-inline)); +} +/*# sourceMappingURL=components/taggroup/index.css.map */ diff --git a/components/taggroup/index-vars.css b/components/taggroup/index-vars.css new file mode 100644 index 0000000000..0ac1aad889 --- /dev/null +++ b/components/taggroup/index-vars.css @@ -0,0 +1,27 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-TagGroup { + --spectrum-tag-group-item-margin-block: var(--spectrum-spacing-75); + --spectrum-tag-group-item-margin-inline: var(--spectrum-spacing-75); + display: inline-flex; + flex-wrap: wrap; + margin: 0; + padding: 0; + list-style: none; +} +.spectrum-TagGroup-item { + margin-block: var(--mod-tag-group-item-margin-block, var(--spectrum-tag-group-item-margin-block)); + margin-inline: var(--mod-tag-group-item-margin-inline, var(--spectrum-tag-group-item-margin-inline)); +} +/*# sourceMappingURL=components/taggroup/index.css.map */ diff --git a/components/taggroup/index.css b/components/taggroup/index.css new file mode 100644 index 0000000000..0ac1aad889 --- /dev/null +++ b/components/taggroup/index.css @@ -0,0 +1,27 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-TagGroup { + --spectrum-tag-group-item-margin-block: var(--spectrum-spacing-75); + --spectrum-tag-group-item-margin-inline: var(--spectrum-spacing-75); + display: inline-flex; + flex-wrap: wrap; + margin: 0; + padding: 0; + list-style: none; +} +.spectrum-TagGroup-item { + margin-block: var(--mod-tag-group-item-margin-block, var(--spectrum-tag-group-item-margin-block)); + margin-inline: var(--mod-tag-group-item-margin-inline, var(--spectrum-tag-group-item-margin-inline)); +} +/*# sourceMappingURL=components/taggroup/index.css.map */ diff --git a/components/taggroup/metadata.json b/components/taggroup/metadata.json new file mode 100644 index 0000000000..a701bef2c4 --- /dev/null +++ b/components/taggroup/metadata.json @@ -0,0 +1,14 @@ +{ + "selectors": [".spectrum-TagGroup", ".spectrum-TagGroup-item"], + "mods": [ + "--mod-tag-group-item-margin-block", + "--mod-tag-group-item-margin-inline" + ], + "spectrum": [ + "--spectrum-spacing-75", + "--spectrum-tag-group-item-margin-block", + "--spectrum-tag-group-item-margin-inline" + ], + "system": [], + "a11y": [] +} diff --git a/components/taggroup/package.json b/components/taggroup/package.json new file mode 100644 index 0000000000..7894e0e07b --- /dev/null +++ b/components/taggroup/package.json @@ -0,0 +1,41 @@ +{ + "name": "@spectrum-css/taggroup", + "version": "5.1.1", + "description": "The Spectrum CSS tag group component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/taggroup", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/taggroup" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/tag": ">=9", + "@spectrum-css/tokens": ">=14" + }, + "devDependencies": { + "@spectrum-css/tag": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/taggroup/template.js b/components/taggroup/template.js new file mode 100644 index 0000000000..c088fe3f43 --- /dev/null +++ b/components/taggroup/template.js @@ -0,0 +1,77 @@ +import { Variants } from "@spectrum-css/preview/decorators"; +import { Template as Tag } from "@spectrum-css/tag/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; + +import "../index.css"; + +export const Template = ({ + rootClass = "spectrum-TagGroup", + ariaLabel, + items = [], + isRemovable = false, + customClasses = [], + customStyles = {}, + size = "m", +}, context) => html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + role="list" + aria-label=${ifDefined(ariaLabel)} + > + ${items.map((i) => Tag({ + ...i, + size, + hasClearButton: isRemovable, + customClasses: [`${rootClass}-item`], + }, context))} +
    +`; + +export const TagGroups = Variants({ + Template, + testData: [ + { + testHeading: "Default", + }, + { + testHeading: "Is removable", + isRemovable: true, + }, + { + testHeading: "Overflow", + isRemovable: true, + isEmphasized: false, + customStyles: {"max-width": "300px"}, + items: [ + { + label: "Tag 1 Example", + }, + { + label: "Tag 2 Example", + }, + { + label: "Tag 3 Example", + }, + { + label: "Tag 4", + }, + { + label: "Tag 5", + }, + { + label: "Tag 6", + }, + { + label: "Tag 7", + }, + ], + } + ], +}); diff --git a/components/textfield/index-base.css b/components/textfield/index-base.css new file mode 100644 index 0000000000..630ca7dbba --- /dev/null +++ b/components/textfield/index-base.css @@ -0,0 +1,535 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum-Textfield { + --spectrum-textfield-input-line-height: var(--spectrum-textfield-height); + --spectrum-texfield-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-textfield-width: 240px; + --spectrum-textfield-min-width: var(--spectrum-text-field-minimum-width-multiplier); + --spectrum-textfield-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-textfield-height: var(--spectrum-component-height-100); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-100); + --spectrum-textfield-spacing-inline-quiet: var(--spectrum-field-edge-to-text-quiet); + --spectrum-textfield-spacing-block-start: var(--spectrum-component-top-to-text-100); + --spectrum-textfield-spacing-block-end: var(--spectrum-component-bottom-to-text-100); + --spectrum-textfield-spacing-block-quiet: var(--spectrum-field-edge-to-border-quiet); + --spectrum-textfield-label-spacing-block: var(--spectrum-field-label-to-component); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-100); + --spectrum-textfield-helptext-spacing-block: var(--spectrum-help-text-to-component); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-100); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-100); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-quiet-invalid: var(--spectrum-field-edge-to-alert-icon-quiet); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-quiet-valid: var(--spectrum-field-edge-to-validation-icon-quiet); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-medium); + --spectrum-textfield-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-textfield-font-weight: var(--spectrum-regular-font-weight); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-character-count-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-textfield-character-count-font-weight: var(--spectrum-regular-font-weight); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-inline: var(--spectrum-spacing-200); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-inline-side: var(--spectrum-side-label-character-count-to-field); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-medium); + --spectrum-textfield-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-textfield-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-textfield-background-color: var(--spectrum-gray-50); + --spectrum-textfield-text-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-text-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-textfield-text-color-focus: var(--spectrum-neutral-content-color-focus); + --spectrum-textfield-text-color-focus-hover: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-textfield-text-color-keyboard-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-textfield-text-color-readonly: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-textfield-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-textfield-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-textfield-border-color-invalid-default: var(--spectrum-negative-border-color-default); + --spectrum-textfield-border-color-invalid-hover: var(--spectrum-negative-border-color-hover); + --spectrum-textfield-border-color-invalid-focus: var(--spectrum-negative-border-color-focus); + --spectrum-textfield-border-color-invalid-focus-hover: var(--spectrum-negative-border-color-focus-hover); + --spectrum-textfield-border-color-invalid-keyboard-focus: var(--spectrum-negative-border-color-key-focus); + --spectrum-textfield-icon-color-invalid: var(--spectrum-negative-visual-color); + --spectrum-textfield-text-color-invalid: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-text-color-valid: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-icon-color-valid: var(--spectrum-positive-visual-color); + --spectrum-textfield-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-text-area-min-inline-size: var(--spectrum-text-area-minimum-width); + --spectrum-text-area-min-block-size: var(--spectrum-text-area-minimum-height); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-100); +} +.spectrum-Textfield--sizeS { + --spectrum-textfield-height: var(--spectrum-component-height-75); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-small); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-100); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-75); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-75); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-75); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-small); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-small); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-small); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-small); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-small); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-small); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-small); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-75); +} +.spectrum-Textfield--sizeM { + --spectrum-textfield-height: var(--spectrum-component-height-100); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-100); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-100); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-100); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-medium); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-medium); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-medium); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-100); +} +.spectrum-Textfield--sizeL { + --spectrum-textfield-height: var(--spectrum-component-height-200); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-large); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-200); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-200); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-200); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-200); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-large); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-large); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-large); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-large); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-large); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-100); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-large); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-large); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-200); +} +.spectrum-Textfield--sizeXL { + --spectrum-textfield-height: var(--spectrum-component-height-300); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-extra-large); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-300); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-200); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-300); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-300); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-extra-large); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-extra-large); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-200); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-200); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-extra-large); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-extra-large); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-300); +} +.spectrum-Textfield { + position: relative; + text-overflow: ellipsis; + inline-size: var(--mod-textfield-width, var(--spectrum-textfield-width)); + display: inline-grid; + grid-template-columns: auto auto; + grid-template-rows: auto auto auto; + overflow: visible; + margin: 0; +} +.spectrum-Textfield.spectrum-Textfield--quiet:after { + content: ""; + pointer-events: none; + position: absolute; + inset-block-end: calc((var(--mod-textfield-focus-indicator-gap, var(--spectrum-textfield-focus-indicator-gap)) + var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width))) * -1); + inset-inline-start: 0; + inline-size: 100%; + block-size: var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width)); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-keyboardFocused:after { + background-color: var(--highcontrast-textfield-focus-indicator-color, var(--mod-textfield-focus-indicator-color, var(--spectrum-textfield-focus-indicator-color))); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-invalid, var(--spectrum-textfield-icon-spacing-inline-start-invalid)) + var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid))); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-valid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-valid, var(--spectrum-textfield-icon-spacing-inline-start-valid)) + var(--mod-textfield-icon-size-valid, var(--spectrum-textfield-icon-size-valid))); +} +.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon { + position: absolute; + pointer-events: all; + inset-block-start: 0; + margin-inline-start: auto; + grid-row: 2; + grid-column: 2; +} +.spectrum-Textfield.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon { + inset-block-start: var(--mod-textfield-icon-spacing-block-valid, var(--spectrum-textfield-icon-spacing-block-valid)); + inset-block-end: var(--mod-textfield-icon-spacing-block-valid, var(--spectrum-textfield-icon-spacing-block-valid)); + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-valid, var(--spectrum-textfield-icon-spacing-inline-end-valid)); + color: var(--highcontrast-textfield-icon-color-valid, var(--mod-textfield-icon-color-valid, var(--spectrum-textfield-icon-color-valid))); +} +.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon { + block-size: var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)); + inline-size: var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)); + inset-block-start: var(--mod-textfield-icon-spacing-block-invalid, var(--spectrum-textfield-icon-spacing-block-invalid)); + inset-block-end: var(--mod-textfield-icon-spacing-block-invalid, var(--spectrum-textfield-icon-spacing-block-invalid)); + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-invalid, var(--spectrum-textfield-icon-spacing-inline-end-invalid)); + color: var(--highcontrast-textfield-icon-color-invalid, var(--mod-textfield-icon-color-invalid, var(--spectrum-textfield-icon-color-invalid))); +} +.spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon { + color: transparent; +} +.spectrum-Textfield--quiet .spectrum-Textfield-validationIcon { + padding-inline-end: 0; +} +.spectrum-Textfield--quiet.is-valid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-quiet-valid, var(--spectrum-textfield-icon-spacing-inline-end-quiet-valid)); +} +.spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-quiet-invalid, var(--spectrum-textfield-icon-spacing-inline-end-quiet-invalid)); +} +.spectrum-Textfield .spectrum-FieldLabel { + margin-block-end: var(--mod-textfield-label-spacing-block, var(--spectrum-textfield-label-spacing-block)); + grid-row: 1; + grid-column: 1 / span 1; +} +.spectrum-Textfield--quiet .spectrum-FieldLabel { + margin-block-end: var(--mod-textfield-label-spacing-block-quiet, var(--spectrum-textfield-label-spacing-block-quiet)); +} +.is-disabled .spectrum-FieldLabel { + color: var(--spectrum-textfield-text-color-disabled); +} +.spectrum-Textfield .spectrum-HelpText { + margin-block-start: var(--mod-textfield-helptext-spacing-block, var(--spectrum-textfield-helptext-spacing-block)); + grid-row: 3; + grid-column: 1 / span 2; +} +.spectrum-Textfield-characterCount { + display: inline-flex; + align-items: flex-end; + justify-content: flex-end; + inline-size: auto; + margin-block-end: var(--mod-textfield-character-count-spacing-block, var(--spectrum-textfield-character-count-spacing-block)); + margin-inline-start: var(--mod-textfield-character-count-spacing-inline, var(--spectrum-textfield-character-count-spacing-inline)); + margin-inline-end: 0; + font-size: var(--mod-textfield-character-count-font-size, var(--spectrum-textfield-character-count-font-size)); + font-family: var(--mod-textfield-character-count-font-family, var(--spectrum-textfield-character-count-font-family)); + font-weight: var(--mod-textfield-character-count-font-weight, var(--spectrum-textfield-character-count-font-weight)); + grid-row: 1; + grid-column: 2 / span 1; + padding-inline-end: calc(var(--mod-textfield-corner-radius, var(--spectrum-textfield-corner-radius)) / 2); +} +.spectrum-Textfield--quiet .spectrum-Textfield-characterCount { + margin-block-end: var(--mod-textfield-character-count-spacing-block-quiet, var(--spectrum-textfield-character-count-spacing-block-quiet)); +} +.spectrum-Textfield-input { + line-height: var(--spectrum-textfield-input-line-height); + box-sizing: border-box; + inline-size: 100%; + min-inline-size: var(--mod-textfield-min-width, var(--spectrum-textfield-min-width)); + block-size: var(--mod-textfield-height, var(--spectrum-textfield-height)); + padding-block-start: calc(var(--mod-textfield-spacing-block-start, var(--spectrum-textfield-spacing-block-start)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + padding-block-end: calc(var(--mod-textfield-spacing-block-end, var(--spectrum-textfield-spacing-block-end)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + padding-inline: calc(var(--mod-textfield-spacing-inline, var(--spectrum-textfield-spacing-inline)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + vertical-align: top; + outline: none; + background-color: var(--mod-textfield-background-color, var(--spectrum-textfield-background-color)); + border: var(--mod-textfield-border-width, var(--spectrum-textfield-border-width)) solid var(--highcontrast-textfield-border-color, var(--mod-textfield-border-color, var(--spectrum-textfield-border-color))); + border-radius: var(--mod-textfield-corner-radius, var(--spectrum-textfield-corner-radius)); + transition: border-color var(--mod-texfield-animation-duration, var(--spectrum-texfield-animation-duration)) ease-in-out; + font-size: var(--mod-textfield-placeholder-font-size, var(--spectrum-textfield-placeholder-font-size)); + font-family: var(--mod-textfield-font-family, var(--spectrum-textfield-font-family)); + font-weight: var(--mod-textfield-font-weight, var(--spectrum-textfield-font-weight)); + color: var(--highcontrast-textfield-text-color-default, var(--mod-textfield-text-color-default, var(--spectrum-textfield-text-color-default))); + text-overflow: ellipsis; + grid-row: 2; + grid-column: 1 / span 2; + margin: 0; + appearance: none; +} +.spectrum-Textfield-input[type="number"] { + -moz-appearance: textfield; +} +.spectrum-Textfield-input[type="number"]::-webkit-inner-spin-button, +.spectrum-Textfield-input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} +.spectrum-Textfield-input:-moz-ui-invalid { + box-shadow: none; +} +.spectrum-Textfield-input::placeholder { + opacity: 1; + font-size: var(--mod-textfield-placeholder-font-size, var(--spectrum-textfield-placeholder-font-size)); + font-family: var(--mod-textfield-font-family, var(--spectrum-textfield-font-family)); + font-weight: var(--mod-textfield-font-weight, var(--spectrum-textfield-font-weight)); + color: var(--highcontrast-textfield-text-color-default, var(--mod-textfield-text-color-default, var(--spectrum-textfield-text-color-default))); + transition: color var(--mod-texfield-animation-duration, var(--spectrum-texfield-animation-duration)) ease-in-out; +} +.spectrum-Textfield-input:lang(ja)::placeholder, +.spectrum-Textfield-input:lang(ko)::placeholder, +.spectrum-Textfield-input:lang(zh)::placeholder { + font-style: normal; +} +.is-focused .spectrum-Textfield-input, +.spectrum-Textfield-input:focus { + border-color: var(--highcontrast-textfield-border-color-focus, var(--mod-textfield-border-color-focus, var(--spectrum-textfield-border-color-focus))); +} +.is-focused .spectrum-Textfield-input, +.is-focused .spectrum-Textfield-input::placeholder, +.spectrum-Textfield-input:focus, +.spectrum-Textfield-input:focus::placeholder { + color: var(--highcontrast-textfield-text-color-focus, var(--mod-textfield-text-color-focus, var(--spectrum-textfield-text-color-focus))); +} +.is-keyboardFocused .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-keyboard-focus, var(--mod-textfield-border-color-keyboard-focus, var(--spectrum-textfield-border-color-keyboard-focus))); + outline: var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width)) solid; + outline-color: var(--highcontrast-textfield-focus-indicator-color, var(--mod-textfield-focus-indicator-color, var(--spectrum-textfield-focus-indicator-color))); + outline-offset: var(--mod-textfield-focus-indicator-gap, var(--spectrum-textfield-focus-indicator-gap)); +} +.is-keyboardFocused .spectrum-Textfield-input, +.is-keyboardFocused .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-keyboard-focus, var(--mod-textfield-text-color-keyboard-focus, var(--spectrum-textfield-text-color-keyboard-focus))); +} +.is-valid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-valid, var(--spectrum-textfield-icon-spacing-inline-start-valid)) + var(--mod-textfield-icon-size-valid, var(--spectrum-textfield-icon-size-valid)) + var(--mod-textfield-icon-spacing-inline-end-valid, var(--spectrum-textfield-icon-spacing-inline-end-valid)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + color: var(--highcontrast-textfield-text-color-valid, var(--mod-textfield-text-color-valid, var(--spectrum-textfield-text-color-valid))); +} +.is-invalid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-invalid, var(--spectrum-textfield-icon-spacing-inline-start-invalid)) + var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)) + var(--mod-textfield-icon-spacing-inline-end-invalid, var(--spectrum-textfield-icon-spacing-inline-end-invalid)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + color: var(--highcontrast-textfield-text-color-invalid, var(--mod-textfield-text-color-invalid, var(--spectrum-textfield-text-color-invalid))); + border-color: var(--highcontrast-textfield-border-color-invalid-default, var(--mod-textfield-border-color-invalid-default, var(--spectrum-textfield-border-color-invalid-default))); +} +.is-invalid .spectrum-Textfield-input:focus, +.is-invalid.is-focused .spectrum-Textfield-input, +.is-invalid:focus .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-focus, var(--mod-textfield-border-color-invalid-focus, var(--spectrum-textfield-border-color-invalid-focus))); +} +.is-invalid .spectrum-Textfield-input:focus-visible, +.is-invalid.is-keyboardFocused .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-keyboard-focus, var(--mod-textfield-border-color-invalid-keyboard-focus, var(--spectrum-textfield-border-color-invalid-keyboard-focus))); +} +.spectrum-Textfield-input:disabled, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input { + background-color: var(--mod-textfield-background-color-disabled, var(--spectrum-textfield-background-color-disabled)); + border-color: transparent; + resize: none; + opacity: 1; +} +.spectrum-Textfield-input:disabled, +.spectrum-Textfield-input:disabled::placeholder, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); +} +.spectrum-Textfield--quiet .spectrum-Textfield-input { + outline: none; + border-block-start-width: 0; + border-inline-width: 0; + margin-block-end: var(--mod-textfield-spacing-block-quiet, var(--spectrum-textfield-spacing-block-quiet)); + padding-block-start: var(--mod-textfield-spacing-block-start, var(--spectrum-textfield-spacing-block-start)); + padding-inline: var(--mod-textfield-spacing-inline-quiet, var(--spectrum-textfield-spacing-inline-quiet)); + background-color: initial; + border-radius: 0; + resize: none; + overflow-y: hidden; +} +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield-input:disabled { + background-color: initial; + border-color: var(--mod-textfield-border-color-disabled, var(--spectrum-textfield-border-color-disabled)); +} +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input::placeholder, +.spectrum-Textfield-input:disabled, +.spectrum-Textfield-input:disabled::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); +} +.spectrum-Textfield-input:read-only, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-input { + background-color: initial; + border-color: transparent; + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + outline: none; +} +.spectrum-Textfield-input:read-only::placeholder, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + background-color: initial; +} +@media (hover: hover) { + .spectrum-Textfield-input:hover, + .spectrum-Textfield:hover .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-hover, var(--mod-textfield-border-color-hover, var(--spectrum-textfield-border-color-hover))); + } + .spectrum-Textfield-input:hover, + .spectrum-Textfield-input:hover::placeholder, + .spectrum-Textfield:hover .spectrum-Textfield-input, + .spectrum-Textfield:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-hover, var(--mod-textfield-text-color-hover, var(--spectrum-textfield-text-color-hover))); + } + .is-focused .spectrum-Textfield-input:hover, + .spectrum-Textfield-input:focus:hover { + border-color: var(--highcontrast-textfield-border-color-focus-hover, var(--mod-textfield-border-color-focus-hover, var(--spectrum-textfield-border-color-focus-hover))); + } + .is-focused .spectrum-Textfield-input:hover, + .is-focused .spectrum-Textfield-input:hover::placeholder, + .spectrum-Textfield-input:focus:hover, + .spectrum-Textfield-input:focus:hover::placeholder { + color: var(--highcontrast-textfield-text-color-focus-hover, var(--mod-textfield-text-color-focus-hover, var(--spectrum-textfield-text-color-focus-hover))); + } + .is-invalid .spectrum-Textfield-input:hover, + .is-invalid:hover .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-hover, var(--mod-textfield-border-color-invalid-hover, var(--spectrum-textfield-border-color-invalid-hover))); + } + .is-invalid .spectrum-Textfield-input:focus:hover, + .is-invalid.is-focused .spectrum-Textfield-input:hover, + .is-invalid:focus .spectrum-Textfield-input:hover { + border-color: var(--highcontrast-textfield-border-color-invalid-focus-hover, var(--mod-textfield-border-color-invalid-focus-hover, var(--spectrum-textfield-border-color-invalid-focus-hover))); + } + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input { + background-color: var(--mod-textfield-background-color-disabled, var(--spectrum-textfield-background-color-disabled)); + border-color: transparent; + resize: none; + opacity: 1; + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input { + background-color: initial; + border-color: var(--mod-textfield-border-color-disabled, var(--spectrum-textfield-border-color-disabled)); + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); + } + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input { + border-color: transparent; + outline: none; + } + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input::placeholder { + background-color: initial; + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + } +} +.spectrum-Textfield--sideLabel { + grid-template-columns: auto auto auto; + grid-template-rows: auto auto; +} +.spectrum-Textfield--sideLabel:after { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-FieldLabel { + margin-inline-end: var(--mod-textfield-label-spacing-inline-side-label, var(--spectrum-textfield-label-spacing-inline-side-label)); + grid-row: 1 / span 2; + grid-column: 1 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-Textfield-characterCount { + align-items: flex-start; + margin-block-start: var(--mod-textfield-character-count-spacing-block-side, var(--spectrum-textfield-character-count-spacing-block-side)); + margin-inline-start: var(--mod-textfield-character-count-spacing-inline-side, var(--spectrum-textfield-character-count-spacing-inline-side)); + grid-row: 1; + grid-column: 3 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-HelpText { + grid-row: 2; + grid-column: 2 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-Textfield-input, +.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield--multiline { + --spectrum-textfield-input-line-height: normal; +} +.spectrum-Textfield--multiline .spectrum-Textfield-input { + min-inline-size: var(--mod-text-area-min-inline-size, var(--spectrum-text-area-min-inline-size)); + min-block-size: var(--mod-text-area-min-block-size, var(--spectrum-text-area-min-block-size)); + resize: inherit; +} +.spectrum-Textfield--multiline.spectrum-Textfield--grows .spectrum-Textfield-input { + grid-row: 2 / auto; +} +.spectrum-Textfield--multiline.spectrum-Textfield--grows.spectrum-Textfield--sideLabel .spectrum-Textfield-input { + grid-row: 1 / auto; +} +.spectrum-Textfield--multiline.spectrum-Textfield--quiet .spectrum-Textfield-input { + min-block-size: var(--mod-text-area-min-block-size-quiet, var(--spectrum-text-area-min-block-size-quiet)); + resize: none; + overflow-y: hidden; +} +@media (forced-colors: active) { + .spectrum-Textfield { + --highcontrast-textfield-border-color-hover: Highlight; + --highcontrast-textfield-border-color-focus: Highlight; + --highcontrast-textfield-border-color-keyboard-focus: CanvasText; + --highcontrast-textfield-focus-indicator-color: Highlight; + --highcontrast-textfield-border-color-invalid-default: Highlight; + --highcontrast-textfield-border-color-invalid-hover: Highlight; + --highcontrast-textfield-border-color-invalid-focus: Highlight; + --highcontrast-textfield-border-color-invalid-keyboard-focus: Highlight; + --highcontrast-textfield-text-color-valid: CanvasText; + --highcontrast-textfield-text-color-invalid: CanvasText; + } + .spectrum-Textfield .spectrum-Textfield-input { + --highcontrast-textfield-text-color-default: CanvasText; + --highcontrast-textfield-text-color-hover: CanvasText; + --highcontrast-textfield-text-color-keyboard-focus: CanvasText; + --highcontrast-textfield-text-color-disabled: GrayText; + --highcontrast-textfield-text-color-readonly: CanvasText; + } + .spectrum-Textfield .spectrum-Textfield-input::placeholder { + --highcontrast-textfield-text-color-default: GrayText; + --highcontrast-textfield-text-color-hover: GrayText; + --highcontrast-textfield-text-color-keyboard-focus: GrayText; + --highcontrast-textfield-text-color-disabled: GrayText; + --highcontrast-textfield-text-color-readonly: CanvasText; + } +} +.spectrum-Textfield { + --spectrum-textfield-border-color: var(--system-spectrum-textfield-border-color); + --spectrum-textfield-border-color-hover: var(--system-spectrum-textfield-border-color-hover); + --spectrum-textfield-border-color-focus: var(--system-spectrum-textfield-border-color-focus); + --spectrum-textfield-border-color-focus-hover: var(--system-spectrum-textfield-border-color-focus-hover); + --spectrum-textfield-border-color-keyboard-focus: var(--system-spectrum-textfield-border-color-keyboard-focus); + --spectrum-textfield-border-width: var(--system-spectrum-textfield-border-width); +} +/*# sourceMappingURL=components/textfield/index.css.map */ diff --git a/components/textfield/index-theme.css b/components/textfield/index-theme.css new file mode 100644 index 0000000000..df43947cd2 --- /dev/null +++ b/components/textfield/index-theme.css @@ -0,0 +1,30 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-textfield-border-color: var(--spectrum-gray-500); + --system-spectrum-textfield-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-textfield-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-textfield-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-textfield-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-textfield-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-textfield-border-color: var(--spectrum-gray-400); + --system-spectrum-textfield-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-textfield-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-textfield-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-textfield-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-textfield-border-width: var(--spectrum-border-width-200); +} +/*# sourceMappingURL=components/textfield/themes/express.css.map */ diff --git a/components/textfield/index-vars.css b/components/textfield/index-vars.css new file mode 100644 index 0000000000..06e6110a0c --- /dev/null +++ b/components/textfield/index-vars.css @@ -0,0 +1,551 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-textfield-border-color: var(--spectrum-gray-500); + --system-spectrum-textfield-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-textfield-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-textfield-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-textfield-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-textfield-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-textfield-border-color: var(--spectrum-gray-400); + --system-spectrum-textfield-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-textfield-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-textfield-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-textfield-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-textfield-border-width: var(--spectrum-border-width-200); +} +.spectrum-Textfield { + --spectrum-textfield-input-line-height: var(--spectrum-textfield-height); + --spectrum-texfield-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-textfield-width: 240px; + --spectrum-textfield-min-width: var(--spectrum-text-field-minimum-width-multiplier); + --spectrum-textfield-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-textfield-height: var(--spectrum-component-height-100); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-100); + --spectrum-textfield-spacing-inline-quiet: var(--spectrum-field-edge-to-text-quiet); + --spectrum-textfield-spacing-block-start: var(--spectrum-component-top-to-text-100); + --spectrum-textfield-spacing-block-end: var(--spectrum-component-bottom-to-text-100); + --spectrum-textfield-spacing-block-quiet: var(--spectrum-field-edge-to-border-quiet); + --spectrum-textfield-label-spacing-block: var(--spectrum-field-label-to-component); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-100); + --spectrum-textfield-helptext-spacing-block: var(--spectrum-help-text-to-component); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-100); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-100); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-quiet-invalid: var(--spectrum-field-edge-to-alert-icon-quiet); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-quiet-valid: var(--spectrum-field-edge-to-validation-icon-quiet); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-medium); + --spectrum-textfield-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-textfield-font-weight: var(--spectrum-regular-font-weight); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-character-count-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-textfield-character-count-font-weight: var(--spectrum-regular-font-weight); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-inline: var(--spectrum-spacing-200); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-inline-side: var(--spectrum-side-label-character-count-to-field); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-medium); + --spectrum-textfield-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-textfield-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-textfield-background-color: var(--spectrum-gray-50); + --spectrum-textfield-text-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-text-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-textfield-text-color-focus: var(--spectrum-neutral-content-color-focus); + --spectrum-textfield-text-color-focus-hover: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-textfield-text-color-keyboard-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-textfield-text-color-readonly: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-textfield-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-textfield-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-textfield-border-color-invalid-default: var(--spectrum-negative-border-color-default); + --spectrum-textfield-border-color-invalid-hover: var(--spectrum-negative-border-color-hover); + --spectrum-textfield-border-color-invalid-focus: var(--spectrum-negative-border-color-focus); + --spectrum-textfield-border-color-invalid-focus-hover: var(--spectrum-negative-border-color-focus-hover); + --spectrum-textfield-border-color-invalid-keyboard-focus: var(--spectrum-negative-border-color-key-focus); + --spectrum-textfield-icon-color-invalid: var(--spectrum-negative-visual-color); + --spectrum-textfield-text-color-invalid: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-text-color-valid: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-icon-color-valid: var(--spectrum-positive-visual-color); + --spectrum-textfield-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-text-area-min-inline-size: var(--spectrum-text-area-minimum-width); + --spectrum-text-area-min-block-size: var(--spectrum-text-area-minimum-height); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-100); +} +.spectrum-Textfield--sizeS { + --spectrum-textfield-height: var(--spectrum-component-height-75); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-small); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-100); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-75); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-75); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-75); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-small); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-small); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-small); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-small); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-small); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-small); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-small); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-75); +} +.spectrum-Textfield--sizeM { + --spectrum-textfield-height: var(--spectrum-component-height-100); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-100); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-100); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-100); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-medium); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-medium); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-medium); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-100); +} +.spectrum-Textfield--sizeL { + --spectrum-textfield-height: var(--spectrum-component-height-200); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-large); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-200); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-200); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-200); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-200); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-large); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-large); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-large); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-large); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-large); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-100); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-large); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-large); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-200); +} +.spectrum-Textfield--sizeXL { + --spectrum-textfield-height: var(--spectrum-component-height-300); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-extra-large); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-300); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-200); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-300); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-300); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-extra-large); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-extra-large); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-200); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-200); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-extra-large); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-extra-large); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-300); +} +.spectrum-Textfield { + position: relative; + text-overflow: ellipsis; + inline-size: var(--mod-textfield-width, var(--spectrum-textfield-width)); + display: inline-grid; + grid-template-columns: auto auto; + grid-template-rows: auto auto auto; + overflow: visible; + margin: 0; +} +.spectrum-Textfield.spectrum-Textfield--quiet:after { + content: ""; + pointer-events: none; + position: absolute; + inset-block-end: calc((var(--mod-textfield-focus-indicator-gap, var(--spectrum-textfield-focus-indicator-gap)) + var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width))) * -1); + inset-inline-start: 0; + inline-size: 100%; + block-size: var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width)); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-keyboardFocused:after { + background-color: var(--highcontrast-textfield-focus-indicator-color, var(--mod-textfield-focus-indicator-color, var(--spectrum-textfield-focus-indicator-color))); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-invalid, var(--spectrum-textfield-icon-spacing-inline-start-invalid)) + var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid))); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-valid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-valid, var(--spectrum-textfield-icon-spacing-inline-start-valid)) + var(--mod-textfield-icon-size-valid, var(--spectrum-textfield-icon-size-valid))); +} +.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon { + position: absolute; + pointer-events: all; + inset-block-start: 0; + margin-inline-start: auto; + grid-row: 2; + grid-column: 2; +} +.spectrum-Textfield.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon { + inset-block-start: var(--mod-textfield-icon-spacing-block-valid, var(--spectrum-textfield-icon-spacing-block-valid)); + inset-block-end: var(--mod-textfield-icon-spacing-block-valid, var(--spectrum-textfield-icon-spacing-block-valid)); + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-valid, var(--spectrum-textfield-icon-spacing-inline-end-valid)); + color: var(--highcontrast-textfield-icon-color-valid, var(--mod-textfield-icon-color-valid, var(--spectrum-textfield-icon-color-valid))); +} +.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon { + block-size: var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)); + inline-size: var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)); + inset-block-start: var(--mod-textfield-icon-spacing-block-invalid, var(--spectrum-textfield-icon-spacing-block-invalid)); + inset-block-end: var(--mod-textfield-icon-spacing-block-invalid, var(--spectrum-textfield-icon-spacing-block-invalid)); + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-invalid, var(--spectrum-textfield-icon-spacing-inline-end-invalid)); + color: var(--highcontrast-textfield-icon-color-invalid, var(--mod-textfield-icon-color-invalid, var(--spectrum-textfield-icon-color-invalid))); +} +.spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon { + color: transparent; +} +.spectrum-Textfield--quiet .spectrum-Textfield-validationIcon { + padding-inline-end: 0; +} +.spectrum-Textfield--quiet.is-valid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-quiet-valid, var(--spectrum-textfield-icon-spacing-inline-end-quiet-valid)); +} +.spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-quiet-invalid, var(--spectrum-textfield-icon-spacing-inline-end-quiet-invalid)); +} +.spectrum-Textfield .spectrum-FieldLabel { + margin-block-end: var(--mod-textfield-label-spacing-block, var(--spectrum-textfield-label-spacing-block)); + grid-row: 1; + grid-column: 1 / span 1; +} +.spectrum-Textfield--quiet .spectrum-FieldLabel { + margin-block-end: var(--mod-textfield-label-spacing-block-quiet, var(--spectrum-textfield-label-spacing-block-quiet)); +} +.is-disabled .spectrum-FieldLabel { + color: var(--spectrum-textfield-text-color-disabled); +} +.spectrum-Textfield .spectrum-HelpText { + margin-block-start: var(--mod-textfield-helptext-spacing-block, var(--spectrum-textfield-helptext-spacing-block)); + grid-row: 3; + grid-column: 1 / span 2; +} +.spectrum-Textfield-characterCount { + display: inline-flex; + align-items: flex-end; + justify-content: flex-end; + inline-size: auto; + margin-block-end: var(--mod-textfield-character-count-spacing-block, var(--spectrum-textfield-character-count-spacing-block)); + margin-inline-start: var(--mod-textfield-character-count-spacing-inline, var(--spectrum-textfield-character-count-spacing-inline)); + margin-inline-end: 0; + font-size: var(--mod-textfield-character-count-font-size, var(--spectrum-textfield-character-count-font-size)); + font-family: var(--mod-textfield-character-count-font-family, var(--spectrum-textfield-character-count-font-family)); + font-weight: var(--mod-textfield-character-count-font-weight, var(--spectrum-textfield-character-count-font-weight)); + grid-row: 1; + grid-column: 2 / span 1; + padding-inline-end: calc(var(--mod-textfield-corner-radius, var(--spectrum-textfield-corner-radius)) / 2); +} +.spectrum-Textfield--quiet .spectrum-Textfield-characterCount { + margin-block-end: var(--mod-textfield-character-count-spacing-block-quiet, var(--spectrum-textfield-character-count-spacing-block-quiet)); +} +.spectrum-Textfield-input { + line-height: var(--spectrum-textfield-input-line-height); + box-sizing: border-box; + inline-size: 100%; + min-inline-size: var(--mod-textfield-min-width, var(--spectrum-textfield-min-width)); + block-size: var(--mod-textfield-height, var(--spectrum-textfield-height)); + padding-block-start: calc(var(--mod-textfield-spacing-block-start, var(--spectrum-textfield-spacing-block-start)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + padding-block-end: calc(var(--mod-textfield-spacing-block-end, var(--spectrum-textfield-spacing-block-end)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + padding-inline: calc(var(--mod-textfield-spacing-inline, var(--spectrum-textfield-spacing-inline)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + vertical-align: top; + outline: none; + background-color: var(--mod-textfield-background-color, var(--spectrum-textfield-background-color)); + border: var(--mod-textfield-border-width, var(--spectrum-textfield-border-width)) solid var(--highcontrast-textfield-border-color, var(--mod-textfield-border-color, var(--spectrum-textfield-border-color))); + border-radius: var(--mod-textfield-corner-radius, var(--spectrum-textfield-corner-radius)); + transition: border-color var(--mod-texfield-animation-duration, var(--spectrum-texfield-animation-duration)) ease-in-out; + font-size: var(--mod-textfield-placeholder-font-size, var(--spectrum-textfield-placeholder-font-size)); + font-family: var(--mod-textfield-font-family, var(--spectrum-textfield-font-family)); + font-weight: var(--mod-textfield-font-weight, var(--spectrum-textfield-font-weight)); + color: var(--highcontrast-textfield-text-color-default, var(--mod-textfield-text-color-default, var(--spectrum-textfield-text-color-default))); + text-overflow: ellipsis; + grid-row: 2; + grid-column: 1 / span 2; + margin: 0; + appearance: none; +} +.spectrum-Textfield-input[type="number"] { + -moz-appearance: textfield; +} +.spectrum-Textfield-input[type="number"]::-webkit-inner-spin-button, +.spectrum-Textfield-input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} +.spectrum-Textfield-input:-moz-ui-invalid { + box-shadow: none; +} +.spectrum-Textfield-input::placeholder { + opacity: 1; + font-size: var(--mod-textfield-placeholder-font-size, var(--spectrum-textfield-placeholder-font-size)); + font-family: var(--mod-textfield-font-family, var(--spectrum-textfield-font-family)); + font-weight: var(--mod-textfield-font-weight, var(--spectrum-textfield-font-weight)); + color: var(--highcontrast-textfield-text-color-default, var(--mod-textfield-text-color-default, var(--spectrum-textfield-text-color-default))); + transition: color var(--mod-texfield-animation-duration, var(--spectrum-texfield-animation-duration)) ease-in-out; +} +.spectrum-Textfield-input:lang(ja)::placeholder, +.spectrum-Textfield-input:lang(ko)::placeholder, +.spectrum-Textfield-input:lang(zh)::placeholder { + font-style: normal; +} +.is-focused .spectrum-Textfield-input, +.spectrum-Textfield-input:focus { + border-color: var(--highcontrast-textfield-border-color-focus, var(--mod-textfield-border-color-focus, var(--spectrum-textfield-border-color-focus))); +} +.is-focused .spectrum-Textfield-input, +.is-focused .spectrum-Textfield-input::placeholder, +.spectrum-Textfield-input:focus, +.spectrum-Textfield-input:focus::placeholder { + color: var(--highcontrast-textfield-text-color-focus, var(--mod-textfield-text-color-focus, var(--spectrum-textfield-text-color-focus))); +} +.is-keyboardFocused .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-keyboard-focus, var(--mod-textfield-border-color-keyboard-focus, var(--spectrum-textfield-border-color-keyboard-focus))); + outline: var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width)) solid; + outline-color: var(--highcontrast-textfield-focus-indicator-color, var(--mod-textfield-focus-indicator-color, var(--spectrum-textfield-focus-indicator-color))); + outline-offset: var(--mod-textfield-focus-indicator-gap, var(--spectrum-textfield-focus-indicator-gap)); +} +.is-keyboardFocused .spectrum-Textfield-input, +.is-keyboardFocused .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-keyboard-focus, var(--mod-textfield-text-color-keyboard-focus, var(--spectrum-textfield-text-color-keyboard-focus))); +} +.is-valid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-valid, var(--spectrum-textfield-icon-spacing-inline-start-valid)) + var(--mod-textfield-icon-size-valid, var(--spectrum-textfield-icon-size-valid)) + var(--mod-textfield-icon-spacing-inline-end-valid, var(--spectrum-textfield-icon-spacing-inline-end-valid)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + color: var(--highcontrast-textfield-text-color-valid, var(--mod-textfield-text-color-valid, var(--spectrum-textfield-text-color-valid))); +} +.is-invalid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-invalid, var(--spectrum-textfield-icon-spacing-inline-start-invalid)) + var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)) + var(--mod-textfield-icon-spacing-inline-end-invalid, var(--spectrum-textfield-icon-spacing-inline-end-invalid)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + color: var(--highcontrast-textfield-text-color-invalid, var(--mod-textfield-text-color-invalid, var(--spectrum-textfield-text-color-invalid))); + border-color: var(--highcontrast-textfield-border-color-invalid-default, var(--mod-textfield-border-color-invalid-default, var(--spectrum-textfield-border-color-invalid-default))); +} +.is-invalid .spectrum-Textfield-input:focus, +.is-invalid.is-focused .spectrum-Textfield-input, +.is-invalid:focus .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-focus, var(--mod-textfield-border-color-invalid-focus, var(--spectrum-textfield-border-color-invalid-focus))); +} +.is-invalid .spectrum-Textfield-input:focus-visible, +.is-invalid.is-keyboardFocused .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-keyboard-focus, var(--mod-textfield-border-color-invalid-keyboard-focus, var(--spectrum-textfield-border-color-invalid-keyboard-focus))); +} +.spectrum-Textfield-input:disabled, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input { + background-color: var(--mod-textfield-background-color-disabled, var(--spectrum-textfield-background-color-disabled)); + border-color: transparent; + resize: none; + opacity: 1; +} +.spectrum-Textfield-input:disabled, +.spectrum-Textfield-input:disabled::placeholder, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); +} +.spectrum-Textfield--quiet .spectrum-Textfield-input { + outline: none; + border-block-start-width: 0; + border-inline-width: 0; + margin-block-end: var(--mod-textfield-spacing-block-quiet, var(--spectrum-textfield-spacing-block-quiet)); + padding-block-start: var(--mod-textfield-spacing-block-start, var(--spectrum-textfield-spacing-block-start)); + padding-inline: var(--mod-textfield-spacing-inline-quiet, var(--spectrum-textfield-spacing-inline-quiet)); + background-color: initial; + border-radius: 0; + resize: none; + overflow-y: hidden; +} +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield-input:disabled { + background-color: initial; + border-color: var(--mod-textfield-border-color-disabled, var(--spectrum-textfield-border-color-disabled)); +} +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input::placeholder, +.spectrum-Textfield-input:disabled, +.spectrum-Textfield-input:disabled::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); +} +.spectrum-Textfield-input:read-only, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-input { + background-color: initial; + border-color: transparent; + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + outline: none; +} +.spectrum-Textfield-input:read-only::placeholder, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + background-color: initial; +} +@media (hover: hover) { + .spectrum-Textfield-input:hover, + .spectrum-Textfield:hover .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-hover, var(--mod-textfield-border-color-hover, var(--spectrum-textfield-border-color-hover))); + } + .spectrum-Textfield-input:hover, + .spectrum-Textfield-input:hover::placeholder, + .spectrum-Textfield:hover .spectrum-Textfield-input, + .spectrum-Textfield:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-hover, var(--mod-textfield-text-color-hover, var(--spectrum-textfield-text-color-hover))); + } + .is-focused .spectrum-Textfield-input:hover, + .spectrum-Textfield-input:focus:hover { + border-color: var(--highcontrast-textfield-border-color-focus-hover, var(--mod-textfield-border-color-focus-hover, var(--spectrum-textfield-border-color-focus-hover))); + } + .is-focused .spectrum-Textfield-input:hover, + .is-focused .spectrum-Textfield-input:hover::placeholder, + .spectrum-Textfield-input:focus:hover, + .spectrum-Textfield-input:focus:hover::placeholder { + color: var(--highcontrast-textfield-text-color-focus-hover, var(--mod-textfield-text-color-focus-hover, var(--spectrum-textfield-text-color-focus-hover))); + } + .is-invalid .spectrum-Textfield-input:hover, + .is-invalid:hover .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-hover, var(--mod-textfield-border-color-invalid-hover, var(--spectrum-textfield-border-color-invalid-hover))); + } + .is-invalid .spectrum-Textfield-input:focus:hover, + .is-invalid.is-focused .spectrum-Textfield-input:hover, + .is-invalid:focus .spectrum-Textfield-input:hover { + border-color: var(--highcontrast-textfield-border-color-invalid-focus-hover, var(--mod-textfield-border-color-invalid-focus-hover, var(--spectrum-textfield-border-color-invalid-focus-hover))); + } + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input { + background-color: var(--mod-textfield-background-color-disabled, var(--spectrum-textfield-background-color-disabled)); + border-color: transparent; + resize: none; + opacity: 1; + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input { + background-color: initial; + border-color: var(--mod-textfield-border-color-disabled, var(--spectrum-textfield-border-color-disabled)); + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); + } + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input { + border-color: transparent; + outline: none; + } + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input::placeholder { + background-color: initial; + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + } +} +.spectrum-Textfield--sideLabel { + grid-template-columns: auto auto auto; + grid-template-rows: auto auto; +} +.spectrum-Textfield--sideLabel:after { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-FieldLabel { + margin-inline-end: var(--mod-textfield-label-spacing-inline-side-label, var(--spectrum-textfield-label-spacing-inline-side-label)); + grid-row: 1 / span 2; + grid-column: 1 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-Textfield-characterCount { + align-items: flex-start; + margin-block-start: var(--mod-textfield-character-count-spacing-block-side, var(--spectrum-textfield-character-count-spacing-block-side)); + margin-inline-start: var(--mod-textfield-character-count-spacing-inline-side, var(--spectrum-textfield-character-count-spacing-inline-side)); + grid-row: 1; + grid-column: 3 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-HelpText { + grid-row: 2; + grid-column: 2 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-Textfield-input, +.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield--multiline { + --spectrum-textfield-input-line-height: normal; +} +.spectrum-Textfield--multiline .spectrum-Textfield-input { + min-inline-size: var(--mod-text-area-min-inline-size, var(--spectrum-text-area-min-inline-size)); + min-block-size: var(--mod-text-area-min-block-size, var(--spectrum-text-area-min-block-size)); + resize: inherit; +} +.spectrum-Textfield--multiline.spectrum-Textfield--grows .spectrum-Textfield-input { + grid-row: 2 / auto; +} +.spectrum-Textfield--multiline.spectrum-Textfield--grows.spectrum-Textfield--sideLabel .spectrum-Textfield-input { + grid-row: 1 / auto; +} +.spectrum-Textfield--multiline.spectrum-Textfield--quiet .spectrum-Textfield-input { + min-block-size: var(--mod-text-area-min-block-size-quiet, var(--spectrum-text-area-min-block-size-quiet)); + resize: none; + overflow-y: hidden; +} +@media (forced-colors: active) { + .spectrum-Textfield { + --highcontrast-textfield-border-color-hover: Highlight; + --highcontrast-textfield-border-color-focus: Highlight; + --highcontrast-textfield-border-color-keyboard-focus: CanvasText; + --highcontrast-textfield-focus-indicator-color: Highlight; + --highcontrast-textfield-border-color-invalid-default: Highlight; + --highcontrast-textfield-border-color-invalid-hover: Highlight; + --highcontrast-textfield-border-color-invalid-focus: Highlight; + --highcontrast-textfield-border-color-invalid-keyboard-focus: Highlight; + --highcontrast-textfield-text-color-valid: CanvasText; + --highcontrast-textfield-text-color-invalid: CanvasText; + } + .spectrum-Textfield .spectrum-Textfield-input { + --highcontrast-textfield-text-color-default: CanvasText; + --highcontrast-textfield-text-color-hover: CanvasText; + --highcontrast-textfield-text-color-keyboard-focus: CanvasText; + --highcontrast-textfield-text-color-disabled: GrayText; + --highcontrast-textfield-text-color-readonly: CanvasText; + } + .spectrum-Textfield .spectrum-Textfield-input::placeholder { + --highcontrast-textfield-text-color-default: GrayText; + --highcontrast-textfield-text-color-hover: GrayText; + --highcontrast-textfield-text-color-keyboard-focus: GrayText; + --highcontrast-textfield-text-color-disabled: GrayText; + --highcontrast-textfield-text-color-readonly: CanvasText; + } +} +.spectrum-Textfield { + --spectrum-textfield-border-color: var(--system-spectrum-textfield-border-color); + --spectrum-textfield-border-color-hover: var(--system-spectrum-textfield-border-color-hover); + --spectrum-textfield-border-color-focus: var(--system-spectrum-textfield-border-color-focus); + --spectrum-textfield-border-color-focus-hover: var(--system-spectrum-textfield-border-color-focus-hover); + --spectrum-textfield-border-color-keyboard-focus: var(--system-spectrum-textfield-border-color-keyboard-focus); + --spectrum-textfield-border-width: var(--system-spectrum-textfield-border-width); +} +/*# sourceMappingURL=components/textfield/index.css.map */ diff --git a/components/textfield/index.css b/components/textfield/index.css new file mode 100644 index 0000000000..06e6110a0c --- /dev/null +++ b/components/textfield/index.css @@ -0,0 +1,551 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +.spectrum { + --system-spectrum-textfield-border-color: var(--spectrum-gray-500); + --system-spectrum-textfield-border-color-hover: var(--spectrum-gray-600); + --system-spectrum-textfield-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-textfield-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-textfield-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-textfield-border-width: var(--spectrum-border-width-100); +} +.spectrum--express { + --system-spectrum-textfield-border-color: var(--spectrum-gray-400); + --system-spectrum-textfield-border-color-hover: var(--spectrum-gray-500); + --system-spectrum-textfield-border-color-focus: var(--spectrum-gray-800); + --system-spectrum-textfield-border-color-focus-hover: var(--spectrum-gray-900); + --system-spectrum-textfield-border-color-keyboard-focus: var(--spectrum-gray-900); + --system-spectrum-textfield-border-width: var(--spectrum-border-width-200); +} +.spectrum-Textfield { + --spectrum-textfield-input-line-height: var(--spectrum-textfield-height); + --spectrum-texfield-animation-duration: var(--spectrum-animation-duration-100); + --spectrum-textfield-width: 240px; + --spectrum-textfield-min-width: var(--spectrum-text-field-minimum-width-multiplier); + --spectrum-textfield-corner-radius: var(--spectrum-corner-radius-100); + --spectrum-textfield-height: var(--spectrum-component-height-100); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-100); + --spectrum-textfield-spacing-inline-quiet: var(--spectrum-field-edge-to-text-quiet); + --spectrum-textfield-spacing-block-start: var(--spectrum-component-top-to-text-100); + --spectrum-textfield-spacing-block-end: var(--spectrum-component-bottom-to-text-100); + --spectrum-textfield-spacing-block-quiet: var(--spectrum-field-edge-to-border-quiet); + --spectrum-textfield-label-spacing-block: var(--spectrum-field-label-to-component); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-100); + --spectrum-textfield-helptext-spacing-block: var(--spectrum-help-text-to-component); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-100); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-100); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-quiet-invalid: var(--spectrum-field-edge-to-alert-icon-quiet); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-quiet-valid: var(--spectrum-field-edge-to-validation-icon-quiet); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-medium); + --spectrum-textfield-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-textfield-font-weight: var(--spectrum-regular-font-weight); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-character-count-font-family: var(--spectrum-sans-font-family-stack); + --spectrum-textfield-character-count-font-weight: var(--spectrum-regular-font-weight); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-inline: var(--spectrum-spacing-200); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-inline-side: var(--spectrum-side-label-character-count-to-field); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-medium); + --spectrum-textfield-focus-indicator-width: var(--spectrum-focus-indicator-thickness); + --spectrum-textfield-focus-indicator-gap: var(--spectrum-focus-indicator-gap); + --spectrum-textfield-background-color: var(--spectrum-gray-50); + --spectrum-textfield-text-color-default: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-text-color-hover: var(--spectrum-neutral-content-color-hover); + --spectrum-textfield-text-color-focus: var(--spectrum-neutral-content-color-focus); + --spectrum-textfield-text-color-focus-hover: var(--spectrum-neutral-content-color-focus-hover); + --spectrum-textfield-text-color-keyboard-focus: var(--spectrum-neutral-content-color-key-focus); + --spectrum-textfield-text-color-readonly: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-background-color-disabled: var(--spectrum-disabled-background-color); + --spectrum-textfield-border-color-disabled: var(--spectrum-disabled-border-color); + --spectrum-textfield-text-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-textfield-border-color-invalid-default: var(--spectrum-negative-border-color-default); + --spectrum-textfield-border-color-invalid-hover: var(--spectrum-negative-border-color-hover); + --spectrum-textfield-border-color-invalid-focus: var(--spectrum-negative-border-color-focus); + --spectrum-textfield-border-color-invalid-focus-hover: var(--spectrum-negative-border-color-focus-hover); + --spectrum-textfield-border-color-invalid-keyboard-focus: var(--spectrum-negative-border-color-key-focus); + --spectrum-textfield-icon-color-invalid: var(--spectrum-negative-visual-color); + --spectrum-textfield-text-color-invalid: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-text-color-valid: var(--spectrum-neutral-content-color-default); + --spectrum-textfield-icon-color-valid: var(--spectrum-positive-visual-color); + --spectrum-textfield-focus-indicator-color: var(--spectrum-focus-indicator-color); + --spectrum-text-area-min-inline-size: var(--spectrum-text-area-minimum-width); + --spectrum-text-area-min-block-size: var(--spectrum-text-area-minimum-height); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-100); +} +.spectrum-Textfield--sizeS { + --spectrum-textfield-height: var(--spectrum-component-height-75); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-small); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-100); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-75); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-75); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-75); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-small); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-small); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-small); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-small); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-small); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-small); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-small); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-small); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-75); +} +.spectrum-Textfield--sizeM { + --spectrum-textfield-height: var(--spectrum-component-height-100); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-medium); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-100); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-100); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-100); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-medium); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-medium); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-75); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-75); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-medium); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-medium); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-100); +} +.spectrum-Textfield--sizeL { + --spectrum-textfield-height: var(--spectrum-component-height-200); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-large); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-200); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-200); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-200); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-200); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-large); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-large); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-large); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-large); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-large); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-large); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-100); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-100); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-large); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-large); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-200); +} +.spectrum-Textfield--sizeXL { + --spectrum-textfield-height: var(--spectrum-component-height-300); + --spectrum-textfield-label-spacing-block-quiet: var(--spectrum-field-label-to-component-quiet-extra-large); + --spectrum-textfield-label-spacing-inline-side-label: var(--spectrum-spacing-200); + --spectrum-textfield-placeholder-font-size: var(--spectrum-font-size-300); + --spectrum-textfield-spacing-inline: var(--spectrum-component-edge-to-text-200); + --spectrum-textfield-icon-size-invalid: var(--spectrum-workflow-icon-size-300); + --spectrum-textfield-icon-size-valid: var(--spectrum-checkmark-icon-size-300); + --spectrum-textfield-icon-spacing-inline-end-invalid: var(--spectrum-field-edge-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-end-valid: var(--spectrum-field-edge-to-validation-icon-extra-large); + --spectrum-textfield-icon-spacing-block-invalid: var(--spectrum-field-top-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-block-valid: var(--spectrum-field-top-to-validation-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-start-invalid: var(--spectrum-field-text-to-alert-icon-extra-large); + --spectrum-textfield-icon-spacing-inline-start-valid: var(--spectrum-field-text-to-validation-icon-extra-large); + --spectrum-textfield-character-count-font-size: var(--spectrum-font-size-200); + --spectrum-textfield-character-count-spacing-block: var(--spectrum-component-bottom-to-text-200); + --spectrum-textfield-character-count-spacing-block-quiet: var(--spectrum-character-count-to-field-quiet-extra-large); + --spectrum-textfield-character-count-spacing-block-side: var(--spectrum-side-label-character-count-top-margin-extra-large); + --spectrum-text-area-min-block-size-quiet: var(--spectrum-component-height-300); +} +.spectrum-Textfield { + position: relative; + text-overflow: ellipsis; + inline-size: var(--mod-textfield-width, var(--spectrum-textfield-width)); + display: inline-grid; + grid-template-columns: auto auto; + grid-template-rows: auto auto auto; + overflow: visible; + margin: 0; +} +.spectrum-Textfield.spectrum-Textfield--quiet:after { + content: ""; + pointer-events: none; + position: absolute; + inset-block-end: calc((var(--mod-textfield-focus-indicator-gap, var(--spectrum-textfield-focus-indicator-gap)) + var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width))) * -1); + inset-inline-start: 0; + inline-size: 100%; + block-size: var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width)); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-keyboardFocused:after { + background-color: var(--highcontrast-textfield-focus-indicator-color, var(--mod-textfield-focus-indicator-color, var(--spectrum-textfield-focus-indicator-color))); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-invalid, var(--spectrum-textfield-icon-spacing-inline-start-invalid)) + var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid))); +} +.spectrum-Textfield.spectrum-Textfield--quiet.is-valid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-valid, var(--spectrum-textfield-icon-spacing-inline-start-valid)) + var(--mod-textfield-icon-size-valid, var(--spectrum-textfield-icon-size-valid))); +} +.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon { + position: absolute; + pointer-events: all; + inset-block-start: 0; + margin-inline-start: auto; + grid-row: 2; + grid-column: 2; +} +.spectrum-Textfield.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon { + inset-block-start: var(--mod-textfield-icon-spacing-block-valid, var(--spectrum-textfield-icon-spacing-block-valid)); + inset-block-end: var(--mod-textfield-icon-spacing-block-valid, var(--spectrum-textfield-icon-spacing-block-valid)); + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-valid, var(--spectrum-textfield-icon-spacing-inline-end-valid)); + color: var(--highcontrast-textfield-icon-color-valid, var(--mod-textfield-icon-color-valid, var(--spectrum-textfield-icon-color-valid))); +} +.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon { + block-size: var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)); + inline-size: var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)); + inset-block-start: var(--mod-textfield-icon-spacing-block-invalid, var(--spectrum-textfield-icon-spacing-block-invalid)); + inset-block-end: var(--mod-textfield-icon-spacing-block-invalid, var(--spectrum-textfield-icon-spacing-block-invalid)); + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-invalid, var(--spectrum-textfield-icon-spacing-inline-end-invalid)); + color: var(--highcontrast-textfield-icon-color-invalid, var(--mod-textfield-icon-color-invalid, var(--spectrum-textfield-icon-color-invalid))); +} +.spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon { + color: transparent; +} +.spectrum-Textfield--quiet .spectrum-Textfield-validationIcon { + padding-inline-end: 0; +} +.spectrum-Textfield--quiet.is-valid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-quiet-valid, var(--spectrum-textfield-icon-spacing-inline-end-quiet-valid)); +} +.spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-validationIcon { + inset-inline-end: var(--mod-textfield-icon-spacing-inline-end-quiet-invalid, var(--spectrum-textfield-icon-spacing-inline-end-quiet-invalid)); +} +.spectrum-Textfield .spectrum-FieldLabel { + margin-block-end: var(--mod-textfield-label-spacing-block, var(--spectrum-textfield-label-spacing-block)); + grid-row: 1; + grid-column: 1 / span 1; +} +.spectrum-Textfield--quiet .spectrum-FieldLabel { + margin-block-end: var(--mod-textfield-label-spacing-block-quiet, var(--spectrum-textfield-label-spacing-block-quiet)); +} +.is-disabled .spectrum-FieldLabel { + color: var(--spectrum-textfield-text-color-disabled); +} +.spectrum-Textfield .spectrum-HelpText { + margin-block-start: var(--mod-textfield-helptext-spacing-block, var(--spectrum-textfield-helptext-spacing-block)); + grid-row: 3; + grid-column: 1 / span 2; +} +.spectrum-Textfield-characterCount { + display: inline-flex; + align-items: flex-end; + justify-content: flex-end; + inline-size: auto; + margin-block-end: var(--mod-textfield-character-count-spacing-block, var(--spectrum-textfield-character-count-spacing-block)); + margin-inline-start: var(--mod-textfield-character-count-spacing-inline, var(--spectrum-textfield-character-count-spacing-inline)); + margin-inline-end: 0; + font-size: var(--mod-textfield-character-count-font-size, var(--spectrum-textfield-character-count-font-size)); + font-family: var(--mod-textfield-character-count-font-family, var(--spectrum-textfield-character-count-font-family)); + font-weight: var(--mod-textfield-character-count-font-weight, var(--spectrum-textfield-character-count-font-weight)); + grid-row: 1; + grid-column: 2 / span 1; + padding-inline-end: calc(var(--mod-textfield-corner-radius, var(--spectrum-textfield-corner-radius)) / 2); +} +.spectrum-Textfield--quiet .spectrum-Textfield-characterCount { + margin-block-end: var(--mod-textfield-character-count-spacing-block-quiet, var(--spectrum-textfield-character-count-spacing-block-quiet)); +} +.spectrum-Textfield-input { + line-height: var(--spectrum-textfield-input-line-height); + box-sizing: border-box; + inline-size: 100%; + min-inline-size: var(--mod-textfield-min-width, var(--spectrum-textfield-min-width)); + block-size: var(--mod-textfield-height, var(--spectrum-textfield-height)); + padding-block-start: calc(var(--mod-textfield-spacing-block-start, var(--spectrum-textfield-spacing-block-start)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + padding-block-end: calc(var(--mod-textfield-spacing-block-end, var(--spectrum-textfield-spacing-block-end)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + padding-inline: calc(var(--mod-textfield-spacing-inline, var(--spectrum-textfield-spacing-inline)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + vertical-align: top; + outline: none; + background-color: var(--mod-textfield-background-color, var(--spectrum-textfield-background-color)); + border: var(--mod-textfield-border-width, var(--spectrum-textfield-border-width)) solid var(--highcontrast-textfield-border-color, var(--mod-textfield-border-color, var(--spectrum-textfield-border-color))); + border-radius: var(--mod-textfield-corner-radius, var(--spectrum-textfield-corner-radius)); + transition: border-color var(--mod-texfield-animation-duration, var(--spectrum-texfield-animation-duration)) ease-in-out; + font-size: var(--mod-textfield-placeholder-font-size, var(--spectrum-textfield-placeholder-font-size)); + font-family: var(--mod-textfield-font-family, var(--spectrum-textfield-font-family)); + font-weight: var(--mod-textfield-font-weight, var(--spectrum-textfield-font-weight)); + color: var(--highcontrast-textfield-text-color-default, var(--mod-textfield-text-color-default, var(--spectrum-textfield-text-color-default))); + text-overflow: ellipsis; + grid-row: 2; + grid-column: 1 / span 2; + margin: 0; + appearance: none; +} +.spectrum-Textfield-input[type="number"] { + -moz-appearance: textfield; +} +.spectrum-Textfield-input[type="number"]::-webkit-inner-spin-button, +.spectrum-Textfield-input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} +.spectrum-Textfield-input:-moz-ui-invalid { + box-shadow: none; +} +.spectrum-Textfield-input::placeholder { + opacity: 1; + font-size: var(--mod-textfield-placeholder-font-size, var(--spectrum-textfield-placeholder-font-size)); + font-family: var(--mod-textfield-font-family, var(--spectrum-textfield-font-family)); + font-weight: var(--mod-textfield-font-weight, var(--spectrum-textfield-font-weight)); + color: var(--highcontrast-textfield-text-color-default, var(--mod-textfield-text-color-default, var(--spectrum-textfield-text-color-default))); + transition: color var(--mod-texfield-animation-duration, var(--spectrum-texfield-animation-duration)) ease-in-out; +} +.spectrum-Textfield-input:lang(ja)::placeholder, +.spectrum-Textfield-input:lang(ko)::placeholder, +.spectrum-Textfield-input:lang(zh)::placeholder { + font-style: normal; +} +.is-focused .spectrum-Textfield-input, +.spectrum-Textfield-input:focus { + border-color: var(--highcontrast-textfield-border-color-focus, var(--mod-textfield-border-color-focus, var(--spectrum-textfield-border-color-focus))); +} +.is-focused .spectrum-Textfield-input, +.is-focused .spectrum-Textfield-input::placeholder, +.spectrum-Textfield-input:focus, +.spectrum-Textfield-input:focus::placeholder { + color: var(--highcontrast-textfield-text-color-focus, var(--mod-textfield-text-color-focus, var(--spectrum-textfield-text-color-focus))); +} +.is-keyboardFocused .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-keyboard-focus, var(--mod-textfield-border-color-keyboard-focus, var(--spectrum-textfield-border-color-keyboard-focus))); + outline: var(--mod-textfield-focus-indicator-width, var(--spectrum-textfield-focus-indicator-width)) solid; + outline-color: var(--highcontrast-textfield-focus-indicator-color, var(--mod-textfield-focus-indicator-color, var(--spectrum-textfield-focus-indicator-color))); + outline-offset: var(--mod-textfield-focus-indicator-gap, var(--spectrum-textfield-focus-indicator-gap)); +} +.is-keyboardFocused .spectrum-Textfield-input, +.is-keyboardFocused .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-keyboard-focus, var(--mod-textfield-text-color-keyboard-focus, var(--spectrum-textfield-text-color-keyboard-focus))); +} +.is-valid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-valid, var(--spectrum-textfield-icon-spacing-inline-start-valid)) + var(--mod-textfield-icon-size-valid, var(--spectrum-textfield-icon-size-valid)) + var(--mod-textfield-icon-spacing-inline-end-valid, var(--spectrum-textfield-icon-spacing-inline-end-valid)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + color: var(--highcontrast-textfield-text-color-valid, var(--mod-textfield-text-color-valid, var(--spectrum-textfield-text-color-valid))); +} +.is-invalid .spectrum-Textfield-input { + padding-inline-end: calc(var(--mod-textfield-icon-spacing-inline-start-invalid, var(--spectrum-textfield-icon-spacing-inline-start-invalid)) + var(--mod-textfield-icon-size-invalid, var(--spectrum-textfield-icon-size-invalid)) + var(--mod-textfield-icon-spacing-inline-end-invalid, var(--spectrum-textfield-icon-spacing-inline-end-invalid)) - var(--mod-textfield-border-width, var(--spectrum-textfield-border-width))); + color: var(--highcontrast-textfield-text-color-invalid, var(--mod-textfield-text-color-invalid, var(--spectrum-textfield-text-color-invalid))); + border-color: var(--highcontrast-textfield-border-color-invalid-default, var(--mod-textfield-border-color-invalid-default, var(--spectrum-textfield-border-color-invalid-default))); +} +.is-invalid .spectrum-Textfield-input:focus, +.is-invalid.is-focused .spectrum-Textfield-input, +.is-invalid:focus .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-focus, var(--mod-textfield-border-color-invalid-focus, var(--spectrum-textfield-border-color-invalid-focus))); +} +.is-invalid .spectrum-Textfield-input:focus-visible, +.is-invalid.is-keyboardFocused .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-keyboard-focus, var(--mod-textfield-border-color-invalid-keyboard-focus, var(--spectrum-textfield-border-color-invalid-keyboard-focus))); +} +.spectrum-Textfield-input:disabled, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input { + background-color: var(--mod-textfield-background-color-disabled, var(--spectrum-textfield-background-color-disabled)); + border-color: transparent; + resize: none; + opacity: 1; +} +.spectrum-Textfield-input:disabled, +.spectrum-Textfield-input:disabled::placeholder, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield.is-disabled .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); +} +.spectrum-Textfield--quiet .spectrum-Textfield-input { + outline: none; + border-block-start-width: 0; + border-inline-width: 0; + margin-block-end: var(--mod-textfield-spacing-block-quiet, var(--spectrum-textfield-spacing-block-quiet)); + padding-block-start: var(--mod-textfield-spacing-block-start, var(--spectrum-textfield-spacing-block-start)); + padding-inline: var(--mod-textfield-spacing-inline-quiet, var(--spectrum-textfield-spacing-inline-quiet)); + background-color: initial; + border-radius: 0; + resize: none; + overflow-y: hidden; +} +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield-input:disabled { + background-color: initial; + border-color: var(--mod-textfield-border-color-disabled, var(--spectrum-textfield-border-color-disabled)); +} +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input, +.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input::placeholder, +.spectrum-Textfield-input:disabled, +.spectrum-Textfield-input:disabled::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); +} +.spectrum-Textfield-input:read-only, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-input { + background-color: initial; + border-color: transparent; + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + outline: none; +} +.spectrum-Textfield-input:read-only::placeholder, +.spectrum-Textfield.is-readOnly .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + background-color: initial; +} +@media (hover: hover) { + .spectrum-Textfield-input:hover, + .spectrum-Textfield:hover .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-hover, var(--mod-textfield-border-color-hover, var(--spectrum-textfield-border-color-hover))); + } + .spectrum-Textfield-input:hover, + .spectrum-Textfield-input:hover::placeholder, + .spectrum-Textfield:hover .spectrum-Textfield-input, + .spectrum-Textfield:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-hover, var(--mod-textfield-text-color-hover, var(--spectrum-textfield-text-color-hover))); + } + .is-focused .spectrum-Textfield-input:hover, + .spectrum-Textfield-input:focus:hover { + border-color: var(--highcontrast-textfield-border-color-focus-hover, var(--mod-textfield-border-color-focus-hover, var(--spectrum-textfield-border-color-focus-hover))); + } + .is-focused .spectrum-Textfield-input:hover, + .is-focused .spectrum-Textfield-input:hover::placeholder, + .spectrum-Textfield-input:focus:hover, + .spectrum-Textfield-input:focus:hover::placeholder { + color: var(--highcontrast-textfield-text-color-focus-hover, var(--mod-textfield-text-color-focus-hover, var(--spectrum-textfield-text-color-focus-hover))); + } + .is-invalid .spectrum-Textfield-input:hover, + .is-invalid:hover .spectrum-Textfield-input { + border-color: var(--highcontrast-textfield-border-color-invalid-hover, var(--mod-textfield-border-color-invalid-hover, var(--spectrum-textfield-border-color-invalid-hover))); + } + .is-invalid .spectrum-Textfield-input:focus:hover, + .is-invalid.is-focused .spectrum-Textfield-input:hover, + .is-invalid:focus .spectrum-Textfield-input:hover { + border-color: var(--highcontrast-textfield-border-color-invalid-focus-hover, var(--mod-textfield-border-color-invalid-focus-hover, var(--spectrum-textfield-border-color-invalid-focus-hover))); + } + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input { + background-color: var(--mod-textfield-background-color-disabled, var(--spectrum-textfield-background-color-disabled)); + border-color: transparent; + resize: none; + opacity: 1; + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input { + background-color: initial; + border-color: var(--mod-textfield-border-color-disabled, var(--spectrum-textfield-border-color-disabled)); + } + .spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input::placeholder { + color: var(--highcontrast-textfield-text-color-disabled, var(--mod-textfield-text-color-disabled, var(--spectrum-textfield-text-color-disabled))); + } + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input { + border-color: transparent; + outline: none; + } + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input, + .spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input::placeholder { + background-color: initial; + color: var(--highcontrast-textfield-text-color-readonly, var(--mod-textfield-text-color-readonly, var(--spectrum-textfield-text-color-readonly))); + } +} +.spectrum-Textfield--sideLabel { + grid-template-columns: auto auto auto; + grid-template-rows: auto auto; +} +.spectrum-Textfield--sideLabel:after { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-FieldLabel { + margin-inline-end: var(--mod-textfield-label-spacing-inline-side-label, var(--spectrum-textfield-label-spacing-inline-side-label)); + grid-row: 1 / span 2; + grid-column: 1 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-Textfield-characterCount { + align-items: flex-start; + margin-block-start: var(--mod-textfield-character-count-spacing-block-side, var(--spectrum-textfield-character-count-spacing-block-side)); + margin-inline-start: var(--mod-textfield-character-count-spacing-inline-side, var(--spectrum-textfield-character-count-spacing-inline-side)); + grid-row: 1; + grid-column: 3 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-HelpText { + grid-row: 2; + grid-column: 2 / span 1; +} +.spectrum-Textfield--sideLabel .spectrum-Textfield-input, +.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon { + grid-row: 1 / span 1; + grid-column: 2 / span 1; +} +.spectrum-Textfield--multiline { + --spectrum-textfield-input-line-height: normal; +} +.spectrum-Textfield--multiline .spectrum-Textfield-input { + min-inline-size: var(--mod-text-area-min-inline-size, var(--spectrum-text-area-min-inline-size)); + min-block-size: var(--mod-text-area-min-block-size, var(--spectrum-text-area-min-block-size)); + resize: inherit; +} +.spectrum-Textfield--multiline.spectrum-Textfield--grows .spectrum-Textfield-input { + grid-row: 2 / auto; +} +.spectrum-Textfield--multiline.spectrum-Textfield--grows.spectrum-Textfield--sideLabel .spectrum-Textfield-input { + grid-row: 1 / auto; +} +.spectrum-Textfield--multiline.spectrum-Textfield--quiet .spectrum-Textfield-input { + min-block-size: var(--mod-text-area-min-block-size-quiet, var(--spectrum-text-area-min-block-size-quiet)); + resize: none; + overflow-y: hidden; +} +@media (forced-colors: active) { + .spectrum-Textfield { + --highcontrast-textfield-border-color-hover: Highlight; + --highcontrast-textfield-border-color-focus: Highlight; + --highcontrast-textfield-border-color-keyboard-focus: CanvasText; + --highcontrast-textfield-focus-indicator-color: Highlight; + --highcontrast-textfield-border-color-invalid-default: Highlight; + --highcontrast-textfield-border-color-invalid-hover: Highlight; + --highcontrast-textfield-border-color-invalid-focus: Highlight; + --highcontrast-textfield-border-color-invalid-keyboard-focus: Highlight; + --highcontrast-textfield-text-color-valid: CanvasText; + --highcontrast-textfield-text-color-invalid: CanvasText; + } + .spectrum-Textfield .spectrum-Textfield-input { + --highcontrast-textfield-text-color-default: CanvasText; + --highcontrast-textfield-text-color-hover: CanvasText; + --highcontrast-textfield-text-color-keyboard-focus: CanvasText; + --highcontrast-textfield-text-color-disabled: GrayText; + --highcontrast-textfield-text-color-readonly: CanvasText; + } + .spectrum-Textfield .spectrum-Textfield-input::placeholder { + --highcontrast-textfield-text-color-default: GrayText; + --highcontrast-textfield-text-color-hover: GrayText; + --highcontrast-textfield-text-color-keyboard-focus: GrayText; + --highcontrast-textfield-text-color-disabled: GrayText; + --highcontrast-textfield-text-color-readonly: CanvasText; + } +} +.spectrum-Textfield { + --spectrum-textfield-border-color: var(--system-spectrum-textfield-border-color); + --spectrum-textfield-border-color-hover: var(--system-spectrum-textfield-border-color-hover); + --spectrum-textfield-border-color-focus: var(--system-spectrum-textfield-border-color-focus); + --spectrum-textfield-border-color-focus-hover: var(--system-spectrum-textfield-border-color-focus-hover); + --spectrum-textfield-border-color-keyboard-focus: var(--system-spectrum-textfield-border-color-keyboard-focus); + --spectrum-textfield-border-width: var(--system-spectrum-textfield-border-width); +} +/*# sourceMappingURL=components/textfield/index.css.map */ diff --git a/components/textfield/metadata.json b/components/textfield/metadata.json new file mode 100644 index 0000000000..6eb9a32e10 --- /dev/null +++ b/components/textfield/metadata.json @@ -0,0 +1,345 @@ +{ + "selectors": [ + ".is-disabled .spectrum-FieldLabel", + ".is-focused .spectrum-Textfield-input,\n.is-focused .spectrum-Textfield-input::placeholder,\n.spectrum-Textfield-input:focus,\n.spectrum-Textfield-input:focus::placeholder", + ".is-focused .spectrum-Textfield-input,\n.spectrum-Textfield-input:focus", + ".is-focused .spectrum-Textfield-input:hover,\n\t.is-focused .spectrum-Textfield-input:hover::placeholder,\n\t.spectrum-Textfield-input:focus:hover,\n\t.spectrum-Textfield-input:focus:hover::placeholder", + ".is-focused .spectrum-Textfield-input:hover,\n\t.spectrum-Textfield-input:focus:hover", + ".is-invalid .spectrum-Textfield-input", + ".is-invalid .spectrum-Textfield-input:focus,\n.is-invalid.is-focused .spectrum-Textfield-input,\n.is-invalid:focus .spectrum-Textfield-input", + ".is-invalid .spectrum-Textfield-input:focus-visible,\n.is-invalid.is-keyboardFocused .spectrum-Textfield-input", + ".is-invalid .spectrum-Textfield-input:focus:hover,\n\t.is-invalid.is-focused .spectrum-Textfield-input:hover,\n\t.is-invalid:focus .spectrum-Textfield-input:hover", + ".is-invalid .spectrum-Textfield-input:hover,\n\t.is-invalid:hover .spectrum-Textfield-input", + ".is-keyboardFocused .spectrum-Textfield-input", + ".is-keyboardFocused .spectrum-Textfield-input,\n.is-keyboardFocused .spectrum-Textfield-input::placeholder", + ".is-valid .spectrum-Textfield-input", + ".spectrum", + ".spectrum--express", + ".spectrum-Textfield", + ".spectrum-Textfield .spectrum-FieldLabel", + ".spectrum-Textfield .spectrum-HelpText", + ".spectrum-Textfield .spectrum-Textfield-input", + ".spectrum-Textfield .spectrum-Textfield-input::placeholder", + ".spectrum-Textfield--multiline", + ".spectrum-Textfield--multiline .spectrum-Textfield-input", + ".spectrum-Textfield--multiline.spectrum-Textfield--grows .spectrum-Textfield-input", + ".spectrum-Textfield--multiline.spectrum-Textfield--grows.spectrum-Textfield--sideLabel .spectrum-Textfield-input", + ".spectrum-Textfield--multiline.spectrum-Textfield--quiet .spectrum-Textfield-input", + ".spectrum-Textfield--quiet .spectrum-FieldLabel", + ".spectrum-Textfield--quiet .spectrum-Textfield-characterCount", + ".spectrum-Textfield--quiet .spectrum-Textfield-input", + ".spectrum-Textfield--quiet .spectrum-Textfield-validationIcon", + ".spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input,\n.spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input::placeholder,\n.spectrum-Textfield-input:disabled,\n.spectrum-Textfield-input:disabled::placeholder", + ".spectrum-Textfield--quiet.is-disabled .spectrum-Textfield-input,\n.spectrum-Textfield-input:disabled", + ".spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input", + ".spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input,\n\t.spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input,\n\t.spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input::placeholder", + ".spectrum-Textfield--quiet.is-disabled:hover .spectrum-Textfield-input::placeholder", + ".spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-validationIcon", + ".spectrum-Textfield--quiet.is-valid .spectrum-Textfield-validationIcon", + ".spectrum-Textfield--sideLabel", + ".spectrum-Textfield--sideLabel .spectrum-FieldLabel", + ".spectrum-Textfield--sideLabel .spectrum-HelpText", + ".spectrum-Textfield--sideLabel .spectrum-Textfield-characterCount", + ".spectrum-Textfield--sideLabel .spectrum-Textfield-input,\n.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon", + ".spectrum-Textfield--sideLabel:after", + ".spectrum-Textfield--sizeL", + ".spectrum-Textfield--sizeM", + ".spectrum-Textfield--sizeS", + ".spectrum-Textfield--sizeXL", + ".spectrum-Textfield-characterCount", + ".spectrum-Textfield-input", + ".spectrum-Textfield-input:-moz-ui-invalid", + ".spectrum-Textfield-input::placeholder", + ".spectrum-Textfield-input:disabled,\n.spectrum-Textfield-input:disabled::placeholder,\n.spectrum-Textfield.is-disabled .spectrum-Textfield-input,\n.spectrum-Textfield.is-disabled .spectrum-Textfield-input::placeholder", + ".spectrum-Textfield-input:disabled,\n.spectrum-Textfield.is-disabled .spectrum-Textfield-input", + ".spectrum-Textfield-input:hover,\n\t.spectrum-Textfield-input:hover::placeholder,\n\t.spectrum-Textfield:hover .spectrum-Textfield-input,\n\t.spectrum-Textfield:hover .spectrum-Textfield-input::placeholder", + ".spectrum-Textfield-input:hover,\n\t.spectrum-Textfield:hover .spectrum-Textfield-input", + ".spectrum-Textfield-input:lang(ja)::placeholder,\n.spectrum-Textfield-input:lang(ko)::placeholder,\n.spectrum-Textfield-input:lang(zh)::placeholder", + ".spectrum-Textfield-input:read-only,\n.spectrum-Textfield.is-readOnly .spectrum-Textfield-input", + ".spectrum-Textfield-input:read-only::placeholder,\n.spectrum-Textfield.is-readOnly .spectrum-Textfield-input::placeholder", + ".spectrum-Textfield-input[type=\"number\"]", + ".spectrum-Textfield-input[type=\"number\"]::-webkit-inner-spin-button,\n.spectrum-Textfield-input[type=\"number\"]::-webkit-outer-spin-button", + ".spectrum-Textfield.is-disabled .spectrum-Textfield-validationIcon,\n.spectrum-Textfield.is-readOnly .spectrum-Textfield-validationIcon", + ".spectrum-Textfield.is-disabled:hover .spectrum-Textfield-input", + ".spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon", + ".spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon,\n.spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon", + ".spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input", + ".spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input,\n\t.spectrum-Textfield.is-readOnly:hover .spectrum-Textfield-input::placeholder", + ".spectrum-Textfield.is-valid .spectrum-Textfield-validationIcon", + ".spectrum-Textfield.spectrum-Textfield--quiet.is-invalid .spectrum-Textfield-input", + ".spectrum-Textfield.spectrum-Textfield--quiet.is-keyboardFocused:after", + ".spectrum-Textfield.spectrum-Textfield--quiet.is-valid .spectrum-Textfield-input", + ".spectrum-Textfield.spectrum-Textfield--quiet:after", + ".spectrum-Textfield.spectrum-Textfield--sideLabel .spectrum-Textfield-validationIcon" + ], + "mods": [ + "--mod-texfield-animation-duration", + "--mod-text-area-min-block-size", + "--mod-text-area-min-block-size-quiet", + "--mod-text-area-min-inline-size", + "--mod-textfield-background-color", + "--mod-textfield-background-color-disabled", + "--mod-textfield-border-color", + "--mod-textfield-border-color-disabled", + "--mod-textfield-border-color-focus", + "--mod-textfield-border-color-focus-hover", + "--mod-textfield-border-color-hover", + "--mod-textfield-border-color-invalid-default", + "--mod-textfield-border-color-invalid-focus", + "--mod-textfield-border-color-invalid-focus-hover", + "--mod-textfield-border-color-invalid-hover", + "--mod-textfield-border-color-invalid-keyboard-focus", + "--mod-textfield-border-color-keyboard-focus", + "--mod-textfield-border-width", + "--mod-textfield-character-count-font-family", + "--mod-textfield-character-count-font-size", + "--mod-textfield-character-count-font-weight", + "--mod-textfield-character-count-spacing-block", + "--mod-textfield-character-count-spacing-block-quiet", + "--mod-textfield-character-count-spacing-block-side", + "--mod-textfield-character-count-spacing-inline", + "--mod-textfield-character-count-spacing-inline-side", + "--mod-textfield-corner-radius", + "--mod-textfield-focus-indicator-color", + "--mod-textfield-focus-indicator-gap", + "--mod-textfield-focus-indicator-width", + "--mod-textfield-font-family", + "--mod-textfield-font-weight", + "--mod-textfield-height", + "--mod-textfield-helptext-spacing-block", + "--mod-textfield-icon-color-invalid", + "--mod-textfield-icon-color-valid", + "--mod-textfield-icon-size-invalid", + "--mod-textfield-icon-size-valid", + "--mod-textfield-icon-spacing-block-invalid", + "--mod-textfield-icon-spacing-block-valid", + "--mod-textfield-icon-spacing-inline-end-invalid", + "--mod-textfield-icon-spacing-inline-end-quiet-invalid", + "--mod-textfield-icon-spacing-inline-end-quiet-valid", + "--mod-textfield-icon-spacing-inline-end-valid", + "--mod-textfield-icon-spacing-inline-start-invalid", + "--mod-textfield-icon-spacing-inline-start-valid", + "--mod-textfield-label-spacing-block", + "--mod-textfield-label-spacing-block-quiet", + "--mod-textfield-label-spacing-inline-side-label", + "--mod-textfield-min-width", + "--mod-textfield-placeholder-font-size", + "--mod-textfield-spacing-block-end", + "--mod-textfield-spacing-block-quiet", + "--mod-textfield-spacing-block-start", + "--mod-textfield-spacing-inline", + "--mod-textfield-spacing-inline-quiet", + "--mod-textfield-text-color-default", + "--mod-textfield-text-color-disabled", + "--mod-textfield-text-color-focus", + "--mod-textfield-text-color-focus-hover", + "--mod-textfield-text-color-hover", + "--mod-textfield-text-color-invalid", + "--mod-textfield-text-color-keyboard-focus", + "--mod-textfield-text-color-readonly", + "--mod-textfield-text-color-valid", + "--mod-textfield-width" + ], + "spectrum": [ + "--spectrum-animation-duration-100", + "--spectrum-border-width-100", + "--spectrum-border-width-200", + "--spectrum-character-count-to-field-quiet-extra-large", + "--spectrum-character-count-to-field-quiet-large", + "--spectrum-character-count-to-field-quiet-medium", + "--spectrum-character-count-to-field-quiet-small", + "--spectrum-checkmark-icon-size-100", + "--spectrum-checkmark-icon-size-200", + "--spectrum-checkmark-icon-size-300", + "--spectrum-checkmark-icon-size-75", + "--spectrum-component-bottom-to-text-100", + "--spectrum-component-bottom-to-text-200", + "--spectrum-component-bottom-to-text-75", + "--spectrum-component-edge-to-text-100", + "--spectrum-component-edge-to-text-200", + "--spectrum-component-edge-to-text-75", + "--spectrum-component-height-100", + "--spectrum-component-height-200", + "--spectrum-component-height-300", + "--spectrum-component-height-75", + "--spectrum-component-top-to-text-100", + "--spectrum-corner-radius-100", + "--spectrum-disabled-background-color", + "--spectrum-disabled-border-color", + "--spectrum-disabled-content-color", + "--spectrum-field-edge-to-alert-icon-extra-large", + "--spectrum-field-edge-to-alert-icon-large", + "--spectrum-field-edge-to-alert-icon-medium", + "--spectrum-field-edge-to-alert-icon-quiet", + "--spectrum-field-edge-to-alert-icon-small", + "--spectrum-field-edge-to-border-quiet", + "--spectrum-field-edge-to-text-quiet", + "--spectrum-field-edge-to-validation-icon-extra-large", + "--spectrum-field-edge-to-validation-icon-large", + "--spectrum-field-edge-to-validation-icon-medium", + "--spectrum-field-edge-to-validation-icon-quiet", + "--spectrum-field-edge-to-validation-icon-small", + "--spectrum-field-label-to-component", + "--spectrum-field-label-to-component-quiet-extra-large", + "--spectrum-field-label-to-component-quiet-large", + "--spectrum-field-label-to-component-quiet-medium", + "--spectrum-field-label-to-component-quiet-small", + "--spectrum-field-text-to-alert-icon-extra-large", + "--spectrum-field-text-to-alert-icon-large", + "--spectrum-field-text-to-alert-icon-medium", + "--spectrum-field-text-to-alert-icon-small", + "--spectrum-field-text-to-validation-icon-extra-large", + "--spectrum-field-text-to-validation-icon-large", + "--spectrum-field-text-to-validation-icon-medium", + "--spectrum-field-text-to-validation-icon-small", + "--spectrum-field-top-to-alert-icon-extra-large", + "--spectrum-field-top-to-alert-icon-large", + "--spectrum-field-top-to-alert-icon-medium", + "--spectrum-field-top-to-alert-icon-small", + "--spectrum-field-top-to-validation-icon-extra-large", + "--spectrum-field-top-to-validation-icon-large", + "--spectrum-field-top-to-validation-icon-medium", + "--spectrum-field-top-to-validation-icon-small", + "--spectrum-focus-indicator-color", + "--spectrum-focus-indicator-gap", + "--spectrum-focus-indicator-thickness", + "--spectrum-font-size-100", + "--spectrum-font-size-200", + "--spectrum-font-size-300", + "--spectrum-font-size-75", + "--spectrum-gray-400", + "--spectrum-gray-50", + "--spectrum-gray-500", + "--spectrum-gray-600", + "--spectrum-gray-800", + "--spectrum-gray-900", + "--spectrum-help-text-to-component", + "--spectrum-negative-border-color-default", + "--spectrum-negative-border-color-focus", + "--spectrum-negative-border-color-focus-hover", + "--spectrum-negative-border-color-hover", + "--spectrum-negative-border-color-key-focus", + "--spectrum-negative-visual-color", + "--spectrum-neutral-content-color-default", + "--spectrum-neutral-content-color-focus", + "--spectrum-neutral-content-color-focus-hover", + "--spectrum-neutral-content-color-hover", + "--spectrum-neutral-content-color-key-focus", + "--spectrum-positive-visual-color", + "--spectrum-regular-font-weight", + "--spectrum-sans-font-family-stack", + "--spectrum-side-label-character-count-to-field", + "--spectrum-side-label-character-count-top-margin-extra-large", + "--spectrum-side-label-character-count-top-margin-large", + "--spectrum-side-label-character-count-top-margin-medium", + "--spectrum-side-label-character-count-top-margin-small", + "--spectrum-spacing-100", + "--spectrum-spacing-200", + "--spectrum-texfield-animation-duration", + "--spectrum-text-area-min-block-size", + "--spectrum-text-area-min-block-size-quiet", + "--spectrum-text-area-min-inline-size", + "--spectrum-text-area-minimum-height", + "--spectrum-text-area-minimum-width", + "--spectrum-text-field-minimum-width-multiplier", + "--spectrum-textfield-background-color", + "--spectrum-textfield-background-color-disabled", + "--spectrum-textfield-border-color", + "--spectrum-textfield-border-color-disabled", + "--spectrum-textfield-border-color-focus", + "--spectrum-textfield-border-color-focus-hover", + "--spectrum-textfield-border-color-hover", + "--spectrum-textfield-border-color-invalid-default", + "--spectrum-textfield-border-color-invalid-focus", + "--spectrum-textfield-border-color-invalid-focus-hover", + "--spectrum-textfield-border-color-invalid-hover", + "--spectrum-textfield-border-color-invalid-keyboard-focus", + "--spectrum-textfield-border-color-keyboard-focus", + "--spectrum-textfield-border-width", + "--spectrum-textfield-character-count-font-family", + "--spectrum-textfield-character-count-font-size", + "--spectrum-textfield-character-count-font-weight", + "--spectrum-textfield-character-count-spacing-block", + "--spectrum-textfield-character-count-spacing-block-quiet", + "--spectrum-textfield-character-count-spacing-block-side", + "--spectrum-textfield-character-count-spacing-inline", + "--spectrum-textfield-character-count-spacing-inline-side", + "--spectrum-textfield-corner-radius", + "--spectrum-textfield-focus-indicator-color", + "--spectrum-textfield-focus-indicator-gap", + "--spectrum-textfield-focus-indicator-width", + "--spectrum-textfield-font-family", + "--spectrum-textfield-font-weight", + "--spectrum-textfield-height", + "--spectrum-textfield-helptext-spacing-block", + "--spectrum-textfield-icon-color-invalid", + "--spectrum-textfield-icon-color-valid", + "--spectrum-textfield-icon-size-invalid", + "--spectrum-textfield-icon-size-valid", + "--spectrum-textfield-icon-spacing-block-invalid", + "--spectrum-textfield-icon-spacing-block-valid", + "--spectrum-textfield-icon-spacing-inline-end-invalid", + "--spectrum-textfield-icon-spacing-inline-end-quiet-invalid", + "--spectrum-textfield-icon-spacing-inline-end-quiet-valid", + "--spectrum-textfield-icon-spacing-inline-end-valid", + "--spectrum-textfield-icon-spacing-inline-start-invalid", + "--spectrum-textfield-icon-spacing-inline-start-valid", + "--spectrum-textfield-input-line-height", + "--spectrum-textfield-label-spacing-block", + "--spectrum-textfield-label-spacing-block-quiet", + "--spectrum-textfield-label-spacing-inline-side-label", + "--spectrum-textfield-min-width", + "--spectrum-textfield-placeholder-font-size", + "--spectrum-textfield-spacing-block-end", + "--spectrum-textfield-spacing-block-quiet", + "--spectrum-textfield-spacing-block-start", + "--spectrum-textfield-spacing-inline", + "--spectrum-textfield-spacing-inline-quiet", + "--spectrum-textfield-text-color-default", + "--spectrum-textfield-text-color-disabled", + "--spectrum-textfield-text-color-focus", + "--spectrum-textfield-text-color-focus-hover", + "--spectrum-textfield-text-color-hover", + "--spectrum-textfield-text-color-invalid", + "--spectrum-textfield-text-color-keyboard-focus", + "--spectrum-textfield-text-color-readonly", + "--spectrum-textfield-text-color-valid", + "--spectrum-textfield-width", + "--spectrum-workflow-icon-size-100", + "--spectrum-workflow-icon-size-200", + "--spectrum-workflow-icon-size-300", + "--spectrum-workflow-icon-size-75" + ], + "system": [ + "--system-spectrum-textfield-border-color", + "--system-spectrum-textfield-border-color-focus", + "--system-spectrum-textfield-border-color-focus-hover", + "--system-spectrum-textfield-border-color-hover", + "--system-spectrum-textfield-border-color-keyboard-focus", + "--system-spectrum-textfield-border-width" + ], + "a11y": [ + "--highcontrast-textfield-border-color", + "--highcontrast-textfield-border-color-focus", + "--highcontrast-textfield-border-color-focus-hover", + "--highcontrast-textfield-border-color-hover", + "--highcontrast-textfield-border-color-invalid-default", + "--highcontrast-textfield-border-color-invalid-focus", + "--highcontrast-textfield-border-color-invalid-focus-hover", + "--highcontrast-textfield-border-color-invalid-hover", + "--highcontrast-textfield-border-color-invalid-keyboard-focus", + "--highcontrast-textfield-border-color-keyboard-focus", + "--highcontrast-textfield-focus-indicator-color", + "--highcontrast-textfield-icon-color-invalid", + "--highcontrast-textfield-icon-color-valid", + "--highcontrast-textfield-text-color-default", + "--highcontrast-textfield-text-color-disabled", + "--highcontrast-textfield-text-color-focus", + "--highcontrast-textfield-text-color-focus-hover", + "--highcontrast-textfield-text-color-hover", + "--highcontrast-textfield-text-color-invalid", + "--highcontrast-textfield-text-color-keyboard-focus", + "--highcontrast-textfield-text-color-readonly", + "--highcontrast-textfield-text-color-valid" + ] +} diff --git a/components/textfield/package.json b/components/textfield/package.json new file mode 100644 index 0000000000..70f9db2653 --- /dev/null +++ b/components/textfield/package.json @@ -0,0 +1,46 @@ +{ + "name": "@spectrum-css/textfield", + "version": "7.2.0", + "description": "The Spectrum CSS textfield component", + "license": "Apache-2.0", + "author": "Adobe", + "homepage": "https://opensource.adobe.com/spectrum-css/textfield", + "repository": { + "type": "git", + "url": "https://github.com/adobe/spectrum-css.git", + "directory": "components/textfield" + }, + "bugs": { + "url": "https://github.com/adobe/spectrum-css/issues" + }, + "main": "dist/index.css", + "files": [ + "dist/*", + "CHANGELOG.md", + "package.json", + "stories/template.js", + "metadata/mods.md" + ], + "peerDependencies": { + "@spectrum-css/helptext": ">=5", + "@spectrum-css/tokens": ">=14" + }, + "peerDependenciesMeta": { + "@spectrum-css/helptext": { + "optional": true + } + }, + "devDependencies": { + "@spectrum-css/helptext": "workspace:^", + "@spectrum-css/tokens": "workspace:^" + }, + "keywords": [ + "spectrum", + "css", + "design system", + "adobe" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/components/textfield/template.js b/components/textfield/template.js new file mode 100644 index 0000000000..7080e83ea1 --- /dev/null +++ b/components/textfield/template.js @@ -0,0 +1,250 @@ +import { Template as FieldLabel } from "@spectrum-css/fieldlabel/stories/template.js"; +import { Template as Icon } from "@spectrum-css/icon/stories/template.js"; +import { Variants } from "@spectrum-css/preview/decorators"; +import { Template as ProgressCircle } from "@spectrum-css/progresscircle/stories/template.js"; +import { html } from "lit"; +import { classMap } from "lit/directives/class-map.js"; +import { ifDefined } from "lit/directives/if-defined.js"; +import { styleMap } from "lit/directives/style-map.js"; +import { when } from "lit/directives/when.js"; + +import "../index.css"; + +/** + * @typedef API + * @property {string} [rootClass="spectrum-Textfield"] + * @property {string} [size="m"] + * @property {string[]} [customClasses=[]] + * @property {string[]} [customInputClasses=[]] + * @property {string[]} [customIconClasses=[]] + * @property {string[]} [customProgressCircleClasses=[]] + * @property {Record} [customStyles={}] + * @property {boolean} [isInvalid=false] + * @property {boolean} [isValid=false] + * @property {boolean} [multiline=false] + * @property {boolean} [grows=false] + * @property {boolean} [isQuiet=false] + * @property {boolean} [isFocused=false] + * @property {boolean} [isDisabled=false] + * @property {boolean} [isRequired=false] + * @property {boolean} [isReadOnly=false] + * @property {boolean} [isKeyboardFocused=false] + * @property {boolean} [isLoading=false] + * @property {boolean} [displayLabel=false] + * @property {"top"|"side"} [labelPosition="top"] + * @property {string} [labelText] + * @property {string} [iconName] + * @property {string} [iconSet] + * @property {string} [pattern] + * @property {string|undefined} [placeholder] + * @property {string|undefined} [name] + * @property {string|undefined} [id] + * @property {HTMLInputElement[value]|HTMLTextAreaElement[value]} [value] + * @property {HTMLInputElement[type]} [type="text"] + * @property {boolean} [autocomplete=true] + * @property {Function} [onclick] + */ + +/** + * + * @param {API} args + * @param {import('@storybook/types').StoryContext} context + * @returns {import('lit').TemplateResult} + */ +export const Template = ({ + rootClass = "spectrum-Textfield", + size = "m", + customClasses = [], + customInputClasses = [], + customIconClasses = [], + customProgressCircleClasses = [], + isInvalid = false, + isValid = false, + multiline = false, + grows = false, + isQuiet = false, + isFocused = false, + isDisabled = false, + isRequired = false, + isReadOnly = false, + isKeyboardFocused = false, + isLoading = false, + displayLabel = false, + labelPosition = "top", + labelText, + iconName, + iconSet, + pattern, + placeholder, + name, + id, + value = "", + type = "text", + autocomplete = true, + onclick, + customStyles = {}, +} = {}, context = {}) => { + const { updateArgs } = context; + + // Override icon name and set if the field is invalid or valid + if (isInvalid) { + iconName = "Alert"; + iconSet = "workflow"; + } + else if (isValid) { + iconName = "Checkmark"; + iconSet = "ui"; + } + + return html` +
    ({ ...a, [c]: true }), {}), + })} + style=${styleMap(customStyles)} + @click=${onclick} + @focusin=${() => { + updateArgs({ + isFocused: true, + isKeyboardFocused: true + }); + }} + @focusout=${() => { + updateArgs({ + isFocused: false, + isKeyboardFocused: false + }); + }} + id=${ifDefined(id)} + > + ${when(displayLabel, () => FieldLabel({ + size, + label: labelText, + }, context))} + ${when(iconName, () => Icon({ + size, + iconName, + setName: iconSet, + customClasses: [ + isInvalid || isValid + ? `${rootClass}-validationIcon` + : `${rootClass}-icon`, + ...customIconClasses, + ], + }, context))} + ${when(multiline, + () => html` +
    +
    Show markup
    <label for="lifestory3" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-FieldLabel--left" style="width: 72px">Life story</label>
    +
    +<div class="spectrum-Textfield spectrum-Textfield--multiline">
    +  <textarea id="lifestory3" name="field" value="" class="spectrum-Textfield-input"></textarea>
    +</div>
    +

    Right
    Contribution

    A right aligned Field label.

    +
    + +
    + +
    +
    Show markup
    <label for="lifestory4" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-FieldLabel--right" style="width: 72px">Life story</label>
    +
    +<div class="spectrum-Textfield spectrum-Textfield--multiline">
    +  <textarea id="lifestory4" name="field" value="" class="spectrum-Textfield-input"></textarea>
    +</div>
    +

    Required
    Contribution

    A Field label for a required field can display either the text “(required)”, or an asterisk. If using the asterisk icon, do not leave any space between the label text and the start of the <svg> element in the markup, so extra space is not added in addition to the inline margin.

    +
    +
    + +
    + + +
    + +
    + +
    +
    + + +
    + +
    + + +
    + +
    +
    Show markup
    <label for="lifestory5" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">
    +  Life story<svg
    +    class="spectrum-Icon spectrum-UIIcon-Asterisk100 spectrum-FieldLabel-requiredIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Asterisk100" />
    +  </svg>
    +</label>
    +<div class="spectrum-Textfield">
    +  <input id="lifestory5" name="field" value="" class="spectrum-Textfield-input">
    +</div>
    +
    +<label for="lifestory6" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">Life story (required)</label>
    +<div class="spectrum-Textfield">
    +  <input id="lifestory6" name="field" value="" class="spectrum-Textfield-input">
    +</div>
    +
    +<br/>
    +<br/>
    +
    +<label for="lifestory7" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-FieldLabel--left">
    +  Life story<svg
    +    class="spectrum-Icon spectrum-UIIcon-Asterisk100 spectrum-FieldLabel-requiredIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Asterisk100" />
    +  </svg>
    +</label>
    +<div class="spectrum-Textfield spectrum-Textfield--multiline">
    +  <textarea id="lifestory7" name="field" value="" class="spectrum-Textfield-input"></textarea>
    +</div>
    +
    +<label for="lifestory8" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM is-disabled">
    +  Life story<svg
    +    class="spectrum-Icon spectrum-UIIcon-Asterisk100 spectrum-FieldLabel-requiredIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Asterisk100" />
    +  </svg>
    +</label>
    +<div class="spectrum-Textfield is-disabled">
    +  <input id="lifestory8" name="field" value="" class="spectrum-Textfield-input" disabled>
    +</div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    Migration Guide


    T-shirt sizing

    +

    Field label now supports t-shirt sizing and requires that you specify the size by adding a .spectrum-FieldLabel--size* class.

    +

    \ No newline at end of file diff --git a/floatingactionbutton.html b/floatingactionbutton.html new file mode 100644 index 0000000000..7533e2fa88 --- /dev/null +++ b/floatingactionbutton.html @@ -0,0 +1,27 @@ +Floating action button - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Floating action button

    Component status
    Contribution
    Current version@spectrum-css/floatingactionbutton@2.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/floatingactionbutton@3.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Usage notes


      +
    • Floating action button is used to give users a more prominent button for high frequency actions
    • +
    • When using Floating Action Button in dark themes, the background-layer-color-2 will often show up on the base color gray-50 or gray-75 or on content, images, etc.
    • +
    +

    Variants


    Primary
    Contribution

    +
    Show markup
    <button class="spectrum-FloatingActionButton spectrum-FloatingActionButton--primary" aria-label="Add">
    +  <svg class="spectrum-Icon spectrum-FloatingActionButton-icon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-icon-18-AddCircle" />
    +  </svg>
    +</button>
    +

    Secondary
    Contribution

    +
    Show markup
    <button class="spectrum-FloatingActionButton spectrum-FloatingActionButton--secondary" aria-label="Add">
    +  <svg class="spectrum-Icon spectrum-FloatingActionButton-icon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-icon-18-AddCircle" />
    +  </svg>
    +</button>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    \ No newline at end of file diff --git a/form.html b/form.html new file mode 100644 index 0000000000..1d416431db --- /dev/null +++ b/form.html @@ -0,0 +1,498 @@ +Form - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Form

    Component status
    Contribution
    Current version@spectrum-css/fieldlabel@8.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/fieldlabel@9.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Usage notes


    Form provides structure and spacing for your form fields.

    +

    Variants


    Standard - left-aligned text
    Contribution

    A two column layout with left-aligned label text. Apply .spectrum-FieldLabel--left to each Field label.

    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    Interests
    +
    +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Show markup
    <form class="spectrum-Form">
    +  <div class="spectrum-Form-item">
    +    <label for="fieldLabelExample-company-1" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--left">Company Title</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Textfield spectrum-Textfield--multiline">
    +        <textarea id="fieldLabelExample-company-1" name="field" class="spectrum-Textfield-input"></textarea>
    +      </div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--left" for="fieldLabelExample-emailaddress-1">Email Address</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Textfield">
    +        <input class="spectrum-Textfield-input" aria-invalid="false" type="text" id="fieldLabelExample-emailaddress-1">
    +      </div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--left" for="fieldLabelExample-country-1">Country</label>
    +    <div class="spectrum-Form-itemField">
    +      <button type="button" class="spectrum-Picker spectrum-Picker--sizeM" aria-haspopup="listbox" id="fieldLabelExample-country-1">
    +        <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </button>
    +    </div>
    +  </div>
    +
    +  <div class="spectrum-Form-item" role="group" aria-labelledby="checkboxgroup-label-1">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--left" id="checkboxgroup-label-1">Interests</div>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-FieldGroup spectrum-FieldGroup--vertical">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-FieldGroup-item">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1-0">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </span>
    +          <span class="spectrum-Checkbox-label">Kittens</span>
    +        </label>
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-FieldGroup-item">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1-1" checked>
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </span>
    +          <span class="spectrum-Checkbox-label">Dogs</span>
    +        </label>
    +      </div>
    +    </div>
    +  </div>
    +
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--left" for="fieldLabelExample-stepper-1">Age</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Stepper">
    +        <div class="spectrum-Textfield spectrum-Stepper-textfield">
    +          <input type="number" class="spectrum-Textfield-input spectrum-Stepper-input" min="-2" max="2" step="0.5" id="fieldLabelExample-stepper-1">
    +        </div>
    +        <div class="spectrum-Stepper-buttons">
    +          <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--top spectrum-Stepper-button" aria-haspopup="listbox" aria-label="Add">
    +            <div class="spectrum-InfieldButton-fill">
    +              <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +                  <use xlink:href="#spectrum-css-icon-Chevron75" />
    +                </svg>
    +            </div>
    +          </button>
    +          <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--bottom spectrum-Stepper-button" aria-haspopup="listbox" aria-label="Add">
    +            <div class="spectrum-InfieldButton-fill">
    +              <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Chevron75" />
    +              </svg>
    +            </div>
    +          </button>
    +        </div>
    +      </div>
    +    </div>
    +  </div>
    +</form>
    +

    Right-aligned text
    Contribution

    A two column layout with right-aligned label text. Apply .spectrum-FieldLabel--right to each Field label.

    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    Interests
    +
    +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Show markup
    <form class="spectrum-Form">
    +  <div class="spectrum-Form-item">
    +    <label for="fieldLabelExample-company-2" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--right">Company Title</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Textfield spectrum-Textfield--multiline">
    +        <textarea id="fieldLabelExample-company-2" name="field" class="spectrum-Textfield-input"></textarea>
    +      </div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--right" for="fieldLabelExample-emailaddress-2">Email Address</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Textfield">
    +        <input class="spectrum-Textfield-input" aria-invalid="false" type="text" id="fieldLabelExample-emailaddress-2">
    +      </div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--right" for="fieldLabelExample-country-2">Country</label>
    +    <div class="spectrum-Form-itemField">
    +      <button type="button" class="spectrum-Picker spectrum-Picker--sizeM" aria-haspopup="listbox" id="fieldLabelExample-country-2">
    +        <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </button>
    +    </div>
    +  </div>
    +
    +  <div class="spectrum-Form-item" role="group" aria-labelledby="checkboxgroup-label-2">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--right" id="checkboxgroup-label-2">Interests</div>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-FieldGroup spectrum-FieldGroup--vertical">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-FieldGroup-item">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2-0">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </span>
    +          <span class="spectrum-Checkbox-label">Kittens</span>
    +        </label>
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-FieldGroup-item">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2-1" checked>
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </span>
    +          <span class="spectrum-Checkbox-label">Dogs</span>
    +        </label>
    +      </div>
    +    </div>
    +  </div>
    +
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel spectrum-FieldLabel--right" for="fieldLabelExample-stepper-2">Age</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Stepper">
    +        <div class="spectrum-Textfield spectrum-Stepper-textfield">
    +          <input type="number" class="spectrum-Textfield-input spectrum-Stepper-input" min="-2" max="2" step="0.5" id="fieldLabelExample-stepper-2">
    +        </div>
    +        <div class="spectrum-Stepper-buttons">
    +          <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--top spectrum-Stepper-button" aria-haspopup="listbox" aria-label="Add">
    +            <div class="spectrum-InfieldButton-fill">
    +              <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +                  <use xlink:href="#spectrum-css-icon-Chevron75" />
    +                </svg>
    +            </div>
    +          </button>
    +          <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--bottom spectrum-Stepper-button" aria-haspopup="listbox" aria-label="Add">
    +            <div class="spectrum-InfieldButton-fill">
    +              <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Chevron75" />
    +              </svg>
    +            </div>
    +          </button>
    +        </div>
    +      </div>
    +    </div>
    +  </div>
    +</form>
    +

    Labels above
    Contribution

    A stacked layout with the labels above the form fields. Apply the variant class .spectrum-Form--labelsAbove to the Form itself. You do not need to apply a specific class to the Field label.

    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    Interests
    +
    +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Show markup
    <form class="spectrum-Form spectrum-Form--labelsAbove">
    +  <div class="spectrum-Form-item">
    +    <label for="fieldLabelExample-company-3" class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel">Company Title</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Textfield spectrum-Textfield--multiline">
    +        <textarea id="fieldLabelExample-company-3" name="field" class="spectrum-Textfield-input"></textarea>
    +      </div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel" for="fieldLabelExample-emailaddress-3">Email Address</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Textfield">
    +        <input class="spectrum-Textfield-input" aria-invalid="false" type="text" id="fieldLabelExample-emailaddress-3">
    +      </div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel" for="fieldLabelExample-country-3">Country</label>
    +    <div class="spectrum-Form-itemField">
    +      <button type="button" class="spectrum-Picker spectrum-Picker--sizeM" aria-haspopup="listbox" id="fieldLabelExample-country-3">
    +        <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </button>
    +    </div>
    +  </div>
    +
    +  <div class="spectrum-Form-item">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel" role="group" aria-labelledby="checkboxgroup-label-3">Interests</div>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-FieldGroup spectrum-FieldGroup--vertical" id="checkboxgroup-label-3">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-FieldGroup-item">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-3-0">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </span>
    +          <span class="spectrum-Checkbox-label">Kittens</span>
    +        </label>
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-FieldGroup-item">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-3-1" checked>
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </span>
    +          <span class="spectrum-Checkbox-label">Dogs</span>
    +        </label>
    +      </div>
    +    </div>
    +  </div>
    +
    +  <div class="spectrum-Form-item">
    +    <label class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel" for="fieldLabelExample-stepper-3">Age</label>
    +    <div class="spectrum-Form-itemField">
    +      <div class="spectrum-Stepper">
    +        <div class="spectrum-Textfield spectrum-Stepper-textfield">
    +          <input type="number" class="spectrum-Textfield-input spectrum-Stepper-input" min="-2" max="2" step="0.5" id="fieldLabelExample-stepper-3">
    +        </div>
    +        <div class="spectrum-Stepper-buttons">
    +          <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--top spectrum-Stepper-button" aria-haspopup="listbox" aria-label="Add">
    +            <div class="spectrum-InfieldButton-fill">
    +              <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +                  <use xlink:href="#spectrum-css-icon-Chevron75" />
    +                </svg>
    +            </div>
    +          </button>
    +          <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--bottom spectrum-Stepper-button" aria-haspopup="listbox" aria-label="Add">
    +            <div class="spectrum-InfieldButton-fill">
    +              <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Chevron75" />
    +              </svg>
    +            </div>
    +          </button>
    +        </div>
    +      </div>
    +    </div>
    +  </div>
    +</form>
    +

    \ No newline at end of file diff --git a/get-started.html b/get-started.html new file mode 100644 index 0000000000..4564828a6d --- /dev/null +++ b/get-started.html @@ -0,0 +1 @@ +Getting started - Spectrum CSS

    Get started with Spectrum CSS

    We have a number of resources that outline how to set up Spectrum CSS for your project, as well as an introductory tutorial that’s a hands-on way to understand how our implementation works.

    Resources


    If you're ready to jump in, here's how to set up Spectrum CSS on our GitHub:

    Contribute to Spectrum CSS


    We'd love for you to contribute to the Spectrum CSS project. Review the contribution guidelines on our GitHub to get started.


    \ No newline at end of file diff --git a/helptext.html b/helptext.html new file mode 100644 index 0000000000..133f91c467 --- /dev/null +++ b/helptext.html @@ -0,0 +1,203 @@ +Help text - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Help text

    Component status
    Contribution
    Current version@spectrum-css/helptext@5.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/helptext@6.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Sizing
    Contribution

    +
    +

    S

    +
    +
    Create a password with at least 8 characters.
    +
    +
    +
    +

    M

    +
    +
    Create a password with at least 8 characters.
    +
    +
    +
    +

    L

    +
    +
    Create a password with at least 8 characters.
    +
    +
    +
    +

    XL

    +
    +
    Create a password with at least 8 characters.
    +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeS spectrum-HelpText--neutral">
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeM spectrum-HelpText--neutral">
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeL spectrum-HelpText--neutral">
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeXL spectrum-HelpText--neutral">
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +</div>
    +

    Negative
    Contribution

    +
    +

    Negative

    +
    +
    Create a password with at least 8 characters.
    +
    +
    +
    +

    Negative with icon

    +
    + +
    Create a password with at least 8 characters.
    +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Negative</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeM spectrum-HelpText--negative">
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Negative with icon</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeM spectrum-HelpText--negative">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-HelpText-validationIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +</div>
    +

    Negative Sizing (with icons)
    Contribution

    +
    +

    S

    +
    + +
    Create a password with at least 8 characters.
    +
    +
    +
    +

    M

    +
    + +
    Create a password with at least 8 characters.
    +
    +
    +
    +

    L

    +
    + +
    Create a password with at least 8 characters.
    +
    +
    +
    +

    XL

    +
    + +
    Create a password with at least 8 characters.
    +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeS spectrum-HelpText--negative">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-HelpText-validationIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeM spectrum-HelpText--negative">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-HelpText-validationIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeL spectrum-HelpText--negative">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-HelpText-validationIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeXL spectrum-HelpText--negative">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-HelpText-validationIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +</div>
    +

    Wrapping
    Contribution

    +
    +

    Wrapping

    +
    + +
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Wrapping</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeM spectrum-HelpText--negative">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-HelpText-validationIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <div class="spectrum-HelpText-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
    +    </div>
    +  </div>
    +</div>
    +

    Disabled
    Contribution

    +
    +

    Disabled

    +
    +
    Create a password with at least 8 characters.
    +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Disabled</h4>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeM spectrum-HelpText--neutral is-disabled">
    +      <div class="spectrum-HelpText-text">Create a password with at least 8 characters.</div>
    +    </div>
    +  </div>
    +</div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    \ No newline at end of file diff --git a/illustratedmessage.html b/illustratedmessage.html new file mode 100644 index 0000000000..830d1d7d48 --- /dev/null +++ b/illustratedmessage.html @@ -0,0 +1,26 @@ +Illustrated message - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Illustrated message

    Component status
    Contribution
    Current version@spectrum-css/illustratedmessage@7.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/illustratedmessage@8.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Usage notes


    The Illustrated Message displays an illustration along with a heading and description. Optionally, part of the illustration can use an accent color. It can be used for status and errors, or as a call to action. For example, the Drop Zone component makes use of Illustrated Message as an area to drag and drop files.

    +

    Variants


    Standard
    Contribution

    + Asset 1 +

    Error 404: Page not found

    +

    This page isn't available. Try checking the URL or visit a different page.

    +
    +
    Show markup
    <div class="spectrum-IllustratedMessage">
    +  <svg class="spectrum-IllustratedMessage-illustration" xmlns="http://www.w3.org/2000/svg" width="200" height="98" viewBox="0 0 199 97.7"><defs><style>.cls-1,.cls-2{fill:none;stroke-linecap:round;stroke-linejoin:round;}.cls-1{stroke-width:3px;}.cls-2{stroke-width:2px;}</style></defs><title>Asset 1</title><g id="Layer_2" data-name="Layer 2"><g id="illustrations"><path class="cls-1" d="M110.53,85.66,100.26,95.89a1.09,1.09,0,0,1-1.52,0L88.47,85.66"/><line class="cls-1" x1="99.5" y1="95.5" x2="99.5" y2="58.5"/><path class="cls-1" d="M105.5,73.5h19a2,2,0,0,0,2-2v-43"/><path class="cls-1" d="M126.5,22.5h-19a2,2,0,0,1-2-2V1.5h-31a2,2,0,0,0-2,2v68a2,2,0,0,0,2,2h19"/><line class="cls-1" x1="105.5" y1="1.5" x2="126.5" y2="22.5"/><path class="cls-2" d="M47.93,50.49a5,5,0,1,0-4.83-5A4.93,4.93,0,0,0,47.93,50.49Z"/><path class="cls-2" d="M36.6,65.93,42.05,60A2.06,2.06,0,0,1,45,60l12.68,13.2"/><path class="cls-2" d="M3.14,73.23,22.42,53.76a1.65,1.65,0,0,1,2.38,0l19.05,19.7"/><path class="cls-1" d="M139.5,36.5H196A1.49,1.49,0,0,1,197.5,38V72A1.49,1.49,0,0,1,196,73.5H141A1.49,1.49,0,0,1,139.5,72V32A1.49,1.49,0,0,1,141,30.5H154a2.43,2.43,0,0,1,1.67.66l6,5.66"/><rect class="cls-1" x="1.5" y="34.5" width="58" height="39" rx="2" ry="2"/></g></g></svg>
    +  <h2 class="spectrum-Heading spectrum-Heading--sizeM spectrum-Heading--regular spectrum-IllustratedMessage-heading">Error 404: Page not found</h2>
    +  <p class="spectrum-Body spectrum-Body--sizeS spectrum-IllustratedMessage-description">This page isn't available. Try checking the URL or visit a different page.</p>
    +</div>
    +

    Illustration Accent Color
    Contribution

    To use the accent color, the class .spectrum-IllustratedMessage-accent can be added to element(s) within the illustration SVG.

    +
    + +

    Drag and drop your file

    +

    Select a file from your computer.

    +
    +
    Show markup
    <div class="spectrum-IllustratedMessage">
    +  <svg class="spectrum-IllustratedMessage-illustration" width="199" height="98" viewBox="0 0 199 97.7"><defs><style>.cls-1,.cls-2{fill:none;stroke-linecap:round;stroke-linejoin:round;}.cls-1{stroke-width:3px;}.cls-2{stroke-width:2px;}</style></defs><path class="cls-1 spectrum-IllustratedMessage-accent" d="M110.53,85.66,100.26,95.89a1.09,1.09,0,0,1-1.52,0L88.47,85.66"/><line class="cls-1 spectrum-IllustratedMessage-accent" x1="99.5" y1="95.5" x2="99.5" y2="58.5"/><path class="cls-1" d="M105.5,73.5h19a2,2,0,0,0,2-2v-43"/><path class="cls-1" d="M126.5,22.5h-19a2,2,0,0,1-2-2V1.5h-31a2,2,0,0,0-2,2v68a2,2,0,0,0,2,2h19"/><line class="cls-1" x1="105.5" y1="1.5" x2="126.5" y2="22.5"/><path class="cls-2" d="M47.93,50.49a5,5,0,1,0-4.83-5A4.93,4.93,0,0,0,47.93,50.49Z"/><path class="cls-2" d="M36.6,65.93,42.05,60A2.06,2.06,0,0,1,45,60l12.68,13.2"/><path class="cls-2" d="M3.14,73.23,22.42,53.76a1.65,1.65,0,0,1,2.38,0l19.05,19.7"/><path class="cls-1" d="M139.5,36.5H196A1.49,1.49,0,0,1,197.5,38V72A1.49,1.49,0,0,1,196,73.5H141A1.49,1.49,0,0,1,139.5,72V32A1.49,1.49,0,0,1,141,30.5H154a2.43,2.43,0,0,1,1.67.66l6,5.66"/><rect class="cls-1" x="1.5" y="34.5" width="58" height="39" rx="2" ry="2"/></svg>
    +  <h2 class="spectrum-Heading spectrum-Heading--sizeM spectrum-Heading--regular spectrum-IllustratedMessage-heading">Drag and drop your file</h2>
    +  <p class="spectrum-Body spectrum-Body--sizeS spectrum-IllustratedMessage-description"><a href="#" class="spectrum-Link">Select a file</a> from your computer.</p>
    +</div>
    +

    Migration Guide


    Removed Classes

    +

    .spectrum-IllustratedMessage--cta — The Standard variant currently provides the same styles.

    +

    \ No newline at end of file diff --git a/img/art_bk.jpg b/img/art_bk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..651e0578d10a70c5067b529fb689d4e7350162ed GIT binary patch literal 192691 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

    7PtLyD8uMo@Im>fiGj#)A!m_K z0t`M<-^yU}APtYQBWJ``O8DO@KLXbd z8Y{!DV|&j%?7@C@|0#tL3DO|(_!RrL4V=Wp|*r=S~EkJ8>AfUlURb_z8N! zXy0!$O2IXY7Y|v6YUAn}&GQu$S``VqcKT2y0%?|J5uk>c6dkg5AX%2 zfr-Byu>K&R--k_*nOT!n>hnv|OKw6y_!8YY`ub<~B~gdc(N9ARYM=vByAhpv0qaG} zRSRL7m?5|MdCX^o*|P*2S%D5sdHd6>fYSU)y$#|F!A4bGhN6F<)o*er+_$x_25#Ow zW_GAr3SgH&%HtsUn3l<(>{sVfHI7EC@l5o_+ZWDT9YWVdo~^ErxMqk0l{Ews2jbcH z``HQLwEv;lB%RX|q)dCw{}wz$Wk3rd7GC_DqKHcUd1l^8%h7)-xDm?B(2MQVJ$M^B zN=wim9cq7+0$f8z!ylG=LLWZqGb&o`RT;?}XM%yhn+X*1pW2Y3MMGfc&fD#40PUvo zb*+iy-DF)qXtaSciMp#{MbU^@^9ZfAC&m9p zZ%0d<(OT%|Ota&pLz2)7C~Z{#wC57-9@Tzh#TyCN_t!~y|C=JSW`l{0bo0LOO$3hE zSTk9G>IiU}I6ZMWK6JG{0br@Q#0z73YoT}~{V98jdH&+N`xMV_`-ykYYB9SOIQkeG zjvfl9;Ug<2j@SkAf7g{5bK;DzxFf;A2~g->Qs(n4ZKf^Q9@$ge?-Y`+gMG%hFK$)I zbvX+Xvhk@)CDcIw%3hLTY!mw3ebilJL8=V7bR~d<3jYU>sZ5D)?#G*mG`++*HhMZ* zd}9Ct)KRL?d#>Zyej|U@t{z)j|7YZ@{82!lE`&imA?&_z9o=Yru6vIoy5SeiajxKz zvsnCMsXd!i+9{DqLUAyC4#{pCFyL78M#2noobmPOrDHEcLG5y~TF3Ts&myGQ(D?Vj3^~PGymVK)9nf%3d z;_N2sJ6(~LHE}`v#c0bL@;29&TG0X9c$<(}Mu@N!hu_R?3et+H)_KSh`l9@U>`f=M z(Y%V0#e2$W_+x{gu!0b-^3$#uS>JtvKCPhf&J_8*AGQvfNcT;WiB8hCM!DoLx}A$@ zMa`$`NWiXhlEw5j_55xXTMXs5c(j;uXw7C*b+97yrO?+cO^OsQu=kP73{( ztrRz;T{?e-V4;c`-EeR(_q$K_EFLJrJa}ro3LYut_*%lnB%3bAzsaGdQWwVGh5dACWux898IIbyXdUygBB~A zP{is^H$V1qBRj?-bowVc3bOBkjmAFzbEThmf^L1xf$2w`3hAejYh*Ic|F}-LpP^0M zjd&|%OYimP+`ndbJsp@}-Rib8HoFFmEV21#NsQ_(%Rq|f=h{+2igL~ztbZEZkp$Tk zCI;G$e@#dqi}4i|i;s5$AGD5aTrri8WdR~{#u^HCvkhj9z$yfKa?SwT!Et?k>`CT);VDf^CM+1r6+wr^@$1Z4>Jxck$#)S$>$8)HXGRj zSE;##(u%Upcx<))#dfQh+YTw41Y^8_FB><0OD~|ue<d;$ZTYiS4*aj8U7mjz1`!9q`qk(hRT>UhN0 z>v(qa#1hPGv+ij=F4BPPr}eq=DXbx2t{#HYNd#ciTK96A(qf!smY;S$a}=Q&~7O%lOhVeLkA^I zr#Ds+<*^_LGKYsvBd`+FNF!vPm-BUvT}?9I*&msF6g>fLz5Vj0fsKjtOp|+Z!<0M? zb^hz-u<{b{#kyvG)LiBD+Xc4wU>}7+BV6@;NToz+uGR~;Tgb=+?g@+QA1T27?je0k z=}CNmW5-;vUbSOp`9bNHI{I!BtbKwZ5g;%e8z=59GPk_dD*(;bfHLpc{eW^Uy6Z@I zfHbQZvdwbYlzc>iy~>JT<|rjU1^;=VQ{mMh;Tyv93nsb%+s|6e0K!sM8ov`ipxa&iXs{KlC-!q95x4Q*V7tc(9AGmS6MK7RE6iSZ-zv$d~zi^O7*>QY5 z|5CvJ;_QD|5*Cz-2zb}FwJ^?;i;M`J976OgzBhLsawSg4;&?5A`=NKjVo*;thG@{{ zFP5e%Iw@oIAV!rf1NkLop#8(6e{o1i+Xtflh|s^(D$M6!q&yO(c=@7G6OgS@OJsVM z2$FGz6lnH*JM5hZx1qZ<`F60r9cJ-6Rnn+C%ZDe;w@x0=KFs0!ABsJ?6ZC-`#!sXrrW@yM5viCJl|Y(SBC8c*%5$o7&ttglPwrI%F3*$tI<^$Y7MycOtA!QteCwi zEXzpf9%O@4xIC2uJ0jX~aLsK$O?h$lSt)*0R8l{mpn(=oYUaF>rIxqcp)1>95a*K$ z=zI0uV@78kwXPW!vlGO(A$R%CB4#r}y(*u(z9j9ak~o(^Zh&4eM@#V@(AMNXzvFC< zH~nTNepBYVWU2#zu~C=o5)kUJ0tDUBO6%iP{@vW)x$p&H5T=6AqOS?|){MKYlC;b- z#k~a@V!l7TZxFH+7J|)8)}lUCRaf^dsGIwgm_MfH64epFPn?XwqaiulQAo`o6$8HT zo)#LOdj0g0X`^|E8N+}k3dUty-F9L>ldLk7af{^ZuV zY>Y?LI}WIX=7{0rcSeYDhkL`G0eY2qC5HgwFnxhr8O&OnQbjX=-!3HGRdzpTb z45~b1xGWRU9OqPMoLa4hD3K|b82>xiGibf9v~^rl>@v8BY5T5N=4wo%Bo(ez9L-}r zy@aA;K9KGuPh78xl4`W_h;ZBJC>UWa3dIybJi8(+m(kQv#t)lbUPxY)69gF9;8s?t02P7Kk#G1+1Gn>I z{xYD|;qb?*d(D)@PD*8CtTQ~~4VDSN?lUmLgiHW`@a)JZ6PbD0?Q$=_Mq&w5o8*Tq z*pO~C1nT+z`2yaX%-;~W%P8AxWD=7#PO_i&ZbB7n&$0xGD-KmtgLBh8iyp@z(`y#i zfCQ_~oJV>p2Pw6V{_q(Sg)z=Hu41tQ>&MJwQ3z*oC z?1)`n^EU%uCP)RY=#Z3l*?`#N>#!1;!=4E`c%URiv$3AcVz#llnPfy|+}?N_V$8%+ ztHhJXc%ky)TtEE@D)6HmyZA1BW*`vhBYXTg;kf(est-LGd`8BF%#!h**tiskn*NG3 z%y4mb1VMtW7S1pb=h^GmKB@e~D ztWku=q;`TUw;{N|WG+D4O7vV}D*$bq!%1Nv-cnCPJk=;{sPYCbJBt???VRs5AW*26HZGx>4fGr~$NNniuROn<-cKkt-paI5g0fy{0$r|JBy zhwqV?<15eleowj8;{!n~<^NDxScF~6kY~~L)F;v>MMJLkfV(vNJRZlVv<%{(rh9rR zTRj~huVSY+R&IAiq6h`QNY`LYVH1WEIlJh5kW-|#X8*e-T^KlHuIUsU-{ z4|pj(9V}lnED}F`$L7No;W)p42Rg~+WK&>N@KY;#D7Qs8#bYH6=zEe8avHfP*kvkA5vZz(BOEh-Uuh9Qhw>=hCYKR78eUQIYUsW!@O*O z4dtN?fwVeDTMBjg{HE2a(642cUoRrpyiD|hB~yGpQiEy5=MiRAcSaBYp*)|3djP)} zpmO_cWm^p}`3_aRU@s_s@IlOnxl0-zqoQ=;Ur`iszRodszQUmH zN6ul7-Xjjt&1WQ9vDzN8YDP-}s~|%(B_V$OKhHcUdb=UlVr-H1gqkQs>r6J(I-y_f zuQj|R`@L{li-*4tBGxNR?<|L?UouN^vKp(gd+S)}dXX4xXk`;n380s(LF{0W_@h^(l%r@4Hk!iV^8t5Whi+Az* z_W6ECPNYRmzfv(|t-oJq>#zEaUzeRrz^cMs;UfqiwhC)2?#e2??Vga_$@!F(YewrR z_ZgN3k0Hs+E(llZVqNxTMtt2t(L)FBCZ7&Ijyv#u_pV6PUkLUujevz}A5SRhcVvIa z9v$x1NJq#o?>%Q5de~@DT==I3O_u^e&7>p0k~N{l&D~%_R*jey$bwA)H^83W?C@ch(}ym5wejag%qFsZ+m6M zQ|zXCKRAZ^3pvslpWztfN0|w1AKj^&BOS5F z1V0lE%p{2&?KeD$$WVCBA9lxxT+=@l81foHmfiiBS~5)7?8`sxVctIrB8uKlGvsXg zp55-2rd45^^>fGVgDIWI>R+%%Q8eY-dZDoR;)MIorXX}Iz7sE3K$i-r!faGU>SusrKZ0kI9DlWq?O3liZ2#1w0i|l*rojDs_NswP>a$6z7Zu zSs|bfDZLgevPp|Yt#0rvbbxCoHZv_)G0Qf z*mP%st$rIJ?x{a>adNyQ99|skZ!}Q04^oFQDz`aM)`%EYVa4a7AVo_v`cQ{gRgw%z zn=bQdv+efq_J*#h<`t^~anDl9VZhW08u+ZrvOJ|u>+8@&jLGU^M$R1sDqqMH{YKZO zu{zRu{b_PDpz9%YPv2oiS3%If_;@jD#Vl8CVBjqr=~Q6l{V4Vkkm>FzeBYF2$r1F6 z<~*ae)M@pHYloZ=c-~=k(DTORjUF7+5W&x6S2z?=wF>q1Phx8$lGpIG&RlCd2)kPOk0am z38p81r!8^Es+V0@9=X$5sEE+T8_A|r08mgQjY17Bt?^xy`&3qRnEu{E)HJTVORM^| zOUmPc7IwJKd(X*hndv}$f0IbnBC{NL>- zGD-3BfW+EEeeEbyIb`*j2?2}q?oijr_j6bc_@~yk|)(*gkxcDigUn}+_q%p)XI0l4LRX~KIXp)K?ZwPs^ zMbGr_79P=kt~iJVE|EJa@~1Zq*^GKEse(>?(2B8l3aAwe^O&$MZ#CLp>%QC_*>`x< ze3(Dxv!6QC|DMLr)c9gInT8$tZvla|dL7@cfg7wUIrmUq`b6E|&XQcom3VcuEMQ&R-+KZw%z0_wGXkitb!znSn$$o&itv}L` zHbd&OKNE6lle4{}k-P2R{bP^@K`8RJC?|Q`H<*ua7N_fep}9VkL!t>qkjXos|1U`M zS#kAM(!wIdl=A_y%5`VrMT0tf?PP{gspSsYG$nUX^GUrK*|5@^@Ucg9Ghth+D7edd zof)f8b(4H@U3!v(DL6<}y)$g?@yCg|abfY?`ca8=Jk|QvUd>vl2vfdLb@(};KGk`k zms+txs#mx|P}|^AX7S8Ibo9#vmX?ylGQQD@J>7j~MZtY$-KSQ&=r@E7#!#H+5DX6d z;dRolJTPI6Azgb?=AZX84!;7~wbGWZa`nBc3hUT zCQMFGgN-%aYf*zWDwPYXQ~Yyf=#;L}x#ZryrCn^kopBYTffxJL=$`uJ&$XUHi0L}5 z{za8;@`^rT+|G$vL+t5n-R0Xv?v|aK>1~x?Q64rAef5=}n<{mE9Eq-(qd+qEn!;1)Y<{?3#iplG@AfuyGe?H5Br&7oqL5vwtjznaf>x4d*>fJFi92+^5rCkF z({Gsk!k&+*!QjKBInD989+EUOoi^KC^pxCD`W$DE9H7H2ayEv8^C3yfmDO@LBqBE1 zK7EM1XN$jZB`Xowc~EF`_Qr4^<0HL>XvDOlA}|?c=%Bw)MFLm-I>g3ciF<{ilHOc$A{}{*xmsJkpn ze8X)+B!?p-R6#n$ARpj6kq4G7z4{uHp==Gjs2D3j`aFK^A6#8pd7W*>NeyWdJ&E+`DxJ1x-H^+DdSjJPbEd5;)-G zUm6v;cQvFxI90Z3h_q=mHAG`_wP8a_=Gk^mA$%wL-p9V~4v2UWQYXQzM$d3C7hN2^ zp;unOa8jb7+FnhHRc`pN?DeBdrIn;i0QeIyp02*AVx#L%*&gdP50~!G;HLFtsN=sQV=*HG>KzS89`J+6>8 z`dXGh69Zh2H^1WC+!U6>*;XV95+{Bk$?k78n<}^fU|yKLQ9F6_!ug{&W%=%M7+YQL zXEZI*okc&VOB&T#u12D^rRn+{IYwkWUR=qK?j_`=54ROgBUxgS$ng0Yd`tDgcar*l z!##%AbbAs!Qf_~DN~DYnGZr`Yvxb90GRdA=~CnbL!_rTx-+oLWbtwC_Pw}! zwYZ`OQbmT?47CLgttTi|=Et0AnfNq-O5<0}g1xL<&#CQ>;QoGELTfZJ*=L57zzUIJqE% zfcbd*72@C&DaI}wLtH;xs!=Jdwf=`Pg|b{RUf7B&R7n3_`*TN-c}rYQxz-u7(zvM5 zIcW4Rom`E@p~tVcUuA&#ST9axQvN*n^=8lCd_mvikX`jlvS8Kjq%V$74#1@RA}Xq9 zU+(ia^$;RV)`L5lLO#7BNTY)0Ejn#C0CI5FX@PYqQx+@ z#MwRa*|*`9O93VoukWwZ2pr**^bvH96YBD`-q^$%ej<_(Po~*3|HhU($#j=W5@Z?n z4;ntpg&txH(2TpJUJG^9_w!P0WN~#G&_+1$`1*0$ab8r%bXX_Byaty&J*A+h+-y1? zIorAVJ37}|aEH4bMCp$LnC{r$gJDn~oxn=LGLZ#s9#3e-GMh3C`*9#n(Qs3oezzw% zeZ4uvpLm8%q_1@R7OoKNQ8L_LAf;oOqmSw9mrvCrD<_nm_e-$lm)Px`ScKg?#S~X|#r} zWQ)x{BpR*OI3|wFavC#Oz!o~u(as1n8cY4Yj6pxiJE_Y{IXye#^nY{b$-ctbU>UdRZy!g9WpO8u}AU5safus8w#4w%tyh#3v*)aUf>5tv^v zCtE9G0!?+R86k0{FNxLXym9~oSMpHyTU;}<2;i;NCPPqt>cH<V+ z*fuyb*meIbW4yFYtyJMG8WuAUrD~Afh4(zF`qM>)=ILBcd3cAjOCtv7-M2Qg70@n; z<4?wx>Yl^j>*8*Y96ahx8(wK=E^Hjk@B`ZII=C*ID?^prXm~@4$d`D7m@Sg$AYgz$ zDc$N^EBLg?nDA320YkloQMvGQ%O0l+qyP!|w=SKY~U^Tm!Y`nZ}N3EH50$ zw*08NG}UVtw`6Ff6P8cU#PS8jwH%-8!rgrIYRBNY7_YT$bkwO}!|ZjHbe(HhZtK%r z&E#$TJt2Q}9L(zoxnOvuYSfm39gHoKXCq_NaLWZf;*&P2k5`cvgDy)>ro{NtV&#=g z?98t0wJRhYNV)tQoQm*T|N7N@R6e8UwP)+!xvqeL0l$nuz_{O@64c((zx`6Kp0Mm= z7B%tGk*wNKr4cr-MawhIHO2EX=Xm$30`k6SIVtV`tEJxID?fvPuQ*lUYew*#`;Mb8 zVM9{GCbZ#wj~kaH68bIk3&WfYnAalHy}yI9fxCPdp{z^8TwZCKZ-UF|ymcIO*_%-YH45MVRsE*W){oK?ia%7|~%RBAQkW|{$`%XD8`R;n1 z;sRex3kVc-Sy|`(Z|vBqoF-9ZT>vhOZ>zqtmaEwJJ)9^W)2dz#YTI%86(3H^1W};f z;nxkIF#Hci+wE5Osru*yeMPZ2iggNG(Sza3NflrF}k1PpyH}}COFCty{^s9Ti3W&5s6QI0K2xjyF`rCqEa+zeW zq)x$U?)D3~4u8;s5zS1z|S*S=n5><|3ce0==ydrQX)G&mcFbsbzbx{>>(H>=?W@x@pUEum8n6pR z5sNCM>!M8Y`y&%^l}zoo^{^9sKF#Id-R4@HoTT}h#No)^*9NcV{C#`z`K@kLVR*u5 z76~g81LJJdNDsy*$lH9-hLJmlvVHH2k^-Zdy$iI$|$5 zD)$o)?L$_o;1sLlLKY3l`0s>sW93+yw=aB_PHOd3T6rs;ONVSf^RwIxnF#f2fql7R zW6Hbtjl*Q<>}iO}0+4>_V%Lsl*Fr{>DV+*{lTv3j*MSKs78yFi0s9}bI6BedsnCWa z)Gr`?vQ~S&D$epgS_v9>RB~2sgBlU}G`{ZZZiaN3fd=!wK$6yD~4WYP*xD3ZY*U_^3Txo=W;L4?16;5PL z%T|o5$WF_q@RvHS4BSWHM>uyX0t{Q-qW`y?zXz~oz?B^{zbfVdG zx%m8-yD-6px8YldPYd^=PfNYed84@wT!MDP z&`((=O1tL0AL8k+oq|gZjUuQTMzrf=clzfh>KjS$Ka2L`lxOTH1sB_Ub=p)l>5YD$ zCx4El?)4Mp5|=q|He3swXppbA7eD-nfR`~8HbT|DloiBPa?+na(a<5C%S>y6e1-J% zeuI`KUZ*tyX?RSzZk01DZ5>^n4S#l|We$%@6wN-rJnyS53Y>-mL;7(wnz zW2kFx9Rr^mu5W9aTl{?XQpC`v8EVqG*=1e#wXN8mKd|p3Gv)4Rs97yfwlcQ~mxw|z z2zhdewq!7Q3OkwBm#v8rT^uWDB1i(F9?&H}DPQlL5rx+e71>dy%C~p2Gr}WIN(i*I z+)xH4>lK0uL4kkM%8r{fNy74tdue`-iN#3vAJ(gFX-siVsj~uW?ISU_->VyyG%r5%Zar&ZN7Etx zpWY6_c}Tj@+>7YdUeeC{@zuvyMNF5<)X=IwhK+L64?tzKKrA0xk82qR1o-Z6c&pOl z>MtWYBEl?5b7H^DM9J<$_bQ#-a6Rb_Y#|a&oS($H0#@qS#;#P>y7$y0Fxjn@tk{6+ zg0{`SNP9#isyPh<5d#1f1u}S@?w@ra=f7YD5J0=#*+_vpOj2L@+=o5~NwW5fa_FJl z@|&MdmYyh?CCNCQi|5}wC3#gld~;4yo`E7BKgJ7D(nF9 z;eJ~f)=C6QP$tY~XWv?g3&VMriucv}j9no8F3|c9@O)%EGlu)fZ$-heu8<}nx0RBk zMK?-0h02I|Ef(=yAM{%m=ey{)}Q1UZ&jGQB)oy-!x?^1UC&r@)?cKYqcd!R+?+C7 zSuSKLHRfaaO0Q?zLMOXog(V@0*G+WWORRZEyy>$4q!0A0#=u8<6}F=ztwV_DzQp>AMNth96W$mXGF2^0AX; zYJ#+Q>(FjmUDhC9@ygoSqR-IMx-RMu4Y@Jt-5jAyHzc(ITM#?5*h*sTj(;a5H+Xd4 z>K3;r#WuD;)>L;KyCF7{s%MhwK~>M%zMrq>_cx-WK^}68J46;W24f9wz}0jX8Sx~h ztnt9~Qw?TbGS%%*D&r2G|yQ>cLMZE(B@43R84*S_MX*DBV5Cl`%3*zZw zwws!+49wX0_1&~(^7vj%EM&Fk7nbb^_Nm3R*YCqz!6b&FiCjO=d84{J#U&kg6a0M- z)yJGyq91nhR9sx|ve(s$WHG8TSFz1%DJCnCw_iq#WAvE(G;ibOVe`=l_4_i$jx z&G;HmzkU!R75Hp6ufCpsL^jbaHgAd>fFhtaRL~sRRn7YuG0lINzKajSgar_LY9Lp~ zdAv}UhDRATeMy?bVb+&tI_oK;myHGrk2JQ=x)@zkWGf{2ij$Iq`>iXo#Tj3Y4#IO7 zLA-6~!*qBf`hD@0LCS;B^W;!s_fsJgx_9(@{8{A*ktAlSy>)9+y5D-hPnE;t}dkOn*U0Agma+;2SQ*O`B!|*T0VmE3c3*p`gz<+`uE1KEU99! zt}$24-SxLcogKiZ7(6Yl>>f&wV@`-WJ8$rGlDRz9I+8m;o@}!{)waT)1?Ta5`W|Hge9#L*+OdQDd+A^aGs!16u#j-*ZR(T&B)CE!))F zHH9@PuA8Ybpp1*WvTiv_ONME)s=e=O8(F{F8|LV* z6LTrreys`Y-uLmZT$E&U3vUvHrs^tzeeYc>_amn61P(!CKJBTNs5FX4w!{%>x`mev zO|0ex**YW%VoMG0c6DIZudGO`f*bid{0cUFa&g`7Cyt9MszRmC30v>H_L^1r2d+7F z3eQbj#J}$IxAS%5b8+>z_YA~YB^$r&&r=3!k&LD~jl?87WN0)m75d8ur47zJG8(eN zRV36!VHOylY9AF3FK<#P%6Yzq_>5nUb&@SeN)PXzQWlz(s!CF2oyai^?tjr{NayhA zD)Mu_y!fp+ib5}I29hTBQECYF2vaMf%~?iVUTlI>?$Q<5mi5LpAJAUiyzz?b7{{gygSIL9`*o31=C~&KH*w3`hT{{VnYc-cCHY;;B_}u zY@gzs+%khjuy9W+IMk7wgFgwmF)dr{DRSGhSA*(Ta9kEY6nP?lG7VK}mD0GBtlCzq zp4>b(;21c`W?7~A!j^kmml^7;a;=q#-x$?Sl=R#tHV*GQrU4XhxXomeXZ~A-NAy;5 zm5wsbl5eAJUCv#nqiF^gP#lL2#XG!YbD){1^V~?_Pq?SB0PO9xxvs2Pl0)v?Ir$xw z$s}q=av*(!rF^JXY0B54Nxc0*)}a~v80B0&M?WPcH(#Pe6hYEz_=<;To^pK}}nd@J#JwG+C7Q^4Fix*bf743=_PH>$%S++YFevr^fe$haIdH%D) zjQE9+tG5tRFI7W1()MuW_l;l7zR?m2-kC8|xUlwEMD?fF$}&r68ogBAl~7Vet^|tN zN}bpf`TN2pMX5i0w9V3?;`5p45YVgo!2M2Lv^Ig*V{m3(zN(};DSkfGPN??_9`Z4+?QL>1 z`FV$A_T6xYz08X$6?Wv#bPb+v`xQG0>XrL!GUHSM>J9&TbJ-3%Wy`9CA3BIqhN5yB zOO(zHAJZEBFY&nIce&+aQbxO9>M8c=Q~A7O>q)vKY)*HSAF1=m>@*H#(G_k#GceVt zj%FrFV{xQ^Zz`|h+$aZRQDrLj7ZTeYjgqLez!&)=O*&fd{Hafegeh~*ej6d6N`rKM z(yLzKN2jLZujQG*9^%B>Zi%tPZb^6r-v1Vv`c-m=&v3y~-NHS<84i#Aul-27QJCfdnuOyWXG^0AK$B=#}Zn-M_->%y`+$j|QMKHYXSv$0d?&pW%wJ4IsMD|Ru zR^W}2Les3?j-^wP2c?w1T_`X8dNkhla+H>K6yyOIqNP$v?!01vbT{y5kXz%xo z;+yb0Watr9`>ztq4;&?*Y)rc-Xcy3t#hyvA3#8l?Bx{}kxEdC_ZHpp>lA*(`?09K@ zXB7#vi+Cc*z-dXVEb+4%+J8FopDILY|Aj~qzvG=@pS)ZY$3M6%)sDs^|5Uz4qE3H6 zDp4D{;KD;_jSYno5%%+aNf$p%pC89_bg~?38}S_K^msuMZ8YTqJHK(EXM$5y-Vim1 zM+KKG>15J9>|=f{qqoY^G0-Tv6O@^&xO7UZl>|ju@rdhle~g1Gti@17`oTFN$e?;Y zLE5%F#9_>m7aQt7O-871cJmhrPJ;0lDF&!GQWejC@&n2k>}yuj$CE5e(f-?`f{wX> z#LJr&^|&v18r-=07in6o`oUyyMgwFt1^86O?oYJonvZIVQ$ICRblc_EJNSifRg&dH zx0WYyYAk@VcrdE6rMsvJ;%=zNWyHlnez$j|o}FH5NAV$zqSi~|q;-*?V#bOyaJp`R zI=n@}X-}GrPqn~Ol)dFa+b&?r88UWAWX18ZK-^o{c2;)C%Y|DF>25g`WE%pn>{3VzbL%;!V6oT zF4$|9>2-SbUFS!)(GqPB+}0;YLR~pQ4u|t?owFc8>!(SNx*voz?k6PJk$~}~CbEr>M zW2p=D$Y8s z8q|4>?BVcQkV(XZewLBkC_Pm>DTV-NZ|5R*5krix|1T2zfi%Lv=a=Gp40hh}?@n~w z5GsdThr+2IEDEAkxTaW_g!=y&nZUDn(nRz(we2TqbtXw30-%Gi#&Lq;g#zR(=bZl9 zRpq3%I>d30wKMoGI)@teJtzEo_~+a&sfxV--}r^sd6q>&*fwrYc9Y9hn2o^cRIdM- z_ZRwD^aEM1Q72EveG&@iXuq6o=6IKgHA#@#YCaGJu?R?4CxLgd8ku6jCijrP^4tFS z`X~Ig7w0Sws;l&hoTge;NWovE+*JmLv!1>Sj;FLcF^g=a=P;f){OdUH*SnSb;fG8=BDiQx_pf*n-(_wz1+=NIf-DHBB%tPIDF zu||tq$ATPM^#vMKDD|J49PY3dEXY;aR%fDd`!3R>MZ31IjRz7@;%CI<=VjbZO$#bm<=ze^~RVTs%`; zvWQ5G@}W7HeTPfDIy>H=Q3t>a%4YNf#`W(g+@ZRFs8 zHm(UopmoPMu+YfV6Hqs-MYouEnW%LLVW9(RGv8GtwyzMW73r5hvP~yMDM8v5efEEs zXHceO^gl^m7{_lZqW8x%`a7buSDwza&C7iQ%~l_tu`HrRp;C;c_Q?d?z#Y>z znaGJ5S|@3`ibr(Z3-W!FQMY=HscZZU9!kLw(2TE{JQSlgB!7>eIQG_UFlzs26xmbU z*L+JmlS3btmtm9UYekc3tY zA-Dl#rmLu;#L`3VMcT5L`U6>d}WU(^yN+ru`~*-6=3 zuyONf9F0`Ffz)ADPU)^=$Op`iTsx=>+{wdA{_m;UX~(Z>^l0fdzAH2}aA8Rrz?yDK zv|I3sDnP~at|$3oWNn zp|5q|yXY8jZG!lW^GY0aV!nx}j=M>XKJp1MNlQWd>Ups!d+%NTLQX{+ObjEO;G1|+ z&Cj^PTEWWRsotxLS_Hg28Z^SDH85@GN;^Jg(O0{`fIaKbGHst&^3NI~gLMIDWecvz z1#saW&omG+0{agsJzoWPdF-a1?3*#tqmdrzyzRQ8zi~KiR8R)VgrcK7yYXq%|AQ&Y zUM=w1lD8{APc^30##NCtg+;~r!s{WLtsc1A=WE=~;bBY#R zD?REEch;eYF0Z@G&I|-XChy#)bLe~Pbu3RR2}=7)5|e! zfhoU3uF^c)st+C&=lGxv{crM?Vu7X+ND0e>!UgsGI-%Pg-y>SxJk6ZJA3R=FjgnvI zUrl5qZC79b0CF$*vDGg2!PDy%LH-O6jQsV|SlJo!RZ4jLjK#xCFUJNy(Aejk2Wus& zcBxB2iO1x+$RyLIKEr#A@>2)e1m${`czhe*)8{mU-0t@Wb~X?5*AeM#O8A!9)wzf&}x< zoIE&#jh+l!>clhuBca)^7E@o%E>v&NdjcZ0h4wnIcqu6V=1kT?vt`7XBSYXstA)0} zQG0IKspxKScIsW%@h7k;Z|eO$&ZSN9kYI))yW}_(cv+!zGW@e1hnqDqCMnT8hiJ24aF3vYg%M0@&&)MG*thzLoRNlMOhC zDNeO>36XArvp&H{yp79=<@}h3aCk1HB!-`3pa3&{^e>W1hZ5`Yhv5Eqhi?^%C41fX zwtPy?6)Y#p-~bn;^kEv!{ZSsD6aN?-{V3L~>sQy&vCPJR!i?V1o*Y;90)|Or1y`l7QtIAKi{U&^5^xoqkRqiz4js>!w^IFW$V0h71DZCc= zuFaAzE7}bk(%u7E#4%%pLfuypfC%96aSOc{UE#!i4G>UP0nc{xDMiL(PBU+Fjqa>?(kqw=?c&)s(7UG)#DV7-x_GtQFMl>Ps^n_Dge_ zRww$L@)KW*=O+Z#&lethgY4(u2>bZ>BxKh#X^$=3O{P=})HL&L`Oa~)l9jG)9`*(u zYXq9`1!nVV*S{6=v+cnPs-}q@huAI>OBp>cXv)_TmYm0BsJd0s3Il_LoJI(Sc`dn6Kv>Z2%d;@zlc(o?L^{V`2 zc*EHL4esms{trKuxSgtXN#R|ISh?M%1czu_imp@w+E}!;BoM`Uiui{2nZ>pNvtMdP zD|9S@4J2%Q(5KwYoR`r&$Q^iZC>PG|Bd7J_l05ri8jR@AYD=sr>P)J8WWxp7j$*4> zGG?yA1yuQ&2Nv#eR4T6px>*zxN&LGn#^veeEEY@pP(N*?W9cXdl02e^})adWZO}ND}F@ zHXenT(yKf{Q+x)-;Zhy^j@FSGEG2}5#u#(|LKizfAyNj9B zRB?!)p);u7YMzc>ac+sXiVMTd8e_X@<99$l?7K+l0#}KsA(yDsD}~6ylFf}%e7RXF z&dDUx@HlZh>Bu=5TpS{*DK)nU^q#@d>nfoH2k7q#_s`pSNZVB%EpT9y;VpBTVYfjc zZx=OKO|d0|__Rc;=cV+^oH>251mvB9*fj(%f#t~}N*yUXTrWnW7o>*Wlr>kGx?*kL zWj07+VlYqxG0@q{#Z~3N&yZrEbFeAyX0U$MvEw53qqmHkWR!DWNv7P6Rl^($X(uZh z=NS?xi3FIS8f?;lD;1+{SZr8>QKDa)fiZViBt`fUOy3o%{?yaFj-IQH>V=8n@P=~- z|HGI|6H#CWGPXsoT_-n4{ot#88ym@2$tq6X_yMdlHa75e>uk0~8*CpPhr7;y^SP?| zr)k>m6Rs;wnlP}lxc*h@z6?~Q-o+=NGDxQTCJ(aT#{5z`bRA3@JOKkuS$Zf()2W>F zJ_U-{DKJp+(Y*wI!0tFpZzeqziG@>|_0w%luz5Cza;zIGu7)q!4kt}i&&u+$LYrz; zl^_nsIqNA1Q!ZR&a;}k-EiU4iV9;5z$wm-;R-@tP0q}wG%Jp^Vz3HNM0&Y}CWpdc0 zd#VD;aS0r_P43Ja7*1RPPqv}bjjl1Ddm0)VC6RF{-a--O&U;R$t$Zff70K z{|+jFCzwY4C>*GkCLT3VBvwNLoXX^05|i%+ihceJr`CQV#F244rD&$44G4E1Ny7e+ z1YsYM>D=RlHPWP%2!IQ946>BZH})oX@lpH;_b>|N4rhV*HOsHHE&=m2d>1UbL_Fc&lhe6jQS>>~m7N8L?SW>(mcP1h z{Bc_>ILdgmErK19T8bjaK1dPs70a$f?AgAPG@U6r3~Od=Oidu8Xa@*=N;0#u zMIWJsv)7MYltiZR=(lq?e%`-unCQMnI&Q`tW=dX!QL&eq!`bV{HI*v(i@ds3(c7WdeV~JQKr-XYxX7#gQg@^3n)6!Ck#1Pw> zi1RlOg=VCbjvn|B$Ee%w8;*dX^ouk!19!f!V!lV@UUA)%UvwzW`RP;T;Z|J7Zd~rY)5}#5lX5tPCP}H6Mhg>o9T}TI0f8E9rY%|0_HT?fh+o#f{P@UPxjG+v&CLWmPnX5&dPhxjJgW`u`D+y*de|u49{=_lo z2~07tyTsz?opHkMTHm0x{Jf{wT0udvO3GS^D?uod(DTQr^esh#ue#^^Y+A!cWwRcB zL!F~xT)Jko-BWhEQnV&3ja1qzF|rB#gR;Vlr4)bkjS=!(BQcH`pgPD6z_!{>^1hGmVhLh4XO;()?3-I}oi4T>v zNiz3L--uOc5+AITpBG5c5m&`bB%OBY`pf*b&~cC4GrZDjO0=hOWNnFoh{IbA!m_?N zzl8BKZ?rO%muJLJbiE?C=~KhHG1FR4h&NqzGo@)XXbDIPv(#zVsgmWu+)y}thh;a} z>AUvwg~?`(%=B{R9tdNY-Q8~BaCZ#7hej@Jv0LUXs_Tj%4@_&3?OVm6uStbQ=4)~9 z*eL&(IJS#>2q*qC3vc`1S%kyBbXs`O&%`*z*ED8NJ~_~3MXNgAQZk&s{qk1!+Z?;jQP{+3zXCvqGT zc%+6f*+rb)B(&Z$YB{UUvD1;axny45@RGDOtQ&WF)u{EuARDV@Y;aR3W!*I;ElWAT zl;D6kKB2_Vryx(M4>VK#lZeX@5v$q;^4LWlsurvmU1{+FDOtIOo3$Kao1?Be{Xie$ zBlQTaI`~4ZWLd>7+g+mBdg3X={v*zJALQr%Xs6Yb+-pqsKHQ2O;!|Dr?_YV-30f@S zR4lKnT7*w2HZ(`~??_Mieg5Ca+lDtR-E$MKbJiU{Pa8|k}v&kaXjfGuH23rk$ zpW$p%@-QV+!*a#CGQ0BUGRb^;vn4x5i@RS3*n`SL3=`9V|82%1YfeH0%lBdf(~ZZB zK_PZCm)g?1&^u^}*xv5MOoe=wqit%LUKFE|I??$!z4OiTe3G>r`)=$i4yssFde^#| z8ccK&6S}-pPoiSpnK>~(zoQL|^bkCD?H1S9bMEC1zq`<(##?8REsWz|LU#xkJ;`yvd!E-A-U&{( z`rWGW1sV{=0G0%9S6;}EX0VvWc4{4~W0@U!74aWHOe*met*s1S3>Z=0%NoH`j!CQq z5s9yP4g--xeSFJaLMQ3zl$RzM*6F7+n92@Dhfz#H$HeYp=L7|~SH)s`;HLal2G70{ z#&=%MRxgQuPz~_YHkV7nDyLVgzac$x5^j@nlm)h+FM-|%dgt8s# z8{58{C6OgDPNIGuT(1i?)qkFD(ERj{mUQ9*chirxVD*?(8eD6CTHKJ^kc}nh;MUnc znH){uD5b+#ZV1Guv%9q-bEj}Qf3NmOh8x5%t6Hh$ON~P4su@&vId26jBozHgi}+N` zCePaE_}rD@w7;)6Q+NuY+KwZR$g`MS<396R(V4xzzCs4`hcQ;i1;6Fq6Qj5SDVH&z ze~(GOX?(p2P9l##OQTMjRf8%+fcMM!JDgP5(M*Oj;8cN$XRY%4Rb3(_BwhWzEWxF0 z%UJOM!ODk8UjQZghn(IyiNjCYidU{|JgTnbVjGW~auq<}_y{Jg(XxX44cZCXRz<0t zm)&FwU9WL#@rGo!OqO(oM@jj-PuNgOU0wgZ2pnv;k_j9UAAjQf%F_H`(WSaKK3A*C zANeyG4xn@92VxG~YHfdAzuaOeqX_N@ksvl`$X@U({tn=`o<5iBXD-GQ$iBv)a{M9c zh$i`r2a0Rmh;g50@}DVO$$#EFR}%1v(zo$By|$8(U)9kBX=D169J{VrlAC1WB7`Rr zf{@O@da-$H#cCc>d5+NtPm0(RIwZZ~yQmdJQ<#dK$<#di`=!|Wc{~}Gv7J6)A zO;v4*^*|p(xp_YKk#PUi9{KKEsQ)v+*wsctb$r+7vs{8$54m6sT5t~=r5>&qlA4py z@?cf<*Kgvp6cf&nkY4P0q4Uze=cCD(0}0hmNv#G&QP^$M>Cs!%er^ z-VX10(PVQEX%@rYbX7qzBd$gYCb7Ge`x~C6`!4ph5bk%jzN$j4oXSf-jvt1HLF-H=YPFE`fVMaBgAHuA{m(McP!oi-J zZ%R_1D2}MI!Yxr+6_^T?3iQf01fXTpg9F z8Dblj7f?xxEaGQKDa`PkNXa-)o6x9LA2rF{!pLg*m7Y@U;iifGTLD;RC#3p;!zCTk zVm!rF@jr{^aFZ)F8~U9v`{z3#?D*XF^ejJ2io{{UdY7mQlglp#&kR`xDf;D4 znYr3M4F(gU@LU|-o$xzyZJ$FopK(}d&8MVS@-C4%`R^i_1lZk{e_uQ?63YNYxcqRy z&HjJ&83D-!lI_Y%6V_kZbu3L(x8Z_3ABMkba+<5KB~UD^u|!Q;=Xh0fD8)8>##bAM zyQ7KY)YQb)gi}!Jv7QVu-9?x1k8cV;`KhGUSrmR$vey*TJ(h^hL%YFbPb-^=GO5AY z#d+pDE+~17UwsHYceCevjV<%mb8r1DTjQoYg#AW7%hLrkS$p^uMkYBcwifQ+_k(J+ zvAt&T+cmzr_slfQV+1G1Vl`*@kAt!JzP^+m~(N%37GCM@jE2XQzS2_|2P-!~ z0%kyi#+Uhrt|?qoO+&3o4i!`fi-Mhkv^6<^=4>ql!Q&k9Em1w|{ErIq<&RR=r$8uM zX5*SJthoU|EG8-B!l{}_qOUkpYEh-S6nw_q1)yW%zWE%foSO3uX}4$-TJNHQu0pKf z^gPkHzki4J2inC})_ByK!3*7KQ=6k^PZDpn2;{E&Dspxk845x^FT4F(h)-2mQoxNt zkbb{aPZ}Rq9bht0Of7N^5pbDq6o{#EU#Ce8dgpME;2f=3nYKEKzJrU(aCgCG#&>ht z89wyBM9gJPyh;UF)(Rsc)3F$1!98$*J&tahwk(sJ32)?FyAb*`i(TKUJA5iqHn2E5 z{N(UPil+MU`v7d0MMd_AZVr8<>TUwO*=oKMAqNX}I?~ak@siB>jMoa#U=k;cdx_Kg zvkO*h55kVUQt|H_(^6TyuMzK#@{O2&&vs5o-wNQ4tp?X)S}0 z%CsuCEcNC*nvACS5?fuBB1sTMUZg8c%?qqJRa@KDxH_7Xz_3czA_wL2d+6r!rm~N$8GP10x`Tqjv zr25dQRkWE5!iRMlw8%kR#JId&rqo9oY^k_YujjEo0rs6SjYh8k9)MmLHkW67bNoLG zmH*2Q{hv>bVMxzOC5HoK;JI@W$>UXWEj#;5k%X9jY)hxy8+;fFYROK;ofT^F18O_T zJ*t)p%6n4)>w+VQS+6m+4)-PwG-E<}bG z)HKiCN4q0uZMj=gK?UEq335y0p>JT>9CD>+o9R<}2y`v{r)TKM=iBKdO9zyxrX>Uj>`sR!Z%(h0XR%A)MG0KKE{r3#_x-J z=W}@;a9#HasA@S`?I^>y8QzP0f1_gXEC7%btSi~Jsp(B-U9#9Og;!Y26iqRlOB|;k zGx+l?M>iU+C2$s;v>xxA?Npn?|04No_|e5dHimPd$xU$_w=DX*{27Z9_h;WV=LH=w zXaDfIsbKE?n25naD3c}`47D0aD2uC?K%63{Trx3VMtYG=RlPnt%ZkFSNuS4cjLW+s zgT;DPJ1wpEZY3t{DiikcFH)i}gto*} z^NYh=-ax{U`Vmj-k82g&)+}QQs$<~xSA2b}YLbp!A>9ZY8Zj{ryxPNOngqP{e08G zChVMM#OuUax>n;3If~CHxj*TM%Eg@X(TR)Af?H81M~ZDP`3@k$A^BE=bB9;;GK|F5 zk^J8T_67@VH7(|qSMg2FoHQwV^ww$VMwhis(H0%6{HeIx@{>(hQ=H~XWhb4t}X(f+ntnm4!l z{IJF)rhtCvz5IvhfmfEa$1;Hw9t8=bK@j$xx!&2+wcT!<+)Ky$3odC|UsC!@Di-<{PV#>Tn7lylTU-sj z+4{Bi%lI!+8uH#fwV|{O`KOf}f1K14sysp_SH*X7+8ha?uUnwO(5;eva*w@{InaUV zRUv=Utl9MNTY0#Q`#m+yhqIv{d;DR#rL7%g3+EU7+D!>p{!SYFI0MuuD|G7l7UNo7 zW5Qm=`5H;vo=828S|bcRuC=; z=r2+^D570O;AL*(y0O(?q_7w~g0~sm&wqjA-r@}!ry<)qOLUfvI z)$&S@bJEQTUZHw}NLax-d4*2a>5Ma%cPV=lL;co_m7JuhGx8BNO)1bU7IylHg626XMXK_)uG5V~Xd3ek=oF=Jo3I$UFo(<;YPStDNCL z-UmXa@sg3p3P;5XD!eM3Smge`+tKz3(~(1eBb2i`V4*B%xykI+Re&}hk)<%#^+!Cc zFg0kIoPrcw+nq8PB*%f{647i{f|Tm#GNGuG5o06(klvx@@FQ z@95+8ElJl&)=DSUrWL1&4Pc!yQPaQJr&9VQmgtidldlCz^W}jTC$fwTSS1Syg&Z3D z;`24UBuN7wZfsUJ;7E+SV56fbu-6~r`I>3$n{@|H6=;{g%I_p#at+)V^D6JW1kQJ+ z5#et}aiCAP%b$mJ#}S5Lyyb|xo#MEUW<+himJCUkMzag}a?jk%Q`IZ51{P2atZ|H{ z2=vifW_b)%cN(gx@4!EV&VMvGQ7NER$6~|OsX*l3onB|xQ{x=LI*#}FPCkf^u{eoXq}f$u;4kXTkxJrHf{ zG}nv>-F9N7w(t;oS>qN5{VYd@J|UTwi*rE*i@AgsBkU{f++~ALPx?x93w6Nai95Ry zQfXSVUZEnj(`L$hdpfQ%RI9-qlaM2sLZ1WUs?3WJq?gqfOsH;X4}B#hSAv~GaLJhg za|I2Jk2QwBQtdwTu->Y*7%V$k{=O$Tte%&~sP=<_BBlP6uq-P&{mJ-~!MD+rILQ4; zJ6Txs424aW5vlKvZf-zJVBf>W6V|_$HoChk{b+Bj`QTZe{two&O zuMN)-ceB4a$mYmPc*uVtxj}76KVn^%D-E?|00fxcaJ;*Cqq!{z{RYS>hq*-atdcP2R}XtTc}5G zj_A)5uJ@fP$Jv=p$_PbtZ`zDsdQ+C!Qj2V+?P?r4+Qe{wl0oV5jdI z!OT%$8}m*W#KAtqx7F_o>>`|^Y|zR+eQ_sO*WQfh@dMbhFLUSZm*+~NZcZ$%JWh2m z(AU0}{nXdnDSA;VA5hg(HxH6}{o6lsUs}DUCy9V~4>lzYp?V*#fKk-YyO+C4SK?6TT<_hhc6yAQ2e0iDa99TnhU=lLv>SNr)tlR1^rXYlFFF@ zMU$9R_pEw<(s8!2>&w514)UaJ&{KV!1W?>{yV9GMh0lg%_zheg3#TQCV=v$K z6yOv375@J;`18?W%*^h-MRbCrj1FGKKYTBc*FRfuSzcAb*!oeIY=3~ZHKkhu`hgLW zYMrI5Y?r1U%E%%aDoHFy@Xa-z9Uh+pTsENxQH4Pfy`}v&e35;tA`&F2Sl+JA#wM~s zBiLCgb*<8mJ6?JFvx28I8GqMqU^9G#u*b@38Q2cUrUj?k%7PKD`7xc*W~o~T@tP8S zjTG@>OVx6v4%>{(t4vf}NRSYDnbU!E&?Z>jBMV;J#;z6kqT=F{Zp}z|NzbP`=0D#J z+zSo4S~lYhzDYP)joCYLTfM8}V{Mc>y=FQHK9cC3?V2(evuWQ-Hr0<9(wH{ngivI@Bwphu2lI3Ek;@3LIl@F|cX(d5=WlmC; zSWa&ej;^`)b#GoPwJ{pAZbFKIFDDa?037rOrD;-p;4|=FTsPThS*h8-szLak8}zY^ z%Mf)Wxp~s51b2JzM*PmSX-)QK(0erbjFYcYK{OVahlum*tp=vThU|7m z+MV%|@%GzF(W9gjp*@335JTrm z+5zRSwWNH0cX=Ouk0@)r4B|Dc`ifipeD@;Z=owsNHY+)0!3u%sWBPnirDXZ-QFah1 z74uZrx5QxEIdbcdF8)|kwX=(MQkjoUsk6(mE6UajpaG%B`Ft*|z*F?jaUJ|Oats5{ z(@Z3!H1r`b9RjnR8#7LvN_p1sq>_ClyUvCWd{$ZLR#>@n(xLdG2GF>mbw+C;y{TNF z@C4bi1oQu6$o(&G4i`0a;KnSI4i^vg~1GaFaY9l@Sh8(LSj-t{W zoL#)sjdUEh#xI`yLiw4yq>^{;Us;^mdd?o<8LXRJ;O|rHYC9V>IHna?GGZ+rp(y`L5HrC|&qze~oi4M!v`eu~W`eT8X7@hGj&_g^ABZ2JrN z4Qs#DMr76`7kxRtdq0(A8sG7?I$)HW0u4>-8WRr<+1rIQ+lBa9n5eT@8@|g);Xzww zHDBB=R?c%ZoM#ZHjSco=Vx);#g6kJ3x`hRFY^Mpm`?_&+R2L&Vo<6J*!{x4R|Mtfb zN3UxvjujOwyFSUa>*B_A8t7jZcNxa)#_t0r-TBKwwyo4CW1YFHL1&V~U`0}!=Rnh} zoMd5T7kvePvr>qr;bl>7L;xp2oVf{BM;-H7VG4bMb_`|sz~r176RqkQ4ioo_;GP)$ z1G7T_R%brPk*v8GLix4JS@MUK@zM*aYPdV0%-#AVba452;xE#bns;lTG#C08E2?b> zJ>A~i$AsUzs~u5^2>OD-UjM2D?1gXfu^vTqa-?S;y%=*tHj`+^A;vB?6HfUX>Bkhu z`l}GnWP;7g_v;Q$0MzGT+v4b#C!<_d)PSooUYz(h7Qy>N-JWcB&|G!o^JYV{5U8i0 zU6Y5oH6?5&T$iWyje>Hyr{3}LRqn|#Mh6NR&#Xx6;b$PuDSI!YHpVubJ|ib&EBRsxA_*KNe2 z;W#xY8>$hG-(m*(RxZ_CYx}>kENXnDhS;~J304tx4AEf?iu_;=cONFUxkfoH?lO|9 z%`6*4h`ZZ~nauN85P~O+kzPmy&wRr)1Cc+-*;uD1S-{SDSzKcbCPjeLk1RxuL6R?d zNV-HHf4a|(ZF#(&A+J&vi8nV<#wfL1Z?wI+3t$K~mKScIO=jL5U*Zu~A||8;Mhy7_Ls{^KHJAtSdP?Xa7}N!%{g(;^=jy zpFhRfp1vFE;$~|e3FV;GZZIEMTs)#ZAhs9mtd-nNUc0I4VvZQRnp+lU@&OouWRmlc zgS8A&18a4Ln%~*+22)!Yai_+5$=FA`i@+$kE|2@b{G-HW@syE}p4P~6>J zg1c*>UwXgqc+Ppw_bZJ2U}x;T*IaX5^O9%1#Ss_R5V;~+TH`t(`wqux@irE3t?JAQ zqoi_U-kjCx1iA`WS1+ew<9^1_hSG)UNzi14f4Bd2U=I7>HDyNIPxNQG6u83HrMvOjRx z)wg!wOUf2^z=4lq!Q%;_aF+zhuWG2_NSF|I;W-3C8qn+XoUGn zvE|ckEfz2^WX`8(L%P!ddBfh=YmQ?DwRfQ9>ypvn)yFZeA<5uxdvtCuALDNP&dRD&ViAkK3|nzK)I zY%|bZpPQ&r>9o{6edMzv*R?vNK!#ZAypDxcma5KJ&nxCh*beWo>ofUc@#m|kf{p*3g{1-0$ zzxFC}oAXZMWoYabb_{YbE36Bz&uFGBq+*nDu&XBsNEj0x_mn`AJvZ&?qljiyab{Vr znKnHr)iXd$`(jS%%2IjuaM)2(Jq>QbxXAxpdF#ieMI>~w=A*F|CMQBqbyH!CQXt=F zQJ^pvN%BUib($d2&Y?rN%$CH3cBHw_t_$4I=YfkN7A0jWXFg5N&c(h6_q(kAY(l8u zmUuPEv_`+%1{^gkpUp^_V{f&a2;h>~1+UlqOJM)}ui@Xn2qF9-5y3fy>mI~!v<8Dn z*HbKGM(JEq{yh&Z^#qjn({*`G)FE}AhTfix$Xu&H`-)?dzl-ulcF%$Yy7;*rGy{(3 zuq2?WbtGDUuL!f{oRKKfuHr7z16o%HUx_NtI@%JMo%Hp)in+u2g{> zY4aNhg=(P{KM>5*Kgtku^Q^Ek%SZ#EXl)XHjghNtb1z2RQds(|P83~wJwbB)Itz7x zHcrMa_=q;CN{KGH>tAg%;v#+o$PB{OH)4MK6-6^vvlEUu`+Mefg%|*YvD&V@c8|#H9cks zyJeHF0 z>)d!LNvu729neoo9lM(*7L!CN(4%UD*N|P3_)%VVX>lumwSlsuUMIe#K-d*03zMVs zR2CB;F|rl}qV2?ei`^1NM7uK*uBSyHr*OoB3RAfWkr~npYRnJv=c;vwT>d2}5F27$ zkh@fUsQAn$4Gb_GAti0VjByE)xT=6gq;h}NKra{+N?7Etk?5+x$YpSBSSDT89}TxV zEokqP@&5P+jyATRmZo?pKu;sGgtxQOzc0_fb;)76%y5AwJMZn=fAHR3Y$>F29;YG9^ENAB752tJY30`dh@qHxc(1&9>?!x>ApDS5SE}OpI(uR>Kpj-Wkj6mea|9-78>;xqW)DQQRx>C6BzGIo{z z(}npil9L)2E@YXf@q=7HpM=#T*Oc7pC`(588oq8ypTS$ z7;kw5-)2S4p^iw(5{B9u0{Z73u$20!CiwBnH;e-2e~j1{6}3x|u!_mXyVn?+d-2iY z!{C`vL+8ui!|{FOqbhEP#cycL2wu}CP6m(B_V!CNH5lZU2y82IOQs7;(VO5m6)UVW z?ord0@x5M1D5`;0vkutk1bnOApV zqc|4oImm#LU!}wCCH zhJbV6w}borfTIH&dxQ<_{*Y$mKuDLO&F{G!d30C+X&XD5T-Hu%3YDVXkIQY1z!+{> zmgaVYA_}$WmCkVQPl8RovN~1^&DV^#GCkuwq`6(<`rR=|hMV2j99qwgwgrYXRuT+$ zm3kFwg7NqG0~MXuzkTf7EqD4&Jru8*^3}RzJwheg&|g8T{Y!A!=Hsn@#H=~T*}qsAz(^Vq`^wj25Zo8tK9 zxb_NhkvRGLjZl%_a44#gnulYpyc_VCDrVMjaJ+=O#X6i^ZzWPvidHsHcbPH}5kta7 z>67ByO!Zi8gUPi6P~sI#5lraPK3OM^oRwj?DM7&Z$n=gKVQ7k*Yb3F09 z?b6+&!%)z*jH`ZA-b$Ocj6Qqkm-4ZJp?eZS%3qwW1S^>DzP}?zh=w1oYfu>|l5+P! z4N7fRU2P==&>)T5!d2PLa2*RHRHEj19Q>#nh7g%mpWw66Y($J?t7{>CpXU7OIga>H zc9zB&p1tGXDGLh|2wG4&`~nAu4rlwOi1$YhYyV32OU}HzuwcDQj3GfreN+gL{=xQf z9x^dprUdhc((ECJur$1Uw7S=Cd$dFDiv7zLnp!}Rshk-?qJ03#OF4*7uaFyVKx(~b zQEubW7z>flDS`$DKWUf0p38m4e2A!hhka%f!x8d%&ra*LjnG*mRop6p{GtH)xKEG5 zVPzLAzdD;Kc#}Fa2|ohza9_7|VM3NC-%iWQ26-1AzAOaG>aLC@Lr|7k@5b2P^;Q7H z@RxvYN?Fwy#B9c1U+r$NA6rs@d!BPQPK~89+WWCtQ}Zbj=f5ak6T2?mjJiME>X2PQ zKOHz0kdl(ed@l15PI1opw%;9X=TEl5Py;cnhiFOcDCYV<&g-vgm=0U<=IeS9?zUUt zN1JfGOXM<6DTH8;*5|j##oo$wv_?sq$+%ElQlBlkpM`1HP0z7fr_KS6j^Wq0nxT) z%|q}ohh>DV?`A~hd$RRXcoU2D>%0%DN)mmdGQvGWH&~8mKr@m+Bof*k@V?b${hkrpXzGLhw(~3gFF)WVd+>MDi@DBeQS&@V;n>VC-S>|>~l0YeC8AR zZP+O;I1i-VT-0=D<*#k#vx;eJs(aCbDh)?^EmdAq_6-|&X_GU{rD%LBk^R~7L>a!T zRlYvil9k+dPsg0gm4qeUPDBFHFW9Z?@vWw+s*W>VLlAqH?BI;b*g5g@H^qTdoiqF- z%`Ot#A7^2$s1*4ATaK1Au2|JHEe7lUlOyW|26`L+(ZDz)!NqGWJD$Ou^>S8t1YB)$ zV)+a>dY{wC<^X9UG};JLnWJzdD;Y<}T%KTYV#%{^u97~2m2d2J)x6xJf2hP;{HOIrk75swDOwd*RQ@VRc$h&z<=4p~QBdwq82QWl zsQ-IuVs*1Vck~%B++E`Oc_;*-i!GbWgP>jVB;sKigrKH0tU1uT394FRrqQM92B<}h z8lKfn%k#dcrCd1@+S#4G%`N%Qwf?u`#{1`EG8TB|XQ{c?&QN7XEQdu-N z8BsnqLlr0urceIO%~de0+xCsXq^lB zUBx%Vrj)^ae7F|V0#lrvdqYN@y(4UnKQL04e!KtWR&j&3nR{JYIxkwG-qnEr0JUnD zY>(C_5N(%|cA=O0Id9vzOAVkQdO)Ns%qnZDB9_>%Dnkj5_YtdEyyMAFYZghscV7sW zDqfCz+<`li*nFoDIg>doRl4gb3>5g(ppFs!n}EfLN6kb#|0ul;RQco^(k&fgs!nd3 zVQ3NsRM1XiL%w;{Z5HlpBi12+NUDdQDRm@X>8;$nt#3-WiwDh^%DICx=I=iF%v>hi zO6|sPKiKZd#e~ExX`XZ122dELg>hO%^(`%rzyM_`WzNN+SC?%Mlzr4 z(nnbC=^%v>Oy6QwnYmIS$H6Xjlnm&grqHA2+f>HU+VAFc-@pYcXOPw6XqJ77qehoS zgmZv?x0RscWmyY*Bm3;3ayYNDSXclwW&N4e#+kP6un`^W$1+~eY{+JvcEe!;#xsu^ zLb4kVWlO}Fw?!Yz)1EuA$(6LKGM5)e60b0znu!m*7jiz`Hu`gEX|qPq8`zjerXbyLf+eD=$Z z{chU484Vk8kjH06)?>*vr-m=FF<2Rf#9|GI8Zi6^e2Nz3r!X-$567LRjN-mcwf(9L~T~_t|PqnHSNh62({%0D(s>ICAdlf zf&On9#0(+x!GACEuMim4P+ok?Fjur@f0PqS^9>mMu^GFXJ7jht&jxUYDX68ir>mpN z7t;b8xIhDGjYlh{j@;-wP2#l32wB&_5Pp#bu}a14Uad;8-4v%s*l=y#I$+6pa#?G| zUd`(EQt9pSB)6&w4ajIDSjr1~W#&2D6U!lvSIrSeX6eS&MYKdc$4r#6%8 z*Kq=|)=PJO#NC7e3tuC{kY1L?i0l%h`}%ru<>fxtw{u`j_f+PdpS|*j?YJ!BngJ)% z$Hot14hi}fqcSq!_#*3n3e8@G8Q08{Hp8Gc@qm&ExKHl_jntigx_CIjplHI}MIazU134#o)fD5VHuTb4nd)37!p#H_C zh8Lj0f2WEKq%zE>@b>0TcpKO@l0c2-d{qEhmIEi+sU~~riH-ySk#`Mx6^QpLAk1&p z^f!Yh04cHozg;YRD82ilYnPwB529u@$_A)pwfN9?hS%s5-d_hAUhIy8k#`E>#b(Va zBBvBXLkp{Lsay0Z-kb0S;fyOUE4#?LT~t=YuTFasp){v6(~_|S(ojoiguugS_6hI} zfSp3C60Gt#-%U@mTQmdzx!(6gn&ztxgv=Ni--LFi%zDwi_Tr(ejy%a z5qZ5__aAg%8!t*Wyd%<}br}-H-#6A^cj|)HdubF3*fquN7&h?*yz&xj_cST>vLVwA zRu|j%m+d6S>xx)D?POfIf#A8UK{q1ATVaj5-4UrO&Hnw0JmSYdcNth@biEPwWsh%} zDSoldosC3oS4S?MGVTZ?$)-c{^DkA^Zp#(J^7}t|U+K8%==TxP&C@(kSI&ntoACX8@Pn=THS6dwepcABQ7_r3H zCOSHFMbVBDEP3pA7d$OKazYZjcO_IiU^%ktbW(2)$;Vged$EzbTk_?0HGPv`bR=(S z!8_Bf>_8^MN=LaHE}en9^Hc9tbyr6;D6I0&j1)f$_`Ia~Z0NzpmLh^?t$T%`<&5|Q zs!u%en*}Aj<8TU}w|aaxbKKCy@@5r2i^>wA_a`ehd{h$cFHNe0x!0m@|CApQ3c}#R z#E|cfdo{@| z>!b|n=~Vm!rxmaFZ!ICc^_pV0VsdD%{Ozhz>2ij7FUUKrN%%@9fP7@Jn~tTb59v^^1um|}q@NnGMsE*cgHq1YfZPKi5ILEI z5WCr-bGE5E^N*`a0UT}k@rDQ5`-kx5=jJ?zjol)=(6|?cvpW?KtHs%jkK%r4 z0~)sNy&LC~_K}U?^!(b_ktX}CFC7Pn(Z;?#s}heYp-!w9$Sx~%x`v`Bw8K^{V#pa{ zN4qrk3$KhwkMKG+>H-|fucD`h_se4yT>AO6u!3oU_y_KZv~fgx(mj@qRSEm-XG`o) z2^iqq-I4~=7Y{6g0ego4;>(@hl>~uONNh11*{7ED1Q$}CRb?&{sFI9zm3Z?e`>p>y zjq0Y3`_u>u~+HdMr;{*IwplNw)V>Wh}nWAQq} z;-h#;F<}COxg=l~=oaALdRM@GP%6LNl1Fm_(pG6b=ZTSLGLV95>s48Lcgg z<}b|KK4AJ~UDd)`;&p9zpM`OsWAs}VdZ|8&cvntM z(_^m9rAb690NuUXiAPG0>e0iFqn~)@>}%bey`?taM8*X{q z6NgKiWc2bGVWNn)PUkWjPSOh2tzxH`DhUi!=&aSfi4N}zs)khQd(*;CW+t3qrV~Dj z?fBOoODFv&PhGbY^_-Q1E}rg#XTs|OFvLvAZH@qR^x(Dd#AEApOx{ujSo6udTZwF2 z);8;{M8T7cv;S~Drf5OP+^XhkV*dF*2+V(Bu>bw-cmSMXR-p=?)K4?rg7{)c9Yn4K zbG!X^YPzaewa4e9YGA#Luu0Nfz6NtMq#?Jku>K{zf*iqao=_Gm5q{M|-Ha3f`yqee zxRVLV^+#oPi=8re9}Z&8(h-$4B@vA~mgr?A&U9=8V>gb7e_vNwrbXj0RKv8&*`?!+ z;^4%A3(4lH>a$P8I1|=kURoblB%^|cF6C{1`{pe^DC%}Tk-1CL4@;4xRy#+#H=9YE ztlh;y6&Wk?A@z$X5+9)@7wDD174l0GLgf0AI=K-)JMER@=vWhxvO2EZT^D27U-gXT z*`5xTEm6Xkvqy6Wp?HFxB|j>nZ-3arUGVcBSE@)h6%vQ+KJ2wLlGLeAbdK!aetAvA zUt1Y_MNh#*@q5E#a^Z@IeG-AbrJgaw+ zZdE&zTS|{8vkO1E?$ydv@{-7^*P@@VQbeG8y_nbT|GQ4OggE9ub$rSy+k6K)e|o;Wsg7369PQ;j0r% zd(J1-z@)77^EHx6b|wb_AGJoJ4o@UJNNsP0b7}gQ_1O!$CvggzJjrqq| zN;ybR)vUb_c3xE?vsn#JuDNNYPG9fl?0^}fFfoUvSMbuFYt<=U=Q@}M;UT}mJ29J4 zj5qX|Nc3vft29LLm7gTjU?jOVSb4!FbsgOr zh}Tgl_p=v`BxJYlB^?0R`}=(kW~|6;C?4sg#UWe?Y$mUXTOLp@aWCUFpSAJQ1q3!! zR4-;k`^=0Vg(Q!FM8)|5XsDLiHIqeP9Iy74G_q-PL$r-mCUKB zZlJE+zI9Qf1&|jIG`lPrs_3V5OiUh%u%R)5WR&l|n%?b79W^v{SF+Eoqm$MghZ(&7 zqlp0evOJ{db*nQf>JGwVU+Rdao_MLA108!Lzdy5Os#y_JY2(0A+RKQJv>*~mR?@DG z?@{AkKYhZLuZgdy_ee@6{;mkf?NkaGB<;05o>e}#II1ybuEUtTQa&S~nuR2J2?*&d zc4!7;4QTkP5&eq7M!h-G$}@7L>I+A$LOIVHydk*3J&p725K+tm~EEVwo|sW0wX5dj_o-|M`}MOh`L= zbLL%=S|{(&bfgz?ps(SobbY?txjvI0-z=GQD;ltS9Dv|MxtCkpih8 zURbdX&0Vrh0o`K;$4^rKY(%>M;c=`IMwgknv_36BCAD{NyqPhg;QuW@hqNgDgAniw zA{^cL>NR=Rx_e3@p0C>5hFrHOg$XAW{p7=66tq8VtH^#<4+&ZeO+}zyl-a8#p~ke7 z4MzftO_o3`htj3g0)ei>a{Y~Y3o@~3Cu2wHRpu78rLR%=rDIIhL^H|noTb+UBkD__ zb~hxddmpM*cqM7Y4_q^KocIkrd=Tf0eY>{gvt0l8NOcQzf}3!|`UR7B{o=GUvwAmx z^-t`5f-OH~N>@}H`3~Mf(V2&L)2dzt=LlHWh!)W=E&7HDy2i>OWIDy$p*pA~8>T22QAOR?)I`&#vsN?Ktl2xPfx9%T)o%Se2Mo5)(&7Og3Goh6`rEloZXYnVq=pFE2oQy{|sDmOG z$onN+{=j|HfeCNdDeGIjjiP|~hmT2IIHq;dqRIcnD2u`K(P(FB4u8pTsra01k!K(h z>zH-EBx+{EBoIhW;aQHZ*l=a_!TWQJfEbTO$#i3-lYKYQtSTafO?i;IASczjicV0; ziJEp;2b-}~eBmF|cr zjpnYrFp8{3e>FmSXpn@drKk}u3RIJ;nXPS_$KppuD9x3W(qR3cRkN@L>j{wrA@TYE zU+VWLkJRoC6$epz^~Tl40=IPkvl_dbV4CIwp7*6uf+v(UcNf1IDNOdYKW|-Lv0bEc zH!xDRx(SI@%}7VlNKJ_IlY@UfrWIp{?Y#!qb*73Ez?l%1)#l`2!CmFB2Ia-{Xeu!c z+p>?aq`~Na0GcoRyV{cRj(Q%1Yv%R=)5rd%Lo4Xvdfh>WgYi)nb>d}G5*EA}o>YqS zcG06p>x--{4`mEvNaxB1VSIpWa+59mz!{QKHj4#!*$ZLYYH8=-=SKAHj`#VQIKpML zn)$Ozm%Uk%em@n(zg&^WmV|ZJz`9EAmKhuNB5fg1pkE?D_)9eY1Ybna%rKjE>9m{~ zcDqA;pK>|DJ`1S>{eIfimTFmp=3z4C$%J6;U-SCvxuxg0Cjn5dFYy|;O+i<@?;HIn z7~XHVb$-TY&Qm&WMBF~5tDDnrRSIh(fk}BweM2sY6o)+i^6J^$2DHRw4rAg(uUOSe zL`}6OM5tz-GC~B5>H|V+MJFE}`!d5t*l5HJ4NJ9V^G9cK)K25$xmv<^OKX=HcM8RX zU|}HTPQB$#^YYC5zk(gYPLM7qpD`#3P1Od;Dk!0oS)ZKRr(BI&?83)KvHmMIP^gHqj@q>)4LTFmtP zFsP8cK?9>=i9GiBjLpT;a_dTc!NMTFQUjWj4jQUqXln5G=l0HzUJ{O5=`FKQ_#o-K z!*x{wl>2-W#-;jj7UeXI#IIU=Q&qFHo-khy(Q4q!Ev;S-)#P~{mu1G{znCDzuiMV1 zzv8yCT2`T+p{MyLU3MO)J=?U@#Z5B=t$+Abq=jN?-W|b!cj_(+kmhg!KRGcozrJ?IRcP`el)El0mk1rN}IAE$%cu6qZ66jBH3iIX1=XZQ!FhLa*oc>oVF@qZd|;!4q& zW5$jdNhQmlpd3!h6feOY_}wu0j5nNiImo2EDglodIlQ?1pG=VB);)YDcGVRumxSc< zxXdN9IU_NZ)>a}3O-ARP`S*@OJNh-9N3MTs*5CcOb^Dd3=Ml%i+6o4=e{**TpCPN^ ziHpmZlcdlvS{)P%m+YLb#>_bXfMoMDV}BA#E`kf|c?k3bM`ANPZ%=g;I~8P3Vuk2x zljgH(YrMy2J_RdIs_p}6`1kDmX_^!?HfN0$epmXc*^nbP4H6;^_*URaA#A{?nNWn5 zpFdn+?~(7?_pdx9=%(;PTk*oEm-d9JJ|1|5`{@GLl*9{QiiDI+HS z_u-|dS%<+n$v>H9v|q9*YD$g572O!-N0o)i5vWwVjRJ57Ro1NmjnK!~k5}dUKb7J5QD_zTOEy4s%-sqOb2=E1%U#k;kVs_bGPF;X@aXHZ=(w*jR<2#aK)5RcR zq;vzO7IS7yPmdbUu@{ioD-%cjltikjV;FM@8UX06l)8c!;9l1VfDR~V+1`76LNk94 z^N+9%3T%w99~_9S04gkt&%EbJBL}YWsBVef*gqi?-WXxM!Ekp|PN!>3Fp{+hGMbp< zW|D=h6`hw=j!%H@D1!e%qMP#iHvRRZlwkwavdj?08@ zFLA1NH}vXuU)ZFR)v|R(yW#X~y^hDup`dUnEp)h+D5&cI#G9Ua_HCtg zcvR^+NgdYZLe2H|cCZ+c)07zC+lprS&(037%f?Zh50WtDqjZ(@ik<}oPpl`n7x0RA zlML9GweMWkLG~UGWfj&d8m9i{b$i*eKKhkqhK-&Li+7>KwECS4eZQIj9ol&kaL*yU z<{f!FTg{lF22MU{UkkKMBrVx!HKPi7zbl4fiwi}vSCmU3eNB(AaG6+56Tw?GTC3Y^#pK-g=3=`++wf{Pie(qMn&nLzk0TS|$F?&(Kzu zV9bXdFC~>THMjSOi9#3|&h5srMGal8U9@_i>==?i_Bc&?SrTX1T1>k-bvW_ps&uVP z$!LOxoGDK@s0^$+t({NEoYRfP z3GcU_2G--%#^ee@s5a+1Li4$@3;1Vaa&#t9n|S;!WJr=9|V)Uo2e?< z!bK}9&YA^eb6Oc(<Hf~4zXl`itYaqOxlU0S&K z(W%gsx%CvIJ!TcH@ajKaLlpy{WVLwVp2O-C`p+#q#xjTH)eD$s#0l4?iW=~oNEAQf z*X^<+^-q-`Jc?b$*wnnqRc!Jx@`JhlX?PZhSYP#Ys%k4B3subaii_QfT$LtE;+Ir` zRv)<9OXlt6qtv~Yh{IxwPpywoj(zUejxh!i)6rh~gJbrg+E{UF+8DUo_>E=YsE|c0 zYGeeFBZ=(0$cEltGws4`@raTr8heGqv$CgF&$5~paBE)qP`<-4*`t=w|6qrl6mSxp z2%)TB$B66%m)|e{(6H;oT&%h7Nm&zI|MHkQ`+VFWdBs|#y=0@nL>5{8YPbOf0KVH2 zP6#Ta)fRlR93qp?Xl(3(CxksFOWoY@;Z)rJhYti0t*KB<~w1XPwB zgf1H}Q+z=sMp#5lrRr$GObc+J3J@*6nA46{Dl;3Y9>PJ3x2$zHdJnai)N0|+AhbiJ zY9fApx?Wy0m}^h`P3feO&2<_rYzH)=XHA;92lnTODX7t8CBjz0rb#6{VikjF+aXGO zvjJZ{5bpEQdr=8x$YLr$afNl5^`3B!M0E40u2@f0?D7bO4ys+)JEY%M=`#mwO;F@2 zWajR0Su#h2tBHvu#LMC}Es|$%>#`n!2bKzJDrkXlIq!c?xip{{Dz^h(MTw+(;>G&)*WQo`>318|a9QUdm+WkS?5{SIHo!KYSLI*<-Tv>Lv%#yr zn48RX-WRgimxLCsOR!kGVf$z?y#fDH$K_TlCU>X)_}=a$mlgRl7}X~|uya;7jjT~l zEdMEXe+`$2wED}D3hf$A{F|czM14-zY%G_sN+$LBv1qllYD5W+Y2a0&WchN)UD0(Fd3Vi@?vjGV?bV!6oY{Q-1T%~ZbS zX(pk`ZTxDD#QVWh+h?h1Vlt(Y!>3o`2oE^S0vhHZKs-Mw8id9pMpH77%0yEfd`dhT zHCDU>7-)2bJGkq*Q1sDAmoYYIY~d&bsuw3^d2d|b@Hf`2<>^}4RZS))6|yIPib^Fc z&s7N6pKhfZ&DOoqVn|8>i8E;C zU}~6=hkmBzlc;hm*t?qe=5;lzc9IP;0u_+`Wns->7O?lk#vJ*}LcQ=d?S@lbfAN;U zP9}UwC2K7nSac3S!Wpi&yJA0jy_MC5Ngo;Vqu~mFWRs59#e1Q}+2k(MAIALyv8tsU zv>LT}%dQycmZ%SIBvNn5lOEOYD=Ba=W@Wu^+R_Ma=A}6lnVRm{v(Vt{^C{Ba0J#Mz z5?~E$hvpai9T|c1Ph<$2@#MU7w+! z%J`$#t(Aarr8$G?Q&H_5zJJRi!r*>GW}Mn6?l~5s-8i~OA);zr z@!xh-2wcTZPZhn{ zvb1Net!-icQt%nlj!SEHaE$}W7B1ygicPp0;D1WPYNk&#`n@&-P8HCE*GgL&0d-t5>D?AY{UW>klVd#IOjo$~8N$NOG^(GcoU9x+gRnQ|{}Y zhU8&-tI>tP0cVwC4BmNm&foMKV-X#kuL16m9D3`rnR+Q@SML}U^K_(NHztCcEw&RFbjSc3S9>>k|&za>LOi` z?Z3Y!mV9YHV20R~(EGw$)M~B96a?C8ptQp1+&|{qe@v0fs1=??n}Jr?h6i8s8;!rb zeG8=cxOQE}9H8Y=g+{E@_3_5Rm0az(q#g9k_#12U58Rw0+hO=4an!40LT79Tonpve zE=q8l44?}ed{p4q=EOHAr)07z8kXC?XT}i6wrHiQQ=c0cSddM&DNt!u>NfN1(EPEi zdURPeAZrNa3`7_0Bb^tEE${o?T~t?(6dmCgA^xb&5+w?s4zxAb9!bq5J6J7GeU+vPPm* z8&MAJl#?-++7}VBF&DW(hm&3Osf-)7J-+Rhr{Sx{s)2$$-GG%%C+u;0|24d^v=IQXvW8#=Xt+vH2zO@W3`#94!_f&qhz^D7WYoAvW290m~b3}@}O?_9q zYp7Dntq;E@k10>+If%jE16?&CL~V^ef)qy>%wYK}rVXMu+LBS@^=0)%8Roo&*b@oT zsZ}IqvgM%@N#0yllx64K{R^@K)YYZ6Dcos&@l8r^C)f&vi_kc&bhzr$JMKd z^*BT)(g|I3+G*_IwC>#SjV6lXIJ0Y6?!3i%lH@maZthH_+|w|2(bgZ_f_YgR$23j6 zNoSh^yKkB&`q)0fra-Zh8qe9%T5RGO=??B~-rsDilR$LlwbE9)^kBx0B^ob^h zCvNdW#`-+;?Eg%E<%Wgzg++guyseD*%N{|mB4va{ZZqS=#qnHGqnUu!igZStsuJvY z`Uz7j-hR3lUnf>sm7|e5kSXl&b3zeL5;iMHuw%FOi>LoiEavTB3N z)O;({Q>uCl*9xyJqvhR_^)7WwuUz%&6E|lze+Qf55yU-zDkIZ5`sCb`ANScaTt>(N zb_*yB2y3Eg)0q6kZ}=<>^lR%EFxP!MXw+b|0QrX)T1lT$%=zF<>2GHa1&Dd3&qCUq zC#R#>CdEsB=9O(rOr`E8twy(OtvnhFh4*J@hst9Oh)F9JW`)rz6j3OINL%yOUQrbW z&Uki*^~ck@p_npOMV>VTfjL!j{H|ED?L;k;;{P7rP0%UJm4|KC_+G>Bs+fzkDB17=95lm_ z5TNQX?0_sXA4z7Lj`Cfys#&|x(GqwKI%J0shFL*J^uTMUIi9+3N$xgd=|ueZp5 zZ=29e_+J#ZZ~PHChqkHFP2a(QwB3M*Paum2dGdzH9Nqf%@mZxd-Kd(_-`@>A`(%); z;tUfeM(UVZ*}Ir@m5xp5r?Feo<0VZHgO_u5Y|nYk_wu-c&J8N7tGzUn4O}f=XxD3} zXXuCFxC`zgs9zRf^!OXtxTN_cNmd)@k)7tBR-^?NiY3CCIASFZI_6QARNeLOoNxWt zMz)m3?Ta*X9t?WxRaO{IZJ)C`#j!1jOp5cw8rqT=YB5j3<4x7!*CvsX2yZ z4M>cm4i^KK)q9+vBaCuDBulcs5L>e1cy|E%mzy@!yRb(uj4hE*(LL0v$xjNm>vF# zi2qiDcmL^T>|%xA_>;Tw-QW=no#za`C00ft`?>e?e^ZhFyYms&X8UB9{nWBLl+ODH z&e8uUzt1G+aW*yxq$@OsuMWG#pKDH}oWD11=zIc1(MXUOF8C=u&5ygPg)Riz7FzjH zzUKzPBAfsB>K{+mtDi8H!{@Wjm~+MDogLp{m_pz65{Lc5yDC@KfgTzIl&y8Diq@xF z@}?>(Dz#57Hq531Ayro8Wy(Cq`MB+d`%6fw^vwLH;7mSS*YU>O6_Ho7M0o8u@OEsM z@FPCE>P}5Pux))&^ND z{UJrc>$e&6+6rE%UPW&Ean%ls{Y4FRKE_VeNyDxoV5NwMcNp_IS&94-*ca)yWSuoB z*QY#c^X%ajcEl!mkn6~Ih7{*tuK&P&E-@i0WipsroS9UjzB&Az{+dq>d&IU4)})er z@N7XBb>HI3juN0@8qwHu?fV7v&)L`daV4 z^d!gIktML{D#59Ki4y|bSgkRAncxm`$q&$X-V!7=j`t&a%_vBU-0{9)S*@ScyrdJg zWgs%R#YD;qysLmHqJVG9g!ixrfTx=zHSiSXfSlpHUEtXRO+0&T{g`0Fq1BfZ)bb^F z-A~cvVX1RP<Je#^@~uY zWuIWv`G$M(==hqvhhs0Ty|%=1s;VOPuJm>qqptQ8Bhuc|ze<+=RP;<8KqvfzSMZG1nIsb%@j46*O*=_WQ^DL)lUF- zlD~VSM;L?U_9ZrAK`4#4q51X|-MCYUT7^oEfkZ(t5OV`9<*S-i%H<@?6aW=~MEDcC zQ@EdfXEj@C{pWQ&X-e#BB4DnQj%=!$E{PZnPF`}tqI6QAiQcDloTmQn|5@f}s*T~#5lh=<;>hdC z&Q7Efg!k~9e0wcAL?Gi6ua69BQ6`Kb;6o1<4fn41lamAa^$F#D+H(CBvYIGbM;Mqm5lPI2J=%apfTIeIB8TS^)4K_TS{1l~v1ovzA`@jCE{ibje8gQn_jHBxG z$3(e{voQ!&q&rcsQ*~(0G;U?|@t|vMdsfKMvXVyGCDC`-B+8^l{0zPi)w7&?!k4&Q z`kwxGY(sg*zbV`J{20qteAjD$nJczAPlZRqH90ZMmV&>VG}hbq4ejX+iGB69&#-^8 z;Y%J`Y8Lc}se*PzuL+oj${lW06ukjxeRrF#Zi%oZNxh%tZsi@?as*~yYD>*(*E&YO z)37`anzB*Ub{DQRd#J)mF>AoO+p%4TDZzi2^%@ZIs@@Y>F{a^5E)X{^?6_wVpp#2uCal)L=5;bWli_uGF zrJ|jEX+V8kOB)sDr+O_um-P3pew_FR#?0!!>2JR!x|cP2<2gODn44)!;Hs#nwuljg z@#l{bTXFIgq~%*#ms**m%^vO+)-EuO?1j3AR8b>+2&TtiQS8a3a3`K?t`%P)ACdJ- z#jZUba|#){1pKmlJ(Vebm|=P_A1`8Bp>!^CRA;rkh1jOVC?{mYWgwU8R?TIdG$>v( z=(3BM5k!^?TaGWVUp*SdO={F+#5H6)QMeNo+b=7`hA#hT88SZ;dPd@qW3N3@d5||=JFG!x%1Usk1ABe71;`w^|J#b z$BY$La&338_sc!hw>edW4 zEHBPKVqwkBD_)5o#*RRhDIjeup`6@1+s{~hHu>l5W8dc|S*73|R&I@Z3Ew8Ty3W?5 zSr|Uyl(xVK88)(`Z8baLnc)z3yr|zP1*O4XC2QOx6z#JYvZS62fNYjJ;{BRzmP3iM#9&2B~530b1rbpF@X0Qm(S`z z{3jz7AJK`pOoA-lqnA5Dra{}&2~lO7*jYuk`jmSB`Udk*GW+Z3I$)VVuj}8wW;2ad zR?O3jt&EY-u#~E41?%=do(}{sAk^ z^5<27I~C|CXkuAiuZ25-A2=8`kWAu0tQGBOQEIwHCo?SPp01%xhhA;0*DvZn#v@J&}{tu@Uz6;Lp z!=|ZW|I$vO8Cq_-usKbm`CH5YN8v+gcMHA+OAq-h(95GW-?>bRp(zMdgSB6W!2(*1 zGb21P$vsevLlz(8?W&BxztZuWfq4B0-=Vwl02VL(L%Vt&# zng{z+J}k5D$jLRg1&FL8od#n?T;L6mLWj#GOTSOk3~l`bKGE<|U=H4h=>3_Sw8Q#c z{!(&gU|)f9LD+~!ICl%5ziCF;L)P4YncL?=_1iKP(U970pbWvP3>fLR#SLKF%8vrO zh#gWpTG!<2{$0YIIofY#WSzFxCL+Qs+vR3mGAJbz$wxwSb;J^4*xRPQ?3An_uZR`1 zq9sW905K;>^TH67)eY?8|GIGnbJJ=qYyNx2%l`w{Wb1?UyIkFqe)vd5j(aD0OrcyG z-@)q1`l-Ph>==0RU_Fa^gQVK;16k6PiLrZaOiv%ea+*_o$yO-h=DPAl% zAwclpQrtDc-Q8Wg*YmvZ-ur*foSE~1A;X6Zv$EDN*L~fWjJ=C(2nctSZ>bHREZ&9w zai)3$MQ%e2d?ApHBls{>YWzaFtWlrW6`^u7V+40yar~_^zFXi&2AHQNv9~A5oLe5x zbGb^Gg(9IVLG=cQ&^6tl+PtQD8;esNaY+Zt@Q#B9Me2(OZgPh1?>j9jItMU{Q} zjaFf~)|zpBFsWQq+gm7?vrlR+oN4%XQ9{470DL_Ez0B9Cc-Lg(Znu)E{6|WBURSsYfstMcj zWxa|KK;8q)LK0#xUt>l;Y759*{W#^a{(<=mH8wilu4|2UR-wy;uER7)oyr%@=}mPY zBY*W9a+Mw9Z5!$WzOr4X0|jx5u`msAz)p(@`oj+ExeKeW_3~A8c;TtOzCu=UwNmbR zaQe4DYYd;x7;M{o0>9U;Id;1rKFtL?cz_;9s#gvBIzd{vldL9E7EK-%QH?D%IhWI1 zIFyzXYUnCS)xI=>!9G zzHAQFp)Ll$pi)1hPF+L%gx`)i#)slCvtA2U{$Ze=%RLt_O|Y;j47Ky|qSVJr?T^kd zGw7+(*|#sQ-nuAq!urPZt=%Tm`El+0G$<2`i)jrLQ=+Lx=D&|Uz99GOFv?!A-ZP8b z1UM)bfUm{5vu*GCm&wHCFfS6S!aSQLOf_yjYv^)Mh8dzK7xmXMpm`eg6&aD1zJpLT z&`Q#g-PRF3=qsy7l^vrXIN=nQr3PL*kz*cl1?1BE0oGA^x{CL)L(<#bh54ysrPt$e zYu;@73J?W77qg1&(lT=tbth*_#*J7Q8lHLwbK1ziv+ko#fG=$&eVxftPs$isZTVfP zaF4l!U@?k#0@*m0go;xiN)dlE2+CT%AsInL`1-`Hp>LcF^4io&p3Pv^S3Sr~@k%xV zY*x<-DE(1RabQDLvfP2ks=l`0M~Xq!u|Rr*cPdMvu@hZ|K=9ae;W*L62OZAOrCws7%4Gc*Mdnplz?%q7%1 zWKF{dyW~cY1hZJIDroL;*Qouvex@v&!L`#6--<>p5dv%~FyrbpJA1$#^!_Pu4r<6Z5Heq0-K967EmKUFp5d-^j(FFz!(xCQ4 zip{;2xX3~Q)of1O+@+ppW_Nv$GslW&e(FeF76i<+qgm+lL&;xr=Yj0p8lOar*Bch9 z(jRT6ZW`~$PILv00U4hUgR{Ld=!}7JYWf!~9Rp2LbyvwOk0)&qeEIM)t%x8B7zYgl zkdeO5B72jZ3uQTFieoJ^S9`OgAnVcCS8iV5@a+31#-ZOzCP5jszaXsQ2|7UpD&X?- zJ;iagkBSHPgao`#p%n{8Q;2wTONBr29jQ14G{ravEKH$dJQcqM>NIEPKz+@4E@n}% z-}v)36X|}gC@!vw5X^0L7`YW|k z7O|ag@Hu2YZl{jRZCVZlC^E%%ru&3Uu7N^4PxIg)!J6bVtv&0&T!tt9-vy28)?J+> z&>m+K3jJb1QJol(=sw5pS+kU#M3_(!|M!bC1w8`tDOeioAS)ovU73<_*9!bA;fLxU z|L&*1xhDjL9hW8050!fdaY)~)2f;B52IW=PNLQ1{%5Y`Rf{;&reu(8pEErUmI_%-u zFrQvh4;61i!)z{vsHknHYsEG*MmJS&Y*I85e{IgpPR^ELt>|d4V8%8}s;W}RJ06&I zuy!Q;tgE?FH%=3zh>CwLra#jJ^8{IN^@m0c!tmaB2`q`)nR|b{n*5a1+(=pY4u-T& zs>V&mQ+4`U`7S5EaYm2oSZ$`gbr~4iZSl)j-|Ro-ZfEtX^3Y2$CoaAXGW`TzCyjK> zkYMG7s?OW%hW<3hJnRLgJD0n;ipDWp>4S{@ zYA}9JzCM!*$|wE$s9Hyk@F|)Mnno}H@OuY==No|dl$0*{(x*d=WdiG#Skyvax@0Uo zCqGN5d^#8uD!Y<1Fu&)w@nH<}=F-g)sEVZ(jZCr#585gC$3bp;5$ z==t|{p>d0iJ0WXqVtOhWoS(ZK_CM0!v#H3S*99`RjHFC6mvk+t9t^n5%z8!C#hDNd zG|+-hc+*z1Dq!^S)BB-+(f(8^c_{h`*?ya)iwJz%F7eD13q6q#!}!e6)mQ$I<82vzFIgh){Mqt>YCd<^MrE0_UmncuEv+^{u51 zZgEc#ZJnGw)icG5XJSUh+em{P(^t%uTWfh?=HIkGss9lOn2$->UKZ2t9TMQSdV|YW zgZqw8YK01_58Zuk<wcJS)pPs(hOlW{s9h zJE5;=pBu#Z;fl(Iw3K-=hEA&7hn8nKxZfd19#P+8Q*{9K!aJj4=7yBR3~E=yb22~a>l&4yMW>k|sojir>3k#@{0U;v0Jvdw_Zx-AQix}8BbXMYSn zuYR!YM4g2Xmhohp?}eIxGqE2?ZDnD-U5HF5KXtCwd@e=qW+)Hox{JidCj2dz5RmrI z$v-L9Bebz{OL0rH8~2mj_QlU7j>;f^Kz3Ka9(*4ECC3V`2xqkYC<(rA)46@^a8nB; zwbBkC74lD^yUUzeAA9-J7{_nvHQQ>$Oa(m}n@#5#92~}v=N?{0ebxq7)HvB~{ARpC^O)5W0${Z0ZeB?e}V6K;__tUEV=-4D_ zy*JunL|3x8j0j8Tt5*oiTuL6>YJ_@$`7-8s9GoOYoFearF2S#Ccb;lG4t54R<2ll+ z<#Zj)={WDSJ%iohpY#1itI@Q35KZRDo9J)H7-p9U3S+P?O z32Apx+_@_f6FBM@3!4c{6(X=|A?^uIdpf^S9pZ2&v8l3{r+O{{n=YAel$n|6zlR)6 zInLUDJ(9LhIKGT>8BTW$A(Z-!;0z3@uX-OP?QZrGM;Qko7lF`PZcHj3?g@frPHQcW zR~s@miE$k;OEe9zqq}tJv%+*MN0e%F-t>O*ZdE7c*u^$Z&5D9fa1zCIEBM~jnZ4SY zgShNl362V5ReJlF=7GI z-Cyy!UukgAgoD1UQgAfD5FLXIWs&g*agPQ#q4b#d~*FMKb2iPjYCx zDs0=AGJ4dO5Ump!LrY`?G5=6#m|0r}?+Q@`fP~EqTqwG$J=3<&tZaU{9-D2SE!f}- z>Fd=>a0XGC>MJ!D%xq7b0qpJ04-M@7sbruyYyK0Ir88}Aw%Qg#kM6i{}Hs_%g z8DRu+gdt$Bwk)21R*7hxI3~#3uM^z1ab(lYDJqU?d5rI0E`A(syc-U3sUq{{5*tbn zQ;mG#raelIZ$>7>_q!7GW8?`pe`2HWar-`N$wy(+CJ2){;J@8;ZsE#$R6}V&w`gr8 zrS&+yVNtBxrI}SiZV8l9=kcxBl+#esxshHPo{?eJPQ6yK*Zv7KqGM6yFt0axbk+@8 zu#YyOT05aSov2Ou*?4`hKee^P={D?U+u58+^Is~+0V0qIa1$8fvNsJDC~P1xvKs$( z969zEO@Z9f?|Ai`Hz5YnZJDwyQqD+Ez51qRys?e_toik+q+w6ZI8pXLcymK!3zs@C z_+ezDAY$1O|F*5Z+E2cpl6OB zx>nRrmsMc`nk*8fS3)z%(*_W5QRx*UU$Pl;r0UkLGk}EsV!`?oJ7402Iz+j zv0E%qIdyw2 z5`%9ha=xP#=dK+^06&pFIp?Ms^4cYCyU4Pf$~In704rVg=`LFKNEVJj|OjhHus;E0?i~ z;Yl7XjoTx=ntqm=I0OzhdIQ#?2McyhiMATaYOQ3a!QrnPg^drnDo5| z+OFJc!7z^F0pFmOLv^Fj^$(7M%2Y9v(~Sx4E7buV07>2Y)44{vQ8#yHBbOyifhFmw z5W(>L@VvG{=Q_ExA|Y5mI&qH>K>p^fbzbcwCWRvYqt*qhVj^#S#zzu4O9L8AGzuZY z8R`|gj%1R-i6paO&p(CGJzKI$A6Y^~;hnv;mw@(2BApQF?TC1$-dtOM+9UtkcvLNVvm!G&rlD(t{6C z(rZ!4KRrwHp1Mg!sn~mb;LfrtcO3-_5CBpU25|tQnHevt5&4W$WJNh

    $x2#FLl% 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 literal 0 HcmV?d00001 diff --git a/img/button-screen-shot.png b/img/button-screen-shot.png new file mode 100644 index 0000000000000000000000000000000000000000..ced26bd7ac531dbe2314a6ee27bf297e8171809c GIT binary patch literal 286704 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 z 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

    AbbpjzU2o=E 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

    MmjtmH^Ddn?s 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 D8bYI= literal 0 HcmV?d00001 diff --git a/img/combined/Arrow100.svg b/img/combined/Arrow100.svg new file mode 100644 index 0000000000..0587985373 --- /dev/null +++ b/img/combined/Arrow100.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Arrow200.svg b/img/combined/Arrow200.svg new file mode 100644 index 0000000000..c5938fa055 --- /dev/null +++ b/img/combined/Arrow200.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Arrow300.svg b/img/combined/Arrow300.svg new file mode 100644 index 0000000000..60ebf3f5ef --- /dev/null +++ b/img/combined/Arrow300.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Arrow400.svg b/img/combined/Arrow400.svg new file mode 100644 index 0000000000..4881db9e5f --- /dev/null +++ b/img/combined/Arrow400.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Arrow500.svg b/img/combined/Arrow500.svg new file mode 100644 index 0000000000..8b1d7c1536 --- /dev/null +++ b/img/combined/Arrow500.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Arrow600.svg b/img/combined/Arrow600.svg new file mode 100644 index 0000000000..481058693c --- /dev/null +++ b/img/combined/Arrow600.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Arrow75.svg b/img/combined/Arrow75.svg new file mode 100644 index 0000000000..d1f2f7cc7b --- /dev/null +++ b/img/combined/Arrow75.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Asterisk100.svg b/img/combined/Asterisk100.svg new file mode 100644 index 0000000000..c88e1c7de2 --- /dev/null +++ b/img/combined/Asterisk100.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Asterisk200.svg b/img/combined/Asterisk200.svg new file mode 100644 index 0000000000..afdd0b7d98 --- /dev/null +++ b/img/combined/Asterisk200.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Asterisk300.svg b/img/combined/Asterisk300.svg new file mode 100644 index 0000000000..e59db3e4a2 --- /dev/null +++ b/img/combined/Asterisk300.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Asterisk75.svg b/img/combined/Asterisk75.svg new file mode 100644 index 0000000000..3a5f7ca4d0 --- /dev/null +++ b/img/combined/Asterisk75.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark100.svg b/img/combined/Checkmark100.svg new file mode 100644 index 0000000000..8f91cfb123 --- /dev/null +++ b/img/combined/Checkmark100.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark200.svg b/img/combined/Checkmark200.svg new file mode 100644 index 0000000000..bbf2053c1e --- /dev/null +++ b/img/combined/Checkmark200.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark300.svg b/img/combined/Checkmark300.svg new file mode 100644 index 0000000000..4e9df7621f --- /dev/null +++ b/img/combined/Checkmark300.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark400.svg b/img/combined/Checkmark400.svg new file mode 100644 index 0000000000..22b741207f --- /dev/null +++ b/img/combined/Checkmark400.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark50.svg b/img/combined/Checkmark50.svg new file mode 100644 index 0000000000..b830e05253 --- /dev/null +++ b/img/combined/Checkmark50.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark500.svg b/img/combined/Checkmark500.svg new file mode 100644 index 0000000000..b55b71f237 --- /dev/null +++ b/img/combined/Checkmark500.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark600.svg b/img/combined/Checkmark600.svg new file mode 100644 index 0000000000..0c6bf01276 --- /dev/null +++ b/img/combined/Checkmark600.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Checkmark75.svg b/img/combined/Checkmark75.svg new file mode 100644 index 0000000000..e089ceba55 --- /dev/null +++ b/img/combined/Checkmark75.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron100.svg b/img/combined/Chevron100.svg new file mode 100644 index 0000000000..83fec6cda3 --- /dev/null +++ b/img/combined/Chevron100.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron200.svg b/img/combined/Chevron200.svg new file mode 100644 index 0000000000..d08fc308ae --- /dev/null +++ b/img/combined/Chevron200.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron300.svg b/img/combined/Chevron300.svg new file mode 100644 index 0000000000..1e2743d854 --- /dev/null +++ b/img/combined/Chevron300.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron400.svg b/img/combined/Chevron400.svg new file mode 100644 index 0000000000..6624dca606 --- /dev/null +++ b/img/combined/Chevron400.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron50.svg b/img/combined/Chevron50.svg new file mode 100644 index 0000000000..35e2d690b9 --- /dev/null +++ b/img/combined/Chevron50.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron500.svg b/img/combined/Chevron500.svg new file mode 100644 index 0000000000..fde9533a26 --- /dev/null +++ b/img/combined/Chevron500.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron600.svg b/img/combined/Chevron600.svg new file mode 100644 index 0000000000..4bfe2c039e --- /dev/null +++ b/img/combined/Chevron600.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Chevron75.svg b/img/combined/Chevron75.svg new file mode 100644 index 0000000000..d7bba77baf --- /dev/null +++ b/img/combined/Chevron75.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/CornerTriangle100.svg b/img/combined/CornerTriangle100.svg new file mode 100644 index 0000000000..e9d0c79759 --- /dev/null +++ b/img/combined/CornerTriangle100.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/CornerTriangle200.svg b/img/combined/CornerTriangle200.svg new file mode 100644 index 0000000000..baa63e014f --- /dev/null +++ b/img/combined/CornerTriangle200.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/CornerTriangle300.svg b/img/combined/CornerTriangle300.svg new file mode 100644 index 0000000000..d7785a46e7 --- /dev/null +++ b/img/combined/CornerTriangle300.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/CornerTriangle75.svg b/img/combined/CornerTriangle75.svg new file mode 100644 index 0000000000..002ca0040e --- /dev/null +++ b/img/combined/CornerTriangle75.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Cross100.svg b/img/combined/Cross100.svg new file mode 100644 index 0000000000..b19a54e0fa --- /dev/null +++ b/img/combined/Cross100.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Cross200.svg b/img/combined/Cross200.svg new file mode 100644 index 0000000000..91acc75fa1 --- /dev/null +++ b/img/combined/Cross200.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Cross300.svg b/img/combined/Cross300.svg new file mode 100644 index 0000000000..3c5eff2cad --- /dev/null +++ b/img/combined/Cross300.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Cross400.svg b/img/combined/Cross400.svg new file mode 100644 index 0000000000..9275b18bb9 --- /dev/null +++ b/img/combined/Cross400.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Cross500.svg b/img/combined/Cross500.svg new file mode 100644 index 0000000000..d8a24b3109 --- /dev/null +++ b/img/combined/Cross500.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Cross600.svg b/img/combined/Cross600.svg new file mode 100644 index 0000000000..3812416b74 --- /dev/null +++ b/img/combined/Cross600.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Cross75.svg b/img/combined/Cross75.svg new file mode 100644 index 0000000000..1cd307fc10 --- /dev/null +++ b/img/combined/Cross75.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash100.svg b/img/combined/Dash100.svg new file mode 100644 index 0000000000..97fdfc79f7 --- /dev/null +++ b/img/combined/Dash100.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash200.svg b/img/combined/Dash200.svg new file mode 100644 index 0000000000..fc6f170932 --- /dev/null +++ b/img/combined/Dash200.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash300.svg b/img/combined/Dash300.svg new file mode 100644 index 0000000000..a02130c244 --- /dev/null +++ b/img/combined/Dash300.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash400.svg b/img/combined/Dash400.svg new file mode 100644 index 0000000000..1715a5a83d --- /dev/null +++ b/img/combined/Dash400.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash50.svg b/img/combined/Dash50.svg new file mode 100644 index 0000000000..d3187c97ed --- /dev/null +++ b/img/combined/Dash50.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash500.svg b/img/combined/Dash500.svg new file mode 100644 index 0000000000..ecb04cb246 --- /dev/null +++ b/img/combined/Dash500.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash600.svg b/img/combined/Dash600.svg new file mode 100644 index 0000000000..f3599a9837 --- /dev/null +++ b/img/combined/Dash600.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/Dash75.svg b/img/combined/Dash75.svg new file mode 100644 index 0000000000..05c7f48298 --- /dev/null +++ b/img/combined/Dash75.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/DoubleGripper.svg b/img/combined/DoubleGripper.svg new file mode 100644 index 0000000000..073144a3ca --- /dev/null +++ b/img/combined/DoubleGripper.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/SingleGripper.svg b/img/combined/SingleGripper.svg new file mode 100644 index 0000000000..6563e3637b --- /dev/null +++ b/img/combined/SingleGripper.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/combined/TripleGripper.svg b/img/combined/TripleGripper.svg new file mode 100644 index 0000000000..068f15df30 --- /dev/null +++ b/img/combined/TripleGripper.svg @@ -0,0 +1,4 @@ + + + + diff --git a/img/example-ava.jpg b/img/example-ava.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1cc8ac72c1cd63d4ecbf12e927adb45dc7117969 GIT binary patch literal 8818 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 literal 0 HcmV?d00001 diff --git a/img/example-ava.png b/img/example-ava.png new file mode 100644 index 0000000000000000000000000000000000000000..d77edcca8db907341b90dac3da7ee66fcc32ceeb GIT binary patch literal 9444 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

  • vB_y>xxA+RB$!S~trYZ8nmsw`&5Sd_>* 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
  • vB_y>xxA+RB$!S~trYZ8nmsw`&5Sd_>* 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 z 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 literal 0 HcmV?d00001 diff --git a/img/example-card-landscape.png b/img/example-card-landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..dafdeb320e55474c2ab074b402f86428f8e32b42 GIT binary patch literal 151472 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 z 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
    QiEp_aoHpA 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¨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
    OMPD^7uK#vi2WMiq%oZ%jUF|Mmm_1IIK4r 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

    Yk1rG`7!~`=l7&LdLK>1E)0^Q#)cAo$;&# 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 ~1UVj#EF7v-G9!~k z1G7cuHRUSWhGr{Zc{y&*=ZkxGnJQRQX#*Ta9eiVFl|viLzB=4-#3i*MMnM=VI>y;M zamHzd{YdrOHS~ukbb7ZmViEMGB~?^om_|;Y7O#^HN~(#Zm(3JX$nZxhiP<-zF6*1z zlXE6FLek#p$As%%-i?3~2FWla?ZTN~Xc?8of-Ok_wDbTJpbVrbQK+Rq!jg22piLlY zGfowkg+?h}@;tTTN?N5Aa)zA>GBPkh?+v7jczif?tc6dFAb}lQC_0?|3`)%7f$?qX z!i+9N_3hM-li`zLJtNGx?@!Jol=PT|Mpei26$(m}k{5^+!|@70#xwRwA3*KECC^}a zZQK3j$qP9D0177)J4if4(6v3d+%&*xrc;OXrCnG8dN9H;!j@Sx@mux5(@e`#nzEN( z@w&WDv*sSUEcN8(XeSjg!$|w%%-_se$%+Wn5=l^?3v*eQ(?025r5*bPNz*iSB?Z0-(*R>43P@1L927Apq|r5{^%K>6GQT!fVR@>059{Si zS7xz?(c$qeT#YokZN@bQ1R_d|U@91KzzS44aZZWC>_rQR@o)9Dbj?% zpvA^?`-W7hK9t)QYIye~)iN=R5F&*lRoA|j(%u^JVr?4-Wg|E0>8u~tN2qx|R#L^TI@hPSc`Phb>6F{yqKObXrz&2-*L6JrkWCd*MYu+nsU@dI^DvimRMdl z)JhoYsp%-8f|9B;PgV1j)Y|!^*aJF^O^v&2!1eY~Zs7$$$m=wJWtm*I2uwlhA38W4 zCH1T7FQ&acpy^&;#_&8dDbZK9J%lbHm-6*Q(9bPL&NvdwxrA*X*F)ajtT_m8S7DpI znO`pLNU;d>t%^n|3 zn;L5Aea^)v|#une@XO&6u7aQ(cRHC&4iZjTRJf3fg)a zdWkNf_f=0(9B~-SE|X~7l5edP+eJW3bx*ireJBBzzpZ0Ygr84;4_dGc6Y&1(T}Bs0 zoGP%aA@ZFhwG{MupAgUaM-RgqS~%88e7B;Sx!YyIW=`W?#{7!&KF};J+$@&}aDjkr zMB~+l-nt#NyH6|ygvcM?06oCdhB5eN^$$K~8ZM;fyy2COR?Tjhm0m9$SST=1gPw%o48fo_z!sW<_n6B}Sio;xW{XW5Qndhxn&q@{SA zOm$~NKTRTBc>5$Iq)vGblLKcQt5Lz&eUBBu5mH zz;sdZ>COw%x*Gg%Fjw^hF5}qs9t~F60%{5ama1rRvm7u|J|iVho+qbBmSvG+w1wG9 zkO2k_-&~VAahBU^-N2II?=?$+qa8s3F$yLioB#(3lecBuu@9FE?Wm+%(cu!a|tp;+(=JIJ{Oi8fZ!G%>MI8-rIR#eLZ zm>J$RPk2eEF<(2~>)TZ&Hw+fkpp_`6!U0KE9we3HB6OHgfT`1r$!nV-;DVKfB_&e| zI&p}Q4~qZ>KWQqA4GTEdH_~HU)XM74o^*>Jz_K=4ixJC^C^idSUdrl)6ulI-g7F{-+Mj-Apu?#syK-{68h-jImQh(L-3T zhhntyw2x7;Xq2hk1B@EtE5ymDIRZO<4JfBBZ3I z#EX*eA#%v68-1;o?k=}8*q+SA|aSA|{M-obUFoH?pG(`SIYW9?=oDwjF7!!;D z74oD`aP%?hrxwI;3LHZi>P`V&iBq*~wR2J$`cVp7Y;{vU7d&yyv5ReXZ2=^YcH*l( z+w<^+9SkfCIuD@LBy;46?a#DYfR&GU^)PX#oMX{FZ&7p22VQHvSIyL{?bGGMYvacH z%jWQdOwlhf8~K63QgnKLIzb5}>O9QEnfF;Hau z(Am2*XKHM#f@SRDwRnbMn-Ca%PA^3zOHtAqi3|}^uatryup!!^cxPeSeXDP_>$dl3 z1b9GJq?kcWiAYkgI*gJg6h;DzoycD(QWEP*#}Yvi;+_g15=3m6k;Ktg&)$Q&ozi@* z)gGy0Sx*3<$x>khG~#%UT#};~!wobTy*4o*!YZ+f7`|Fq-kv1e6wG9W-Vpm-+;5fk z#gJwfHnxB|mlUlj)Bq(>rbq@Aw-FEyFd$L~H#au5W!s_?-GMkvM9va0*@sTaqTYR4 zK6U7~sT_@m^ed#%9;jk<*~|IuA4|~YY$AMn9;TJ(unb;`S$~w#(W}~?GIof|Lc5ul zgZus6e$M5u+N_~bs}uk<0zvzAc#aAQAaz91Esk)DmR4{jBLw)4qOS=i3`%EED&hvy zPd|u$LF?^*QMyS<)I0~Mc(r{7Lcnnx7YyrKWvaYliv*;nT19wivSPYZ;rEX5NmQa~ z2k9iaZUVa?-V0P)+^y9zg{jdc8qyUgPKobvD$%Ai_;kc!LY~qx`}?b=f|BCY5_Xg* z{pL)!AmjH=I;0(xLK~*Jh84ytYw%j^6|kXR)%2BEW+6?su8hVWn0|yTQZD}hd_LbS zeXA0n%fH%NQcx1&PNKM?BTbC0U6z^h*?u=8fI`iM-7;I?4dIlpvyQfNAR4v zfM;wAG*(NSAjd1CgDut3WAw1kl_(^TJ~3GmnJ7}GX{o+U8yTQ!*W8gw2<7)zZs&_} z#vDRBqL52~ppfdK8wUlHfUR-%s3779p)&0mMqC?8(xa>&wiSv8@g4xk)5M7wQWrVX z81oHO5XQoi1coU7ToVvsPOo#jQ>&Y3d+>2$;V6%Nw+%lvvS^WZMByf%vL0Zl%W>ngK}&~LrZg$3rCiaM zaEyE-($_;?zbkSKE=((#swuN$(GoYOC2>;SbbI%n-#k+czxk|%75*kFu6 zHD(!GB$UDPNIw~&k`AI`xre9e(L5(2WvoV*7maYZ@k|@1IdJCbzviz{i6VyDF5v^oN6lJE6IV#f)#03DA0>({mZGs!` z1Ig04P&&jIfOMIN9Af}_%_L6hUKcd?YAQ|yX*f>F5w!4{7x9jcbxQ&0MirfCy*}q0 zE2p&IGlAFj=D!ZEg8{6?Y4JM0Eh(yv97!CJ?GQ9ZS7RhhbUx~#$ooUf-OU$nZyHjT zMux}SJRss^%;KQ{U`IsJ#s24Br!JJ+tQL|=)JT}s8ni%CQY9&qB6#8j0=+NK*^4Ju z;ngu>F<0S2aZ8#Z5yL#6A?GOFG<9&g5Pa5M;QfQK>@CcK%5GH3OhgfnmtGv~H43?M zps%`*{{WzlqF}ue^$(3<7*2G+aBMHAX(mJdz2miY)OdaYEZB@SDKyexl8M?T5E#P8 zAqrpZ6kG5h-`Jt_HnpXN>e7If6#x_<1qCD#I;4a4z{HBoU#4yFYS!g!DQTAn z7zTEM;vgA_5=0Utfi!BpR(enC{XbDLZ&29Crd#PFXr+9uRg{}ctgyOLx z;%kUvi%#_uR7o<<1ZndTjbvMr!ybDy-^&||GQyq)3~5@zlv1bwkO`3|Ovwc7!Ube@ z`tF6>mtkmSC`m#zAnt&s3NfNpl5e8$(H*a4frmWZt3W z${IR&q7|7+nrt4Q5fyaeHd%2vcS})Cu|lv`QpHljtCcN_=NwrOtsx{xl!PHLK_*Ic zgRXHT$O4t-*~8hh2nrHH+*t)g!EwbnKs!QZL?s4cF^M8i4ENIf>0MEmYp~iOh*7{6 zzX8jTW3+XVSK(6D$s)?{8?m9pW2l6c^EMY7M$oLcC2M)@kd-BB0%U5^a8yCV_>e}} znA^gtcXsCCa?mG2fYMa~Lu`V6)q}A^1G5S!S+54EmbNLYa)xNa*l4J1m^ z3f+^D5Gu(S3%6?zv@Qj#I5W!gBqb1+SyT|5S|@~zc${|hP(L-wmZi$seKHh$E~IhC z2@o)kJ(yQ{d#B?w*UbhQlXLcEs-vdFv8-||Cl;Zuo)Lyq8rW(TcNSQpSi@Ak^h=)$ z@bKqPA-OBJNRR}ypfNB(!~HK^5GyFRQsYI+iJASfNs$FHC)?FS)FWb>*Ma5T$^z2%Ln=DFQNCY8j5VCL)8$I-O`e9u|lX^jy`e#Ly@C;U&^S)K< zY?5X?w78xj^7uS5!t^hQ$tWidonQ3S#S1@si&(;Y$-M8~W)425771-__*bS0*gyh8 zhfL|&B0wT{$oCG~+QGJ)NZJ(z0ay~187FVs0R6!#P}pLZ&*`hvCVj;-Msm#lqbfRI zi)Ku7AH_yO%AGBIM-9WNCB~|aB2!GVkI^+hmg^bTFxw8Qd3?XN49d>grV__^5QL3N zc!d%YCUM&{Cyw4U63=@vb=$`l+6I*M}Y_I>)(|J<_shXN;lB%Y*sE;m( z3xS=PnBU%efVLyYf@jnLq9#I#ihQC>Pa$TU4?7&UO^i_Gdg>g-QI~U_GS%VOgHhEb zNTsWUm04hzua_)mMnXmGct@P&-u%r6qykzJQOyAz|fl~x>c>iZxjXS zP&!m4DuXabLD*}KEt==f*_$(FEI%#bxN>HC>YQeLyOt?N9fjfMqNS>Qx_IFrM-+cz zHNBNU8rzBTjI3GNw8wa-JG6xAS(PdTYEj~&w4NrGX1STWyLImEDDMNBR)I4@T6 zPAiI5Mw$Bvj{w2;SIa|11!%=+s(k8*6?RvsNEoF&%&~{rCv*VCyZ->X*Na`d?YAYh zP8gVjv-&**rydm}ZZ7j$AuqD(;VT?=PR^`xoN(&Kggo2ovo+0@u#7({Q!XKqI#(a^ ziL+KA77>S)o?+(6MMYGxBUVo#V~c3Q~v|f%c&6B<;i3ve^H!aX+vRP9viVAq6~YopB%MZeNf;j& z38Y`_y5-V}Rc|em#YIaK(KsAri5N@>6cTj{s}NJiRYR1bnk;fi{{WKWbr{SsOEi%A zLOsjBSRD$06aj9+`kor@&gPd2S8_*pI)F(a13<^zou?@82|lQECWsG?JhRA|nsz zkwUMgPgujGx%VPs9b3t8bx)^Q5t^GbWfh*I4VJcr(n5^&m|I0LcqEg~UwZ67Ms2;0 z&u7_EE|+j^lW~ED)}j%trU8s#0~ic2n3FV7lJ=#U+cuVqx&Zz(r7BPo4j_nE9lbkt zP>D;_{MqXFtr>?N%31pxq0h9F<9YW9j}gY{u)JDoR!GE+OIIaTADvSaLhAxB^5I4* z9?YZ*lc5=H~%J-Lg6Oy*C&6FVlAzHB_Ri{W06)QTnY`}tM0XE7zIcG3Qc)U_1 zrbq-~s1mYNl9tj_3REbGPLz;lineX^8R}y!RX!D&`e#{!W*pqIRpfe^sv3?N>G0VA zt@4Qok}4@6kjB~@`0)EH?X!2>N>w?Svy^NB5?)k@k5 zTkzVjMi6#j2BhQCM@s;yOu z)8%XlX~sWJm`_dGqaLGQn8fLTY(PuqOfH)d+Wou+mf>o?p>4DyzjAaaso&YF1Rt_6 z+awAyy82;tmA~8w1qlsHgYUy$uA(&&O8S0`dY$RU3tNC?d`iBLE9W>P%9thzhGu|Z z#Br)cmFA{+qp90uWSD~|yY{x~MZy;w;gDtyrN_ccji{|ewf3OID0p_kNW&eI#)iyp zPV;3gEt^M3ZDa{mDG{{ZLoOy4%7 zg9}0P7X+0y8*TLRc**zIcUeby(4AVlrEKY)KRU*I=W;ih)%RybtzwsGMY&|S{Qw}$0kv0%VD3Dh7cebQzC97(`*(X_<>00 z!fU6<*~=(Th`}Z=hhsFfRM?aGwA09?5@>59Xn-WJ3~T_@KV$V_x=a$Qi;XR)l7$45 zDVUN5BM?9&07xJbQel31^yiu>w!?P}7j%N8spN=~Mxe9%GB6kg5+o7;P@34!9V*N{ zHpcPXx1K1*1DbFO%A5-l%W_I2mX@lPcZyhA+qFkV1al^LV|cA|dnT^!Rjrp&6qRfR zBuGBW#{KHutDK_o%Uh5Gt(YJXta^x$M?n}7ShBt~jbNCYV|Z>FQld7Iqo`;idTo-c z$09UxF2bw{(}!0!NO>AoFrf9V^4easZ5>pvgEeP5{4%2{V5Vw}Dx#rrRKjT5TuL}< z!We_a5+m$wr*4FwjkuZozRkA-%LxhsB;kieEoU&haUIigK{EnQJya}FdUf@6p5_>p z4@$FEXP+Hdsgil=t8pw=SZQfUM)G4vone9)$n!P?jYX~i1AyDk)^}4UZAo3@ETIxi zs3jvFoCK5VX!(1SpWMRK!qim*5NDuu#}2A7H6MkZXUhFPhdOl+)K^Y&4r%~YVtpCT zIffc6%|#fFSAUtOn1)Gw#1SkzOEbEGU~kAhzpI-|yY(??mfXC^BnOh2ZCJ#DCk>>M zZ~|&fA5Ts)!dG#4+iM^alfq*HdU4<*u7kd(`by~^Px6GZ;5~Q1`n%PvH!;*@Y=0qi z&P+z52pB|E%OYa*Sj9~oFxABJKa=Gs4jda?4crjqeYoa#mw&XeQx>XkP*VQzujnZN zojgqJ!yU9=f7wl|Hs7tvo}<+dJM@!m0-x&mF#-JF@?Hy_+-aZlJGkIt7A~o<~+3~aLw7K94{B1 zqc3Jplc{(z>~zt|vaC%gg-u$3pf&pg#pvH2(#jlKZ4gRa&=cSq(P-GX0GS{MWfn*#;o2q#E$1@CAonC&*U&yD9 zEVVT~T#!=39aGBYyi`J~A!x$+ciMLwo(`MdP5Li9kIJ+VjXD*qe$q#X$MESmW4DGI zLFmahGfEVvoEoM;5>h(wl#H}xPlYQDlg)B6v5||^zc#KXM;n7x3OS#Ge zOODPs95LaHKnJEzkmH*%Wj{rjUUSFrOcScvix|n+1x;QPhi4dY*`b#hT1n)FI^?3M zOUD$b72Y`{4x57OsRiwCKKYhVzsoWfKrl$ccu!BH8guy;>5@X8bae5@s|X{n4=POJ znM=|gJ|jIXCseZyRS6}=As!8}{IXA!(WKxO-k=*bt>JzrZ+v&)rcJ9e(XZPvG3hmN zy4##j{7~qh?|vOL8`V&B>V>M;4U%S~d#y5KO&@C>YSuvjcQQg0i1CXF)|qsY^>=RZmVqjW$MSJ3^N1HSO%=(Uf16+cs8wMIwCSpiJ`AH+bq$ zJRwFrrwVG7aSE46q@|P1v1BF|HbplUG5rVb95hYZ0NX_5DAXG2DvCvos;QlQ(03T# zU*oOKE*5=2vL<;+J0YUnXc8lMxyD`JkGjzNgPi%lSzU7V`4 zo6f*i#DFh-ZNn6zMi|mx%DjV!_tl;HNXxaEJEm~vM#D0U`0i|)zNP;F&PHE{ACi)W zmC}-&QqL7lBSKz9mPY`vHc_X%4nKC6ydgLJ&X)*m3{brwlZ+7tNcq&gxb_Q8uCt<4 ze~CJ<7+_>=qo0>EKU%BX<}%k*vOZtK5>~>XprGl+2g)g5EgDZUYS$nV{_!nsE;Qs) z{r!WV-5GSAw+#F$Mz$A&>~#Qtwc+uhey`Nesr(-X%h_@+wq)!B0KsR1w!aL(x^WCJ zW(u=4D~T~>Y)(&@zsiLt-Cd62!*zgJ?a#<=oKn|p;*@yzn2xWvXHk*WiIw9x%-I+| zkvM&y4;CI{tDsSL^&QmSuXU=M5v9+aY|60Ve=>1+GWJr)7%mw{Owq@GDhZyVqM#*( zl?;bnH1Lsk8p|)rRjS_AdX==5lQYx+9_k10GnaR1A=kkJhMtbHNuP~Z%_bq3Y4g4V zl5n1@MN5g}wF^Z-SzCuuMN1nJyF25W+MONY8h8*t3OSUYiubL2OCZwpvk~=qO-INm$Y%e@f z49$aP39)Y`sM5;JHq@XD5>;@)_L8R82U`gzcP_)W;1ua22;u2L%*NFBr0Oc3JZR?n zA?e?zey_Gq%6&)4IJZzUE-#yC>9al^f>+ljWNZjwm4d3CiK%AtYSAZ1Bpz5t+De}e zKwYgd9NQ5!YKF zXa4|6{{V-ySrazlxiV~Xrg^)jxn1xKmx5pzW-o_T)#dStBQ zTXI%($UQW~rNSDEsCjb*s1=ONutzFIOHsH9MTubz?Q7h2)wWHNt))DhLX@P0sZCsh zW@1tfDo;fD(T&i)Q{R{T!dAT{Kq<4P0K^gu1M|X=9R&34>Z{a78JY72PW0Q;9NUE8 zup{GHn+}H>z@wg-85x#3j6Nxml{TSe9fsXB<1g;!Os3pZE?((uN}(ulBy^lX>G#n> zE;9ry2SWg>0f|Xb;06bxo3p^`Z$hx@EaTN~oZxvTY}qDe`ZsJd4pfcgvkb=%!%Lvg0%{R^d6P6|cd1h}Z|svpjWF_?B420;I8v zFj>R8sI`T-C12A%^5!fm>cAmw;tr%b$-)eTs0?^Xl;UulK|6h{Wo$j%yhvUf3KS09 z3B<>g95&JyHTB!m26@XGlH_qG=w;9 zr(OjU*!KBl&jl*k(h>*-x1i!<0%z0!Fp4xz_2oARAUK?ODKoHfA38C8NcEM_NA!nD z&^)`;yiXa+6!nqPW{!;FQsvq#fmKZMRg_946p-Rc3Qr6>k>+GkxTrqm!xkI2ye&A> zFQL}LTvMQvATDQ68$#nrIFyx1fK1S_7dd;OP5{wXfPknv!f*v7lcP!T0SS;GOifn= zJumceTa}J2L($l9JZllEs>7tix?`K=^5l+|IVxa~IH_3Oo~8s(D5)`)09TDi(4~pWISsSSxL+Sl>AgGD4 zOcu1o^YKYF3N#{0WQtmtoY zP^7bTKv04TQLrSY1PlO5h!FuGn2I2Hr>ETCUzR7zm?v5&GX_ws#BjXCGW|={QPR(d z;aEda;q$sOIP+=f>l!q_*;ip>uO=+NILg&>E){N4=t_i$Bn2x{hS9Y`eCQ8xlx88V z33Vz&g9b(*K;U?ApqCuq#* z;H0L`^nJ~qeYBdTrpGef6@C)cHFzu)(#H)%HI$V?7+cI*fgx#W3+Q44a&2#=ZaCW7 zVbTtuW3To2(+=D`i4aGj{3t=A>Wg%Ttyz1h9Rtr;z6)EE@hEZZo11YeI=Y-jlCm}O zmab1Cnn-u0^|Wj>(MZ#YH;Z;Myw2I%XNm3?gcAlN9jPFLB4iOro6jz-ol4rpKy*&g z2Ld313}ZsxMfKHp2Ug{=w&XpNc4#lU$FSky)o`=!v8QUFTqLv@9lHmFKc(r^Nj$;_i7?lk` zIUWY3!)WSOp1v zBOU{bPS;e6btP8LEow+f5JE_l%%m8NA~b*mkY@~QUo=I6RYN6KPs+KI0$Cbak?J7!=`xtwzs*!F6H`doK&GP3hAA3R;KIAJ( zl0lGCp@<-lU59NMZiUWgm0u$1mNh9RVM&ycu!0WIN3h~5)W_mUo+vs)SJMnbCC!3m zd|4!*OaxC`I!8yp&REQNmz%jEGO&xwaK&sHt}c1+oBcDg&TKAGa2!}OsuG!2$?(Q1 z0~rJZFd)Fs9G~h*AC>*JmW4);B$5FDC`l4WK%JN!l`Eiq3g~aBdXA)Z6EAgAv!;1B zD%3S*WTwp+gf%$U6_(zno6W>#`ASMy>qRG-c~YJwYYT)LT^9XsJ@!#{#i!+gOQZx6 zH78aeAd!eCfsAqMfnR5tE>oRZIdm?R9Y|K7JTs*_e~_N zZ(Av)=+Q-CnW+PF7VVT!3;Sp1=WTt}^o!Uu+1_>mktBk8Bm?M!DwvC%d2iYHF zjpjLG(R>SPcuXNi6X5_9>Jk)_JP12TGC+&>leUG}=1Ddx)`s8`ppr?S5Y&?jPXI&- zlAJLr44sW4iN`XwJBvL`gn+3Y=>Zo>i=BI*>&4<j|PcX|I zyBa%<>NcC`Ig%NcU6xr}B`&lQ6mT)C#k3u!Bd3Ky7I}^J?ZHz{>L|tx3^sIa;nPX1 z?U=DHp5_>_?5<{(vjW6vaSST33UTsvG_liGDV8e5mw8DWVvt^e?``xf zV5E?7B0-UX5gjrp1H3tt_E#Fvd`VCv0f7*41R2Ky4FMfd&zXa(`L{527dPUqiRNr= zk?Zj&>8Pln-W2WI4FnNFi=~310m0T!liS$aBHfV)K!GHa9%PbzO#yR^^5XsVKI-LX zs1I-eQJ2JhO?1F?uQXs87o_wVPcvrBzn5|yTy-?#5~Ny;E9E4v#%XFQWZz9!RW&hU zs+&Sc>3zN68&1WuW#^4tT-}!#ZN<1C!n{%v+Jr)oka(S-8p!?q9n1M!B2>ps4j(=T(hM4#FJW>;6wOc{ z<#5$Vi?MPEJ{ouqNPDT+wU$!Ls4h71ab;yr5TXg-m;fa`2}l5N6&L6Ivfke*xI!8Y zq$Utm;)61xr4pmoO$hxg>Sh<#+~HA{bFcFJoi;Ur&4A@h$qdwZCKF9HJrfYMjUkR0 z#YdKkY97HGR?&$OhiHA7y^v*}o3QU62yrS}NG>l)J5Uk|m8NG%#EqK(GlynftXc04 zXl-*ai*UA-lr1Mh0RW#I;59@Aa6WZtd1_BV8D}hE*ghrdt1sgjrwB9u06E51Y;tHP zgwjNbK^!=B6GZ3C67HxH8-k^Ld5G8hzuE=c#c0W&N>#8!Vlka^rD_Hv!bEU5)?M3g zpJ&!7EiW@|!jBB<9bn8Z3U)*dTY9OUe0T8dNk2{2?6Zlx1(Z~-C7WpitEhE{%Klv; z9!ilN%M#mn9ZBNGcW1O9m^oFzKjO4~e(|?&RK*vse!Dv-{#tAgH5vCG*QXl))6-Wb zW4NAR$0;akHdE0|l7STo`CGa|#dpXx3#Pm}ebp$*q&a&)tO%hduMMijD`}yV2&%8a zkVKWT)#9;+i8o%>x!tAhe*90a4itU)Q#&y8p$YRPMn}SP6$TwG1_gxY3_hr;e9eJbgO)3}4|Ld(W|>=8E;gqUPj;OcTryl^5ssnYTNuktH_AsO zyA#Y8J57g&0-N8S-P&5byH<f)yMG13NZa_ z=x0r^?8AX({+eJozDD%zoa3vLqjmYZXfdp39-zVH7;SB5%~8Qi1cpk;X4FKYB(OKO z=8Upl)7NrdV@%w%Q>`SA*_EUyB}NmBV}QnDq@C;BTQ*kP>=2t*Bp{4R^x#z*lv5{x zJ0R>Li*^l1gJGD8S7KYI!eC&rJIHD1XEG^Iaxwa8W75ZHvD92&g6r(r=UFLCg&vGZ z`2*)bD{FS!a4A@%bl?xniet}N?u#}>f?zmKSi&;y7na_=De+til1M6RjbyRE`a{bj zmIxvOB~YrMoi0fza!jSmLbn#`)}_V@Ab}II0NXgsnlR0C=I&72X=w-uoKg&`dSsoP zA|jIbCQ-yQ43#or)Kbq+hlG~8wl8)naV+ahk1Jb6X&qAL+K@a)6y_PqEzv7Do*YgR zW3D9Ad3Bk6aG!4h=SGrmPZ+;Uu~xu(?SJapB}wpTf}mmP|sa?pvhS5i%#{qUmCz`B|xntvAX=^id0Apah4J3vOq)b z1wb!t0F?OcU-?zl>}fMCRp zkN^fGfJX=hPBa4EE%nNrwHCJ4!4O2QaZnrx;U*5#jKl*0SLt`9Io_wPxeFG8nC0vv zFV?}0RAUmZ7BbMvnogho#sZ9wjPb_&qoC z2gETUMI=%AvQro)Sfq}mA3TRW%Z4n>F;6+$eBs-h~N_t z1!X0!?moNJppWu$+NA9|jskeZ83!CjJ7fr6rgQ%QtInr%xXH@UmNklEc{T;19w%Qb`DgX7Yc z(p2HaQ-_4kDhB}^UCc6Pkl*F)UrTPFrAsC?8T)l$NfR&*6m{~>L+Jux`BMSLu-H1E z)GW6~uZ?CbxrE}-MO8SBR<>#yIx2zk@HLE#*Jf==+C9M%++XI;I^nhoZKaYzN|K@g z#03(c5gRrDJ@q16w|JJ4r`D7hf%XU|i6kq;ql5wg+2S~o+1JWEXQem=XH|VLVl>!Z z8Ivfck2v(oN+_`^8O>Df6&@i@*sC)vFjg3TY6*;if!?~I92{;{(^-rE0F=#Abvj0u z0*X!$RN8`YI+6~B2!bH(6->+dg_~fuWh5v80VYVp#FCglb}0f=BLlRUV!oof{{TT1 zHfid2Pb8(x)u#@}GQ#3`WiA1S;zGWF87iQfq8e!8ghXtwOsq*DT&>R}uk0pJ4|Q(r zHbQ}drKkj}0RWPtJQP3!py5aw-fN!Xdzn%pKXwGhGNlqkVh$wE8!@353(T1pH{lot zV8gSuPAi6FnPSa(v2x~9s;`cTs@7UZ`M03o6&2=kUaI2y>PG97ejXd zIZSIZD59*9WjL(aiB!iX_`cDlRsl=i?3OG;0g#OLk}NEnWHh}Xgq#FMfs9O$P8bcK z-~>)B<{gkdeSG!8o@}jhq2k9;S-_aX4!$F4m`UXf?dl8D{y&Uh9Y5*=Wa|98U0a6Y z7zJE%S5w1?MNsin5fwy?zG}%C{UKc&PzCvsj`j_^`@v|3uUXbyLP#URsEGnb!5BxO ztb4TWb3Dkd7R{rfAqr3_J~Yh1IPI9*$8AT?UZ=fjLhGX8P^ByBZi((CpPfLK} zM+S~cx1)-O=42ERL|R3TB#e@8v{)M*M7bZ+#^z<~N}9`?B_al?TnQ!sStDsD&WJNE z+PA6TNW0LYBT^EE)dOJEl!ZV%CMcrIlSXgN5Y%EAj96W6B_EqtNrU|UB~dFwPr7N} z=O?J1NoCm5$zfngAS#OqSx+X)))EqwBtVi9kTwCp0l-u{d2TOm%Z{#Avnn{LMC~M! zNhIwwCiJf+bgMn}Cn$8crcg`Ntl^sK zw*oodZDhJ;0-Krj<)q5 z3aG|%zel=R3svDVr3HOXSi{aF2bm|9k^_fEREF8^okMpAfqU$uFH>lG_Tmz;BfL6J z$%s+fIF1x4V|uTdb;c~MM4-XYH4F?)q+&V`8d-G*uepCU^j|GgE*Y9JT;GY-;q-ae zH&$kfSm-33BgK-smX8O+LXk&OvQapep?%kZmiCiCR!g|IY-g`6)ie2VsJ4L7Dubg+ zl(k{39e5}BR1XTaW4%t@StnMaqF|js3C3X{%z22Sv6r&`F_`g~YF7)y>#+PDKj(Rq z8=#?*x;QZKAcjfm5+#r#M653I5QnmRI z#Fb9nyJ$pehK5L2CY**aKqj@Y6 zyUw0^)eR|9l;U)O5@yqZtl3hFtj@4O06~qULB|Xxiu3K=PKs;55PUD^LlELxUs9Sr_u` zQmqV?u~F1iQ^v0o#}@4fu(_}V-`*Mxcv*d%sURIl7!Ex(Yb>BCL}^*u!(?;oQvU#} zOH)$u!yYk4!WwBqy(DSxTmZ;g*SITW?z;B?@R51yz}ka}E)XTX!c(S}g${bpOSOG{%gvVT`hB7e(fd&X{>24EN{Zq&Hv+c{3+Z^EO<;a{e!o<;0osoXLgZSda7gX2dJP51p??dPyOg zvKHJomW>EH1Hk_PX#1<1Gp6mAomw6V0VrD2-H;PL6qs00O1dDCQI1ENTHW0$)S(Gm zYE~)-ResK$o(4iA&VwEU6pH2V6BrnL6dS^^|er7cr{$YOgajw zFx8HXy!4KfB2zShRPA!Fb>Qc-4duAaH(8L$bd;w-Qt&ERBropqKv057@}RG1`=&BH z*G#4=MVxtE1~jM*4HpY=hH^x;i|tFpLK^ zVqY%>P9H%OGWp9=^zuVIqSCZ-4ZyL~_u-Y_Y00Jssw5x3B<(d2@(VilZ90uT>4*G(o=y?S51Lp@WD|YB5HDeB>0^_mORD+ zX$;Z?E&4v349m2uJ15I-C1gM{1_#LTjy)V`eY)M9 z-e246WTYx_24*@8Z0Yi#PdM}g6NenB7&B4P(y%k74MlZ9om>sB+NOY?hwiffl$1yK#(os0=;jledRLsX-f6_?ux#^}vgJ&5b$K5#l*BO1LY1ag zo}Nf?DrwvrZ+5bocQ4=pGf6F>1PqGT6)+bk)^IOTN)VEY#H$P{}A;Zz&23 z_5fRu-G=ShsgNGcE_H#7AAZ9^`-?2aE)t7mY2l3{Wc9n9mXMhJ68d+b*(y`~&B8;mPF7LF0Z*jmo9iMLMNI*i=peOHCk+M!c`a5?$ z%*?A&K%RjfTPQ5f{;9o3bw?#sNuIMs9%IS%>ro2g)me8die1x20~&gmFk8h?6?Z9( z!=a3;ljL?+J=-9q(T<&JnCk@0dErgmCo;HTI_53x)ucrA7>W1MQ_WdpG2_?{ zO~rE!ZA4fFRUK+%tWvfbm4dFGlBv?Apq-(PIee)Yq?-xbU=6!)de-o_sYy(d4kM%R zqL(risUbv&J39J!RD7UoFsj@>EUB4LMlgZ zvgRvG(wxDbYq2WqHxj1Avl>vzNl7$y(#0`a<-}=ZR`SeDC5-OY{KxCP?A$Q6*-f$m zbvn_d1v-)jB`N@L>%?_X;?H#R!m@kM5HLcBJYx`KZT1n>S-nMOZ^TETU1Ol=N2t!W z=ZwA8nhHEK4#To_ZfKgaNU1C7(WzCX!m8zfmyLk|nVV64cx!6T>b%R2CdoQe_i9eS z1dqFb95w-kI@PXbR@y`QyU({y!-)rg#zEUyJwxE0zI`+1vy?jZm^z1$Gc`G)im=z? zc&$WHO^MPPs(5Ft!>Z?jCz=?Gq)#AnqjuYBeV1A8^QK#}Z3-Adn+aC~uz+F+K1P>1 zjKQYTzWA2au}LzM1`Z<(4jy$QrCz$dYxKMMrF|z+vrb^baH_~Mj(Whlfk%tgVWLqR z#T5=Q=6Nik)}7T+-C4pneWu0PuIA*ADM0`-wWNt{dPMP3W@g=IoswbLoyhgUj>M;(13EsPpLOnPRWR zep(p3$fAZ85fv5;g_x3c*|tMxV)Kn#ElMRQBoi<^K?iOa0wV|jU^bSwvf*!AA=RWn zQqo8t!~#lz!-Ru4f>d!k0RY9a-gxPDU|a_=Rzrp2QsvAeshD;Xh+@=r5xy6WQBvbH zMwp4pEmKp~M#h;4l?DKWKzqOCWCSo0gE_*k5hzliD^3%E8+`{)1A)eYAIs3n;Xycw z#x_iQaQTT8b$vJfB7Uv9Wq@@DD|CMy$}~8B5tpm6{MG$o%ei6dTMNU)W@#dm6AEf- z5J(E3-t0FJrpJ*!_V!zpUR?`|qUx5i5f~??u8}(B6;{;=o4F zA|{QON;9Y8ONwMHV>{Ad*#{2DeN@Ud{-EeF9<1bko=+AvfMpy?mk5?@IxJfas!u&< z#-UV=kxPcS&~OO;>Tb=OiV0JpNLo^SYBE%!kQ1-&6FP!FqG#=)eU?!J`!RuqGrKQaH{u6^$QCCL?&By0WEOSw`(L`-1 zK2o*N=ulgduIQ%P=G|HWfJ#9kHf#`JpFT86oLjB60%IIV9`i{o(T-#clbC9-T5hFO zRpXV99Mu*1Qle_QNo6PICPK0RhjM~V?`7^|Z@c%ewiH=Lk+2a24V`=`6Svl_ zI8q%}qtIk@^>L>fjM-m9hhX0&)cMSnf(l#@2Ck>7TB@N?hBak(Sz;>|;d0UfTK3#Q z;c?xt6iTgt=^)@gf0Zu&VBiS}eB-bXWd83u^;RRFpjcX^=_@J(k;ep*!2>hzCN*Gz zAu0;Q-uJMLZEhDL-o+{~f+=!^@dFf`dFZIp=gjv_1|tR~1V)0sqAKYjig!qyhWV5( z5_b&BnuFiD?S43hthGv1L5SJ4w^yjT2wf9PuqT^NbfM-$D%(vHw#wzm5lseOZ$BAOmt{s44cxaAO zAtD+okLLzJ10)27`)7!<*8#G%0AQ~)uE(hTj0V=2woWp4*s z!huipTmu8Q7?_FT2^$Ha?+^9+U!OA$5ts3gPMtRC)*FmxxVq-q&bKGXxPBK?NkLBv zVDAnZk08V5Tsvb^#)o^%&Okcw5uEl*b}d59>yIt8DLPUcN|sh}RKOCMl!FNou+inG zXh66T+-ONaOsJ@Y!7837T8;&KV1a<7K4JVxdg))(d^(AyWSyo+*H*KZVe1D{bN>KVvsM|3#hZGk zCL^7*O&$>IhfyVEeREYy91#-ggWlY>?R~dB`7G|%Qr=USGiHYpq%s0RlqE(usvt=_ za08$U1Lkk4>Eh{WX(~>@U;rQhCU_0IdTK^Vs_GU>slqdE4Uw_*h7?+g8vI*YNhUEZ zGe#wJUwJ|j7&sx2+uj-z?+Pq)7S(Ly&EvET3{1}5pDH=ZSAAl%x|SRme-_L{MkAvi zIt~3n;yAV`U4iCoYNkrOYZ<7-aqMsBWHLQPO>IG*c9EnvcQP{)PNw?z;%uhHrczo# z8bUx3zzheKA>MZsLu(=ll1H5|()x_fxMxi8KAq*9r-J1uFv@IGFXl|;m8j>Y$MX#q zDOdBMF;!yzVC*>UicgVmeq&>7 z^DHQ(FAXY&c1*t<(fo{ghLyLvm}=mXLP9F-A+^zUzimkG$w4<0jx`vsE&~lh zm}bDKX^|KC(zt&!%2@XgD#bzEQsUPF-a7H_`jRTqAZ@NR_;moCT1;V!$0Ep(NUZ2c zO~&Ak-wrq)GfbOwbkdRxC`*B3xSbq}TTg+@6f(??iy$?gXOu(?{$Y)Lv$>T>T`on( zH~HvTK_*O*>9-x6X;XGm+Lj1}#QN;RZx2p1$%d{sS0mCba){$)d1R&+LZjXU0=in- z_O1!IMmbWS`Lt|+bMDSs) zJgnA{lYEMocpnRJhU+oXCs?69otRl5wIq%dG}q-wa6A~)U}A$2%vhxk6!h12FT2rWH5{JDw-k9a#B*WMt+?^$Bwk|0MM%X;XG+^1MIAt%M!th*5qYj2&GLC9Vtahug3=}Zaa9v2^E2}Fz zm|D^lcFj9&d3kOM5TXXi=%&b|#2RXP_pfPdVjF21sf#+;SSpe%0Q$JU`1B_Ei zZPH|%X={}FW0~_b^+tyaV6d!G&QM(1Vye0wdk}t(1~a|#va?7FUfK6h!*}-=GRz4q zv`j?$?4wbcy*Xx%k#xT#^@le_1UWl9wNmAGrKqQQs_G~!W}=!0iZWdt9tPZ5c7?GG zb8bcKZ`jQ5jhi6riI^}4OziXqXM|%?tAV-!Y?CYE6yWBw?P-v;(ky2uqto0O5XRY4#Wncqo1l*7aIv;27 z2ZIdJ*BWGZm=3y+7%6$;q?u923R>d17aPN~1zrJ)(Mv~;P>{8FXbS8MkqJ;<25?CY z;i%yvGp5qcutt-|~W8@S`!({)FK0W$ed6nrN`xR~f{lpvUmsezHoq zDzI8=HmO$&`gq_->I|yVd66@N8hK?d;iC=a?Ip#jJ;GF!i3g6NV*ogw8)I!to4481 zNNq*(l_|b-TUT$F?yvX3m71haKy@nΝtdxPDieMtUI@5@>cRD+7d4?s>lF*|2v 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%0A$4dqxaWS{&LIyiLw=f*L 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Ξp0%mIN;3PFnw%dm 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

    muqJd@YqRFR8S z-8{82ogJ7nmboP8H9BxY=5p%WJ?Ye<1RjiWkA*PP0!EJr;yP%pdauPJ%UKUERAFc; zWUjAzNQ#AIRFaj6ARTOWfC;zJ!LMbONxjTgm7EfZ_lhgty!Fhw*(*lX8243uWv-y+ zY_Fek?rp#^YP=U3!RDr|qs4IQiK(g}Xe11LxgtB0QK4HA%!thQX4dB|cG=V=NKhbx z0R~49a6Yp%0LZ&TytU05yKTiKX(JFw!f_aIBMP>xq3cgN)KybpVyXj8SuAz9^q8F{ z8(7mvB1n9}=SL6emE_)xvMXE>eMsgXX5EupHiGF%k%C~UF%gCY_+UW<5ymU0Ss&EG za~r1GLUiH^zSDsRr${DX#Ep?mePZ=Iao?Z9aeTQwOtlRpSZ-=71tikbkXc$vT6@QJ z-Ecz^2A4J#Q@Wj<=>cuHkOWFGAReV0aq^BZIHm0qw$vmz!;CM*f>$6&>Cy=tdVOlY zvx8-9&yChp;TSZO)b(o}TStl@FHI+xst1M9N-^!Y?zO(WhuzfP+1n*9ED|ul?H)vJ z^1`rpd=+7Pc()jAr7Ff1v>u5NBcgGNM#Vvc;DZmV!Ld4s@#>{0(BZDh3}lPw=EaE? z76RW-1aDkC_)=X+Esl|m0g%IX#3u`vn9NRNr@C)q$XA6c<{6BB9aN6k!P zH0Xr+i}r=zQ>g@8a#d%u%XI;$ah;y($2-2#U({nCT7y^CoZDZCQesQ8ifS^(jU)37 zjG%_xcW6qFs@CA9({ikkjXH2UXf1KR*DGG3!kzM`TO`0_YHVW%71R?5pDBK6KAGMQ2L- zyG`lmHD!6uX2A1~al~q=V>GcuDW#+N!5vX~WsX8U@IeCFcH~!__HAWhWjA)Jy-LQF zB?%KG$WTm(0Q6L)ySv!tX?%N|l-j8>pr=$|frgz>WRcT>tazVUWs|MB3YLa=S1ngj z$tEErP{+DC#8XEY5;mnap4Zw(6E)eZV<&yZAwlqbIPk-U$@kJ%H=q2yv?V~Gj89%X zXi3QVilUdPU0JKB#44W%#bbh|jyjnOQ^z0#7KIhTR_-+eQs<;SX{*m!$1~w_!B0y?hplL#l8Oc|C(BC|V|gq?mjs*NLF4Tv z-aX4rjk9h7N|h5mV9}=UZ+hLpL5$Bd)DItieo9GJ-bhm&(zLz(deXCXraV|7c2q7d85^xhH zwY#j^UR=3$lqn7c83j@aR?`qDZO5>@t&L(4;klnDVYrE@iRvPJR)Q*%AW#&RXNEum z-~4ws)3*SY+0Dxsw&Ky`qCL_+6e_s0w^@e}lRYASR93p->8~tf)HoFVGU=@y6?~J_ zQ{&=-qDnH+tY~5(Wp!P}nER?NZc00s+NH(2%KYoS>ea;Y>n$M5wBVd{B|LIZG(`c9Ic6Lx)1221TZ=VQ z;?mYorZSaLLg=WiE5otuTn7x7x3G=~_dkEeZ)~T#qKzuk5)9xB`{;*wcW?3!hV_L? zXQR@CyhEiKqX@z^^mHu3_T#K!*=1d6m`nvgqBwqA#bkN zxH^J8yv4oqY+UBo3PIEgrw<`n8M`j`IZHZ(5F;NmLjH5Ez_47An6X@63jTS6&`{IW z<5&b+U20*dO;iaB20rjMJ{|4C8w*F4`Vxg{Q8*rhM>&N|t zr1%ib_if0JqGaG_r*BWT zkgNH7_6YA2rIQdb5weBhdWMjdhZ%FXH_)%uwbooZ*<&HWX>GEKEH# z>kN_JmRV#XIMgg|2~%a%@+dpR_FRj$Teb>I?Uby7tP_loaRX^M)Q@$Qw|woht~xqC8SQP|loRTcEBBiQ0j(zk5yv{&E zXMyM4LB0o%VOSn+sjTyUc7~)+H6VNgaE8~4tq3KRNT`m(tk+E#ps|Eo+AzO-4P_%fhSq^CF zVU9q5OOViBP)BLYX996h&OHfzUR8JJK)y^uYmFRXwP$NMoks8WLK^bNH z!rkNQXf&k4XBq111CIiJFgR)VgOF2)Ps`4YN1$KB<1Bi`=x?a7zC%P}zu8dWki=V&Hu-P0#g29PHrq;*-1m@75=N=S z-~iGG5=r5($vI;d!!JY5rBb&vN>0pMOcA8XA;PVr1Q8g>t^WX6-9O8Im;Fg~W7GaA zi^H3y>Bc1%3Ns?%pCuhwl8!pzD5rL2OA4S0l6zcoL+r~ixzF-OGX~`$&`fG4Vv2eJ z{vIG6kwKm1a?;N6OsHWAB0xWKLa~f6o)qiSZ&lrS>4MT@9U$vQV#?+iUk{3^8v2%s z6nd&DSVk&$tV(60fzI1qqEGNGkmoyrl{&Qt?a&lRCr^Z!k|#_OM3|Y0Cygx2?p#w^ z&YDth#+l`br`yj#5dMfJ(s^tnWfD5H6B-_=_#$M!5Y3bgAT*!X(Os?he-*q zSm|IbBe4f+Gbug6S6z?p>h1!Zkmq<8_rZx#2#h~wB!B<}2>`_ka=quwS!9M0;m2YL z@en0aKZ_ZOjCN5ouFrV3YU+k1)b6EBx$hLs81$LnsB0q0O4zK`ScJ9J{&K_-V|mNS z7$8ukv;y3do6AEPV70U*u!i&?&aE(*Nt20;4kVKp&{ZxZ-G^OBP}B;9M1XM-!we&Z z8r9AogY&k2>mDnbdL^3rRg|-heh)83@E(=o;#J9%DvB{NDq>Mo3g(&DbV|+cD;qVy zustmAUA3zrw_17BrFzPw1uA?Iw1lK!WXT{CG$vs=8_%q|7L<}BN)~qnl6azND3Vo4 zpop|?5=RUOl!gjNX1%yBb9$~`M35#r4&HcCLtCE9G8<8uJ5n2}CIGLNvUoChM&MaNc zZIx+xq_E(H>5!}lAb?~@*I262;tJsbobw5{onsCwF! z>IM3=vq`uUw19Vm za+2EGa@ofgq^LNw@=(VKH5rzx%XX4N zRwPoPw-RK})Rywwytb|o)a*&pr0rG4neh{X83dRBnT!a4wa;RCK`GI$5BJ?kJsV{} zM_)*SUpj&KeRTf-8KB76*F`#&SB62EE2qjB-5*&6H7du8CTh%B0zEYJ3d$*xEC@8O zC=I!dhTC#Q-Jhsi=2qi*n*nMG3k95fIvZ9YM->v_h~Oivg|m*tt=)xLJE1y?VR*>} zLx98WJv%11yJv>lOpVFR6k#pT zvyRG4N7G#AELg=t5WYx0zHtAkh$r&#Q>i#)|{{UMv&T5+! z!m{QU#Um|qJ1pts)Y`uTZk7v0;k5LRS(%CQ5ifw4ZP z0a+2*ZtJmcYMaFkZn>x@53~$DC#TS2Xcg=3HA5CPnPbCoBa34Bg0fs|Gh<>liaM&9 zWoaBNJJ81(yB{qI`=i=T_&w~K^DbE-Zh)51G@x++Y%|23CyfO+;l|r}XhGDa8ByR* zL~xD*isTe;8=0!nRoh7D-`qk1{iEF9vE<0Bf+{&nJWU_p!{^jKdFUQ;>Z5d*D%NJ+ zv~`CsFGspHM}gx74r5=`UgX;6_Ez7VbT?^k=X&WT zJOK&>1Hh6;r(H^&m}f6o+&SDQQ?4gUL}4=^o}stnML($d9>1o&LFxxiv%b@uGFB^D zm9hT-B7Zd#5vP>LR~o#2>#DktSQ`>9E;ZzXySvKHWtZFCTTgQ80+S*Rk~}gFBMt{1 znnRl8=GN)fo;sG55J)%^#)68tk`J0$DGNy%*hITWm!Rxe7Wz%cehL`4)CM#kdfW-Z zhP=(`Z!+Z%NEu(%emh?UE???CYHprnd=Oa4SsgV!T$NRf>ce6rwBA~+uE%jU0B#0l zU8!5$?_;?eXeDg5-Yr}KB`}_|21(hlbis}0=P9h1UzLv%^nulmGwHI3e9bdXsF6z? zvF~MMYX{Wa+WOddc=Boy6ahjiYHGHn#dWp$*r&$Q1KajEY)zs&xV-v`&_`o4_L8)9~Z{*BbI) z6yHgW(PC0gu&8E(N{F_d*0Uhg1ATem)jEriL{?!9BPW#5m}8KUD%q{Oad1E*QGIyI zkre7zQfcVnK1@(f@%9nip$B`8_wG)oi5)RdBN};p3br{Tb;TMcl@zpc*z7yW(Dv=8 z*TjP8R?7;m4M~_6&0#E6s8xK%P(p#Y0CcyA9k`%eq-~}P3MXYjYOHPp`bs^~o2-*> zItB$U2amdLLDt-|t`J5Bn@cJOWm$Kre^mHKTV^K*a z9A%W$t5-u5l*UG!-Z-Qxq-k?$!@Y+yN4fNcvkY92T4Kk5r>6DDkEt~CU{ic zzT4#0`z)oe2nY!xLD}X39UDy-d~XzG>0VimuAGH>xhb&}U=buTNFR6vixzD_wu~=f zer7eBzq1t(xUT@E9S#MS^9M(;e6g4+gfw`ieB&o$(jP5p>Ru&bz5f7qDToOmzqr;n z(^E9Y(@m75wWOaaNMf{@reMSBF=~hzdY{u(Y8=^zRDx#2aH@4MEo&;@bkvcMlb-H@ zWFKc=At_35>7u97R3x7erpnyTdWnb7QsZ<~*pxXtgDxq^<93 z`#7q}kO?U}XomgbpfzI~DG^nJ;IOlY!&iAyj-&uAMZxcT4;yy3vxdoRaWo%!L>ww3 zj4>FgrwT=hRa9UJ7b5o;=Zh`Td2!1B)JA9T!jskIZC*1$mauG@))}$|bTs&P^#e9j z;WcejJ`qb@6p>M8rNWp7hNdu7$WH5zVLal?GyJjjq^9X83lrkN5k92B82EP9Sl({) z$wE}(NZLjUFhL_~K^!__wvqH<)2_XAhogRa6AS4^e+fP;4K(ss$xRtqC$17lByq-L zj4ju52hl(WzatAvM_vj-TMAJTB;cKdne>V;dGxfDsY-x7{ZvnVQ(_dEhow+skU}XV z!!ZhaiaK>!6~LV)jCp~q2npM6pTmRB$C9=))ii&J3Z6R(P9D895A6x`JC_BH3K8o& zYP4FirD1kiSh_1DVl~rg)43y4?HtQK zg}k&9ylghHD)zno(WU!*K-YP46iS;&M3Fe-g!+2ap=+JGlmxo6xCSH`69*1Hl$WfE zu7E8*F5e_w4MZ_j5`e;7?IbY2ZExZa(ZjoCA>3N=aKom9*LOt%98`JqP>IrvYoc8@ z>Q+O|oniUR@6-GZYcYznr-*>jzEn&ZlLb zm1FW`%(d2BK3uQVT6%S-5@L8oOzBZQERJIR95Os;Sz`d5qj5YEZdT~Kl%vAxj-+W) zW>BmM1f<9+NGC#%i4t^?CWyys*VgHA3~32joKlq#VM&o90n()aK#?*G<3%oPLWwIU zbeNW^CFJ`uqbbyzvWpKLcsym0kpN*)OZSAD&qJLlaMy$`S*65iBXDY?uaV;OBOqNa zr*eiPQ{LUJ;9}C!k@kuzb=4ELlGwf@Pl#g`6;$|IWy~eK&m#w-d8$$bYiP1mNY2;) z09mx~=8R83q~$dS4TiFzp@s;WS!Hi<00AY1n!%05t?UDqY#oBMu^7_hEa13hO-)D7 z&$+42>7i!a03+SG+6J2FIJJh7PA00S2=c7i$K~r_!?5fgKO@O^jFDv$KA!KpUDbk^FDnI4# zEh$pyJ;1uLw`lutC7*6PFWPra_+ZHBp+--IQsp-1m z9&K8Y4jEI2oFEsI+*WsXPY}g1Np=5W^{rVTw{j^l3+jRQ#EaSe21M zeWaUQo8I7^46?nzV&f}?HZ|#zc*zqW#UsAnhtqskmH2gFI6&bPYcmH{F`U1ha9p)U zw3Fc3hInwyMq26W1w>QM>9t~IJ4p!JfI1s}T!-@Q-wxWk;VKG1m;gip$Bx`6b$h%D zZs`pq0+nE7nFRE3r@ZCWOb;mIxlaJZaN4OP%>HB;eO?{qDnbPDz@^eg1dY#f7UWp* z?4NX>zGc<75Z>A2fjE09+|NI1+0-FZE7=}#SaW7+$T%#p(r0R_dU1=^PljRQzLjcW zCOyo3`683U$F{x)Q1(NSU)%+LSS!LL!H+H?shQteH68Q~Mg)oZ8tXE2@2B|1B@$w^ z6qHd!t%TuHt1UcmdCt`)IDDx#mANcH0N>kt@kNGbddVtnYLkiMJS6-pcR6LUzzawK zU^sQaq<(zKc;+k9Y4R3UD~8WaJqy8#Jn~5C6)97(+Q9vg0oLI0%%41N-uJ(KI`+uG zZLMF~Ez4fzv!)~6Su?-$O8%8*oVc{|PmBKmCx(Q}RU++or$M=kwx|xmZ>8CO2H8m92J2bP4G_2&6BoKVS z1+ERi@!*pvb%ke3Q6ME+qHr8P3MI_jS;`QAJVG{l(Uq&}Oc+N{Jt^W}I8fmks|vld#708TJv4AWJDPm{3BcP?iRmu3kdrmT*6@NC;#4MIkwikfy)8^gOPWdoSn zH+|bp-nlNI9Z*uRByDdA{t^xZ5z`VXPRz5Qw{)d&phTv40k$~JR(IkTnDX~dzY`v? zRATvtn*yL*ZjuIv88(GJb1mW1mNyz*oO{5JVbg-lhbFqY$U+-vsaj_ZxGh+FIC|4r zDuB#cxN$%vfHB$jfytp-gQj^BwvRCN4jM`v#h7u(#eNlt<{HPuJo*`9x}`g_%8H>? zc9l2xbkn#o{pY-Cv2ETIAv;1woJUB&ljl;cw(MCOuK2VR;<%h}=o2tJt6aXM<_cBG zv|+Hid@l}%by_kp0qQ4@d#c54BMrLW5vMu@k=Z<}nAB8$L$9W=XFhodwg*T^`JNHc zM2|FM@nS7UM?(UL;U;gLj1clO62)5m>~tRvOxb;xcO;W0qD#BNxBy@&pAN!js+Lj< z0XEk)A-}{1fLM01)Ns;^@jNMOhETzP(bmr~+zbXfRt^D;#Hic7;jWrniCvOKIEK>% zkwU*p@i_46oLM51^f;XGg^qWOBxHm(B%5h}uj=4Cd98cIr1Vg~c5VYYfc_|TFIHK~n@x21*+ASS$BNWarvdP!>nKPvOrul-vuTWCh8b6C_HF7xV5J2nVh@R1OkgyD zf=1Ag1kq^BT~o+iPxYIcI>%c>@|`))JyM^kwRkpbf(A&i97i<1B_vgl#Pciv0Her6 z(XQn>fpN(ttd8=_bj6xa`ARLc0+N34+zloH`@YkM4V4|Ubcgd)te9-AJ75R|0#BaP zR`=>0ei|KJ^_S@%2Fe+0DB;}=%oTa=9;!>zips18n;BNaB9{RbVuZmZ1Df#gpenxU zyL-0_j~j(|z7`w3nl9l_3x0Jt)Q#m74zeI$Gy>0ZE$;>F3E;luwp$@PO%m95$ay7m0QuA7;?>KJRbi@uu&6NU zF={%vh2naVO|+vmi)*&TTKC~{*#(fV;?x9nPTDh7+lhRlJRt;w!eeJmFyUQMmlCLG zh91Muu9VJ1-ahi-SMw5KrRFc3X zjMW)}u~KfT$gDmi+Brq;=D5^=W28?A{702M-hPlwD35m;{b@;ubw?bctE8I@&6Q8` zK4v9BdXu&qiC~^rl@ZR(#!9K2n-WX0?n&prvo`9TZ45*lIAMhJct@~wQkJuWJ{6oX z+r|z)c$4aB9=Sscshr0RbxjOXNVM_61wfTzMwrLFgn_&Ug8u-Q2QBX#sKG!VN+(|L zGOx6#de0i=m+;)rm2qgXYzH_sEn2CXZ=9uuSfv7-mAWw~#1|oMx*bNM;IlQ(t*%p{ z#-w!}nEPoxzDD~h)Q2(a1EQDoy+hBqcTF+AoyCfZstm*{=_|0v8R_X|k?1M#wU<^x zWGfOW-b&i$+MWfJ#fq=da6ttmLE3)eubHLkUFs~9z%msejey`2@*8lXYg3Z*Wj#2j zsL9V(>VPvrBodt|)d?z_joFp8zkd!)R=dS$zxD5Iiiz(xZs|YkB>6$4re%g~FA9!W za>Vo)n$*gy^H9wj`3wfYOQ2Dx@84buY}VU@2LbXl56oI|vHi@CFnMEH!e7JD-%Qhbm^82Gjz+Rc_xy4$JA_QREHF&!;$2cd`i7xjtW&(0^g*4pmw?7 z1zW=FDSqPMgfM_eCkP3dC(?wrc`~jR+bt(ksxciT#8KR&>4s(eF}lCd9-(z2WuK}Q z7%p$cvnEf>e+DzA;ZY=qIqz`VlKs+m^P0FElMYXoMf%rEW`3z}48f>fb|b;%Js0N6>wv9l%tM$BAEp=3M``Vpb%HF=|uwn?*+kv6PurXWgp(2zm4m-z8d<;5rO2Td|A9|B1KU5;E4yg0)0zxpT3Ue{YE(42ik=B$`I>5!48kW94dfHr#DYHVKAUxLq-$Oj-7;o@ z64O-SEm07EHbD}GCw8EzjGG?XTaSKK&Wc8>kT%o`YU%LG*+9 zQ^yrd_$~o0JoR)^(^0AUxn-(x9I{J&(ZtWWP!4kT>$BbOvCZCEi_NrNTY$9S*r#L# z4PRhNK`GKqDL@cR)@I}z!INBCCsLbQfEXx7#Eb-k(Gmz0Xz}Vl!NaOq#tIBC)1>)d zCE_`RqraR7rb|=GSy>A*03-}EzZ>0`thioz2})-| zn{{dcH!up??$*3#6@XNew90AcH(tW>-%0M=SpaHCN=BfVp9$3pUMFM?f-tJs^@-^N z)22-5_BGUQi&bJ6R%FYtWUNN71H|##Y*HDhF|3P6j8)Zqs>dxvVe6_HRg9%0v5e}s z62E4BxaYUI<5qWxN||v_Br8Ue6o-_Ar&b9*1nP*A2tHxW>g=Z~86)?W!Dw-)Fi9Y$ zc!EioBOQ_nz*R@(e6^XX@^(F(;K8PsC*W0dd21NPOQ)3$UL>PftaeD$Fxo~V0Bamml)kG~+ytKO1Oj>rralxmXWZF} zWBoYktzIu&ahj|e2(kfpD2UgwN|PFqhSDDNV%QbjCGNgnpVZY^-b zO*@ruF8f>M58I{Woi8s$^ccc@U{I5F_c{FH*5I@EGM#XEiNsG(lR?zA7``=?ur8+I zQ~v-h>R(UK%i<|6@h%}jNKz3q25){y6~t35wT{=lwH|~4KnFCg5Ag~Oq?(O<$tWO; z52un>tQ1P6VU9^R7T6oxyFxrI^zma(K%zHTMD3=$Rz*^k5=>ia0J4(6l_0gOLF{<& zbySUP1G144W{f@;Xy&L9N~iRZ?Oh4f_vK5f>83l1|JAd+h3g+6(shrheILzG;hiVy zUSa;P=M1%z*AkMy2gayta0*%_Y6`jIjT&JkD@N4E-Wx$e;GMiu%<@Oom$i3nlBNcv zn8!&9CJ2*(20_`3VO_X8W8tO=B~uMMOp!VRzGg*5b<~hG;busig_MT16%&9H!xItEF+Bo}?lSh4(Jla_ z{{Vdl<5l0Adhyl1q55u!X9zI7`A=PxYjNySeBp*+Uq6S|MVG27)}oqxI+~89=V`&V z`C8Yz0xqOwYo8!yL8R#cE`*31MzA1}zzlJjq8psCDQ!!F3{KMPO+4@oiAMSff!gAPhi$Xm{3K4nPVW-5Cnh#mZHIWea7ZWBO2(ose; z(_ccde!uloCiM3Y#Gu0E%$SWP8BLF7X&RRc!(x(khvsW46(kVS#lLjTuef4rRrvL#j{-|9sOLxs^*x{VKhbXZ)#LvZT5UEt|thZC>+61^z$)fdWO0CT9K}&OZVkP+Gdlen&?qu z6yiCesgdD~t47hYEv~=5EJxH29Yx9sriQ4m3~M*xK-AOJyfefeo*Jv|a3n&cqo$yc zc=vePusDi+rL87G#-U4zROvX1$%w}0F66yyl%Rb zrD~lg3RiVwt9br$%Xmf^9aL3KhS&V`n}KVu%CuG^aXNx^Ki*H1Zf%{5>RVuqNsoNd z)@!}bU9^-aj12pza;xg~Zf(M0!s%vQGPW7%9M9&;k)I_+mwH%@*B1oZ<6cCU9h-}1 zRI%bo2M8R03LYbTzcAQLX&{b0AB_t+ZcJyXFNXAsBIA_!e^YaWv>6X8PhD1&5e#Cc zq*2EtwKY3qiZac1k;njQcniASrC6WMKHS@+>O6cs5$i&0eBCz*47R9r;5O~)z)!Ou zTH)8#>KCM}FBR#xQ0TDSSE_juvk$^^MGP2?CNDTnDF7`?3DZ4bPo(jyMf9uchbHt-)OSg8&T`9A;@E_VS(x&EYNTco z;lDdWSA^98G!sWSj#^ZbHbo~!1%2QTG3$HxKK|n=xxKeo(2x?eOa*{KfauzG;pY`I zSZ9`vUbAHCd}@^?Pz-Gxe7Xpt%lNfY4ypRq>V{^?_>*JUZXsEL$AIE^#aEtdV*W{n zQu%&+s4_e<$K{q`dkeO_8TL7yCf_JRosblj6U2;Fx2TV8EW5t$T@4h23K1A2?ASPC z!-X9$OnG>8qXftOJm>5xtY)v})m=-j#Oh<2aC!;9mMmr(WHA$HmL~>H)-q|gLC9Zz zQpRWznKIzfs5S@jk*Z{w>ljAPH8&mRTbH4(?@0+8Fi%DpRr%@9{c-0gv>Q~(?2@P>^;qm@F zx{@l|jV5HorK)G7l|;)Vts7Fu?%fT+x$x`{5~xyutSM!KW0BzV)J$Pt^r;cjnvPQ5 zQ$(V`k_GQ;ci~m#mv{i0Uukv`jSVz)2~`SAEJJK)5;L^Nbu8D^{{V`{`V+4L7gnVt z(ernJic;Vec(p{24j&xz`J1ZK52IP+W_Xp0Nwx*Ol~~;P4~GMH?Y4m{f!1T^MwTzF zW)ml8x&rdWf3b&qyUpz{zSxk2ew1N$Z z()>5OwRvd;I}Y3rMiJ{ut!@yNWAUZVNX76;^LAaQ%$`iSR-(3smoUvNrZALdrZuRM zUN3ksh!ddtJUATBZ7x%0;bKFfDk;PGpy?2L=;JQBY`l=T&`1ZUPA3kkg^K1nI-KpA zDe~1Rq{(vCVv^;gt!a0y7^#1iMwPwhVGF3-ZcVOFbHzDcTIy^XFREYCopG~Nc%X2` zaIHC*g8ITgxyqx;aQ9Yc#i|xaWt|dNowTro6$M z1ua+03GPTlf6)f95eNp0Yi+RZJT=#bHkmS1CYygbDKT8)&P`J)nS#|r<_M+{KaqWs z2Dw5mPL~>5{M(s42nLq1p2_hE_ffa$pQf(0^=G7bk5}?8Ql`v#69#-w4aMBzxNSXM zJ7CyURrNBo6UiHxqmEne>`%Hq>kdP^)!J@Nl;)!^xp7H-K?DGW5Ot`fB0xBjBjbfg zxi;@!Us?C;OdgIeN-j~N1Wa7t3MwJB)GpvZOK%+fpkwmpex7FZJ7lB&O{r#FG>lShQI1pMOg1-aqZOwR{#j2HpE$Ht5qX|sKvi~{m36<_ zVh?ekv9}8@(X1E(XQQvGmLX0ci6$ebtFEV3W(rvGJR**Z7d7-a&1Fq3FvOq&c%X`@ z9wwQfVxgIK?hDxH3Gc$;mFr51lLP^<;W5H$>&(hjk*Y$8^b^J_tP3#WxtB7oRlsn0 zajZrcTT@ znilg$OX?p^>nbpe@zadOlJPns(Nw)}8=>pen41aIfNxeXLP`Fk~h8*i?<4h=i_<55!E=&L#OS6e~p z!!YIFTK!z8qsA$)S~;=qo!}2EOIe8GQDXHtJ4GZ#50=2tO}6IX5Z^{7_UnCdyhHmx zm!Rt|0OF&<5)hSxGl=mfdSHskzQ*nBvV^&t->wnekbpkor4o|>jj#-3gyTT2a`hB_ zLHdM#qV;BE@+#>utXBo5iHg(V6*1CQ;xusV)J+(yWO=s&WB{(0un^_Fn}26=BW-30 zR-^?UE0UC`^&J3f4Oxv_0p62O(wQ0d+3cy_tfZ%sHv&@c%9BvTAB}C#vWhV`ot89sa zIMLoydtef#(%~w0RFF0mLEE?O_;gUAfO>exdY^-448ut((&g*|zb)a}^E%aqj-HmU z9K>mGdU|SbLYZ8A$C>4idtx&Z2Lfu}_VVkNnLl#Fo!T~%5S1-TS3vN@oFsrK@B223 zlqphhDb#jiNK6bm{{UP?8yxxgUSpY4KjOVO>8DgOzgKa5D!zOQiSVka=x3~WD{&e~ z_9VhsRLHn%u~(YIdg?{U12y#o+M83?EjZI-9Z(dAgdISLQ6IDrLS(_%aG}0S*#7|L zm{QW}8&W_zR!C8w;SdO&po6kHDy=%1m9mxkDo0z|=k=Wk%m zgU-biVHb2e+AG8xgXxq`8jT!%)Pe zfwnW9g*>s`leFqI@9gG^YNd3U`D&T#8aPqOP~F%9pxthM$O7LUS+}Zw&&a^?$0n&dnrdx)Ld4W26MDaa9u3rk9~J` zZy$#XRl95+6lyn_)YBFC6RWPkIaTQ+SePASXho1FLE;1 zGeqVJZf+7F88~1>#=u~aBN!xcuO02aMS`rt;guO8I_GZPpcv{DFXQ;6RJ}UOl~t~> z;?&U8QprbHStO}rBE+BpxLH+B@=m&Vo(^qLkfJCy`{1+;;wU1At6B2~iVQCZ%#-1? zgv=n0j-qJLB+0TxQ5zr|)SH2QJNMy(xqZ8ltpQl^0PLdMeCF+tbS+8Su#vZJ%HxM- ztlWHzPD;m;k}@__mvor}D1o+(!0HCmZua4dWC^0dbZ4%Wlygdo9$n0#Rmwg0F70i8 z;E`>3%9ceaLQ<-WjN(#=;ffS36;jCpUDtX51*{IB5XSsSImU$nX?I0DbNo=BA)(UP9Zh_*476E^#*XfN;#-9 zn4rTM<9RU0#AdBjjvFfo9<-Sho7{WE505eXFzj;P;Up>3s~8{z`#`|Z;BVF7UZnU( zM3d|%8n+IM{vILrT*@Gdy%;$ruW($r6G|00GH2FSyUF ztsDH_Un(k4R7grdjVBFTal&>AjWdU`=dM-xYpF;A4-$Coic#Pmm)oa3cFI^sRx@1= zRHaN_3@a9?uSBY9arzk@$|#j?7F|I*l;2IjfoWyZG>4}m0*RTvWx za2OHPalMY`Fy3t2S9b|*G9=(*0DQRdIC0rZA6@+`>Bmnx&zmp~i}eE!>Ss!$`Fb3+ z)O;q9so|`OFVe|Zu&VhRnab@V;3mA0>@6~@OQCCI`tDE=h3YB<%F`tVHk9!gMA2tx z84DIqpfciA6oiri3eut^q^UjjhT7JAInh(h=><8820Byus_ z6>0!RxYF&Xj}PATAwE?X`ZL`-nP{r}nh$0h6(d$dA}db{R5WrGM?+y@ad1J7F?7yo zmsGI3QiY_WNhB=Bg~(9BILO&BPROI}%)QAw$h|}X#Db|DL;{nj{{RUl0f_`qOM~?P z0H^&y&5>oSsg5lzUL`Wn;O&~cnpmfmBxi!E86~8Gc4&a}Y1Tqo);1?_`p?6L=yF7wp%sp5diFvj zAQ^1NH3e)t17Txh^m4($Ot_&;ujWL|W~W&liElC%A(W}`Q>DeOc<@ytH9k2h%Db|$ zm5>04%@HKr0590R#jMnxV?qRxnbB?cyoQ_C}=^Yboq}J z!+fbI>h{#r1Yxzxz3-tWGo_BB`gqiZU_~zvsV4(V?1|Q_^V59qlDe0LVzZ_{mN7ak z+eK9sMDWyn)df=3AxV&zjF(Tgr*Jxs6lWPdz4fEE&Ln7BN_KRPj;b@uv&XG&5b{iv zkbL8(&Xj$0^&ix4QhA>=XRfH@b$OdL=9%ehaeQ+cb0uWM4y20@rB{>P^9)cxkp@2T z3vx*$@vYn4s~n!yyK7WwLM9`ul6KD0Nsb&V+3xV%W=}20cBt?G3@{J`4rY+KBQ?c_ zWqMjil1OC2@mR4$+a2U8vWcu%>)k)Mj^_4()tM71BW*L4-Kn;~7(#)gagjYs*&;s*mU4~wLz$(! z?t|b2W6)>uqc_(cp;2dEq%Lou%k^!Qa|HBt?Okw_Qv0;A`RnqxQp_N7cIjd?1Pekt zos+KDFH;UUkn>=O+7I1^K4Wh|sfq0Q2JyA`YEvd8?2VY=w_%zxxudOpQ0eY`exc^R zp;l*(m)6i!U>Q(il~OH0psk~c(Kc++7Nt0e)Qq^F77 ze#_ch2GF&MI+4zvZr^yT7K^`rkv@XCxxB43GY5O0u&9xY?Z%L}l+@Jp(aAlJkUW5q z?7!OI-1wdTKevY@fkd%M3am5(4aojnbUbB`I+#R?-LB4hL?^l=~shQEi+h zPp?8Ws7@vc7;KZauE(yqN7KixEa}uL&W~ptGJO5&BdE2RtEyd8t*XJX1&Wse#d9n; zBVd?C;l?A26r-9L>M7O|1H~M!Hd*Y<4+A+o?p)l{kv#ogTK3l}-Gd5etMr)~D z5mL7eu7uLg^|@aQi_S%fWL1(}&bDC@y2e;tSx*eV=wR*KWlkZtL=`|vfl<;HqsBHQ zM~f14;6bF9ot+}tWh-?D!VKxd__)s4LW#owJ&3$V@M`rJBp5Aj3DO)pHc?{KRJg?> zX(&>*V9Fzi%2wqS~e!DGc?M%Y{QmjdB;apUy_%PJ^c%FwAJ#@Raw7-*5gM8|}K z{6bj&0Atn^s8SLm3=}rWOmX6q?5BEv!P7UsR?N7(*zIml#WE!Xgp>fa5|qU22TmkG)u)Nm zU65NXq?Ec-Db>@qFc{;sM@)#CEV<+G!1XJa@~%Id@QP}@PYTKFisD(QLq=p69S#SH z;uw8In3VBGkwf}SGN2&bOYIv$)QM+yexowmmjWDQkFaVJ1x_U@NJzxu7B<8gnhs{2 zliV2Dz~Vtk1PL>MlZ6o@ zav#7IB4@8020IQOA&(46fsF*6PwD6Rnd&}2(r%+s;n;3-%F{s(DFzFOVYrnU6);6z z1eEpIRI}619I#BTvPB~)Qa+9gGHlr9R*AW{B(`L1BM?eRgN_6dNUk#GEne=P0V=@s zU__0$;tv=jh!j6`?*;WSllnV?=ANG6`GS|DT}H<1I(dR(I8`+D7(OYE)zez14~oem zJyfXy{TTO--8&0LThVE|mwBT905_xaOrXj}{{WgXx~i3zDZA2+0qK(?W^C&xsr;Rfbt@+0cvE3{Saj1Aj|s%Ed{oaJPtLKa204*X zGI>l0CA6^vhP|ZU?-kv0r8;WTG+S55x_4_wKEX2iK4nG|x8#N1I zNn0)-8OLIvc`+E5+-fzC&1n>>20i60uY6j5-7h&*alZ zE#9~>rN%E!n{es~Yq89qTZLidByd*ZwAB=lOz%jOEt*9@Sf^pibD~*N2@hb>~u_8VDU=jujH3s8hpFHBAikkm4?CXe%md%y7u9I6_b|?O-+4 zevb||QK>~KP$X>=h^;Nufg}(Q7{asVe98S^%osjk!fIBN9l&ZS@w`72g@jKHRTybd zmm}UG(ND0R{>~QWxna3s##~Icuu`GY6@m9w?H@uMO458n4E2h+td02HdfKP?dc5V2 z;k{U;rK+LFvB~kwAt|b=#vhB&;;^k>F8&t zm`-+8pvUms^$c=V*HBmC`KGTh)Sc7BXObG!s1&oqB*Yk$Yv2xdU$K17&DPSK$5>}Q~Vxr8`GlDzZ+rJcL*=?(9Ta5v!aU^jm8gV^9 zN2M2E-`tQ8;V_+m_2ciEp!XNW79$fYh4*h0l0gKMxHZRP-?p4PLm=%GPOFj)Fy*>@ zYdB`ATr&-*G_cdWbK+B^jT^@cy4)c>*oDx2{M+{E4XBU}8D(AL@1+38;Z`M=Yxv1J-=qfn?^XOl;+998smiQxJw&W{##fB~}7Z@J2&|54trLu!XZN#mXMM{M)uH zDeww)l#Nr4)<`OhhU^{y)$6QIIh0JNXNmigV zl2DEq4+n z{nl~*sV3&v;b{hz1l0ORo(E~-8)TQ}{0&%EB5()g6LN zaO*T6%B&o_cr?(JA0e}DCki!K*PstpnO~zFQtOUz>FoI@B6Ld{Y=P9wH$2tT;W*A6 ziu|nwXo0ZG=SqfS4kb?_l|yx6M{WU^+BQI|)-4fm7VW^6^n#?QN`!@hrviloCkUaF zdy$xnWx7%TKqP{3(m0L;bYqVSA`{gU=0s_skyB)we553Sf8Ms8&u$EZbO>9s!kea8 zW(HQHSemVW(f(h|LQr2@J23IRhaN&rB6Nz!L51P%E7hc{O+6e>TLKe(&ZlD_V{K2v zUMy)8fyI$Zd_uB%>^3#6#SKFsSyl&N!Zffp+Sed^bp5l&5a8ifRlvK!d@dvW*_&M{6@a?1EEJk!Whq6LzqO5lK17(dxt1|YY#{MbGoG{Vyg zr&rEc>aOq6l>=+TV6MOb39!=lBfmA?6JACK3QgkJ)+>oL63XIPDL|Sj79|#2Y6j13 zyBqO^rfGXGkwP8^){d#=j4qo4!1FP}@VYNEUb2)cOxvj hc}~3ARJCm~t^zn7fkG>6?&YKep+o`Y_*ehe|Jmcb^E3be literal 0 HcmV?d00001 diff --git a/img/example-card-portrait.png b/img/example-card-portrait.png new file mode 100644 index 0000000000000000000000000000000000000000..b580aca3c90bf6d540d052d910b86c1997b44878 GIT binary patch literal 591069 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 Rx71opPJJlM(X`bALOz1LWz%z5DnjMLRE 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
    QiEp_aoHpA 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¨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
    OMPD^7uK#vi2WMiq%oZ%jUF|Mmm_1IIK4r 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

    Yk1rG`7!~`=l7&LdLK>1E)0^Q#)cAo$;&# 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 ~1UVj#EF7v-G9!~k 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%0AQ~)uE(hTj0V=2woWp4*s z!huipTmu8Q7?_FT2^$Ha?+^9+U!OA$5ts3gPMtRC)*FmxxVq-q&bKGXxPBK?NkLBv zVDAnZk08V5Tsvb^#)o^%&Okcw5uEl*b}d59>yIt8DLPUcN|sh}RKOCMl!FNou+inG zXh66T+-ONaOsJ@Y!7837T8;&KV1a<7K4JVxdg))(d^(AyWSyo+*H*KZVe1D{bN>KVvsM|3#hZGk zCL^7*O&$>IhfyVEeREYy91#-ggWlY>?R~dB`7G|%Qr=USGiHYpq%s0RlqE(usvt=_ za08$U1Lkk4>Eh{WX(~>@U;rQhCU_0IdTK^Vs_GU>slqdE4Uw_*h7?+g8vI*YNhUEZ zGe#wJUwJ|j7&sx2+uj-z?+Pq)7S(Ly&EvET3{1}5pDH=ZSAAl%x|SRme-_L{MkAvi zIt~3n;yAV`U4iCoYNkrOYZ<7-aqMsBWHLQPO>IG*c9EnvcQP{)PNw?z;%uhHrczo# z8bUx3zzheKA>MZsLu(=ll1H5|()x_fxMxi8KAq*9r-J1uFv@IGFXl|;m8j>Y$MX#q zDOdBMF;!yzVC*>UicgVmeq&>7 z^DHQ(FAXY&c1*t<(fo{ghLyLvm}=mXLP9F-A+^zUzimkG$w4<0jx`vsE&~lh zm}bDKX^|KC(zt&!%2@XgD#bzEQsUPF-a7H_`jRTqAZ@NR_;moCT1;V!$0Ep(NUZ2c zO~&Ak-wrq)GfbOwbkdRxC`*B3xSbq}TTg+@6f(??iy$?gXOu(?{$Y)Lv$>T>T`on( zH~HvTK_*O*>9-x6X;XGm+Lj1}#QN;RZx2p1$%d{sS0mCba){$)d1R&+LZjXU0=in- z_O1!IMmbWS`Lt|+bMDSs) zJgnA{lYEMocpnRJhU+oXCs?69otRl5wIq%dG}q-wa6A~)U}A$2%vhxk6!h12FT2rWH5{JDw-k9a#B*WMt+?^$Bwk|0MM%X;XG+^1MIAt%M!th*5qYj2&GLC9Vtahug3=}Zaa9v2^E2}Fz zm|D^lcFj9&d3kOM5TXXi=%&b|#2RXP_pfPdVjF21sf#+;SSpe%0Q$JU`1B_Ei zZPH|%X={}FW0~_b^+tyaV6d!G&QM(1Vye0wdk}t(1~a|#va?7FUfK6h!*}-=GRz4q zv`j?$?4wbcy*Xx%k#xT#^@le_1UWl9wNmAGrKqQQs_G~!W}=!0iZWdt9tPZ5c7?GG zb8bcKZ`jQ5jhi6riI^}4OziXqXM|%?tAV-!Y?CYE6yWBw?P-v;(ky2uqto0O5XRY4#Wncqo1l*7aIv;27 z2ZIdJ*BWGZm=3y+7%6$;q?u923R>d17aPN~1zrJ)(Mv~;P>{8FXbS8MkqJ;<25?CY z;i%yvGp5qcutt-|~W8@S`!({)FK0W$ed6nrN`xR~f{lpvUmsezHoq zDzI8=HmO$&`gq_->I|yVd66@N8hK?d;iC=a?Ip#jJ;GF!i3g6NV*ogw8)I!to4481 zNNq*(l_|b-TUT$F?yvX3m71haKy@nΝtdxPDieMtUI@5@>cRD+7d4?s>lF*|2v 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%0A$4dqxaWS{&LIyiLw=f*L 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Ξp0%mIN;3PFnw%dm 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

    muqJd@YqRFR8S z-8{82ogJ7nmboP8H9BxY=5p%WJ?Ye<1RjiWkA*PP0!EJr;yP%pdauPJ%UKUERAFc; zWUjAzNQ#AIRFaj6ARTOWfC;zJ!LMbONxjTgm7EfZ_lhgty!Fhw*(*lX8243uWv-y+ zY_Fek?rp#^YP=U3!RDr|qs4IQiK(g}Xe11LxgtB0QK4HA%!thQX4dB|cG=V=NKhbx z0R~49a6Yp%0LZ&TytU05yKTiKX(JFw!f_aIBMP>xq3cgN)KybpVyXj8SuAz9^q8F{ z8(7mvB1n9}=SL6emE_)xvMXE>eMsgXX5EupHiGF%k%C~UF%gCY_+UW<5ymU0Ss&EG za~r1GLUiH^zSDsRr${DX#Ep?mePZ=Iao?Z9aeTQwOtlRpSZ-=71tikbkXc$vT6@QJ z-Ecz^2A4J#Q@Wj<=>cuHkOWFGAReV0aq^BZIHm0qw$vmz!;CM*f>$6&>Cy=tdVOlY zvx8-9&yChp;TSZO)b(o}TStl@FHI+xst1M9N-^!Y?zO(WhuzfP+1n*9ED|ul?H)vJ z^1`rpd=+7Pc()jAr7Ff1v>u5NBcgGNM#Vvc;DZmV!Ld4s@#>{0(BZDh3}lPw=EaE? z76RW-1aDkC_)=X+Esl|m0g%IX#3u`vn9NRNr@C)q$XA6c<{6BB9aN6k!P zH0Xr+i}r=zQ>g@8a#d%u%XI;$ah;y($2-2#U({nCT7y^CoZDZCQesQ8ifS^(jU)37 zjG%_xcW6qFs@CA9({ikkjXH2UXf1KR*DGG3!kzM`TO`0_YHVW%71R?5pDBK6KAGMQ2L- zyG`lmHD!6uX2A1~al~q=V>GcuDW#+N!5vX~WsX8U@IeCFcH~!__HAWhWjA)Jy-LQF zB?%KG$WTm(0Q6L)ySv!tX?%N|l-j8>pr=$|frgz>WRcT>tazVUWs|MB3YLa=S1ngj z$tEErP{+DC#8XEY5;mnap4Zw(6E)eZV<&yZAwlqbIPk-U$@kJ%H=q2yv?V~Gj89%X zXi3QVilUdPU0JKB#44W%#bbh|jyjnOQ^z0#7KIhTR_-+eQs<;SX{*m!$1~w_!B0y?hplL#l8Oc|C(BC|V|gq?mjs*NLF4Tv z-aX4rjk9h7N|h5mV9}=UZ+hLpL5$Bd)DItieo9GJ-bhm&(zLz(deXCXraV|7c2q7d85^xhH zwY#j^UR=3$lqn7c83j@aR?`qDZO5>@t&L(4;klnDVYrE@iRvPJR)Q*%AW#&RXNEum z-~4ws)3*SY+0Dxsw&Ky`qCL_+6e_s0w^@e}lRYASR93p->8~tf)HoFVGU=@y6?~J_ zQ{&=-qDnH+tY~5(Wp!P}nER?NZc00s+NH(2%KYoS>ea;Y>n$M5wBVd{B|LIZG(`c9Ic6Lx)1221TZ=VQ z;?mYorZSaLLg=WiE5otuTn7x7x3G=~_dkEeZ)~T#qKzuk5)9xB`{;*wcW?3!hV_L? zXQR@CyhEiKqX@z^^mHu3_T#K!*=1d6m`nvgqBwqA#bkN zxH^J8yv4oqY+UBo3PIEgrw<`n8M`j`IZHZ(5F;NmLjH5Ez_47An6X@63jTS6&`{IW z<5&b+U20*dO;iaB20rjMJ{|4C8w*F4`Vxg{Q8*rhM>&N|t zr1%ib_if0JqGaG_r*BWT zkgNH7_6YA2rIQdb5weBhdWMjdhZ%FXH_)%uwbooZ*<&HWX>GEKEH# z>kN_JmRV#XIMgg|2~%a%@+dpR_FRj$Teb>I?Uby7tP_loaRX^M)Q@$Qw|woht~xqC8SQP|loRTcEBBiQ0j(zk5yv{&E zXMyM4LB0o%VOSn+sjTyUc7~)+H6VNgaE8~4tq3KRNT`m(tk+E#ps|Eo+AzO-4P_%fhSq^CF zVU9q5OOViBP)BLYX996h&OHfzUR8JJK)y^uYmFRXwP$NMoks8WLK^bNH z!rkNQXf&k4XBq111CIiJFgR)VgOF2)Ps`4YN1$KB<1Bi`=x?a7zC%P}zu8dWki=V&Hu-P0#g29PHrq;*-1m@75=N=S z-~iGG5=r5($vI;d!!JY5rBb&vN>0pMOcA8XA;PVr1Q8g>t^WX6-9O8Im;Fg~W7GaA zi^H3y>Bc1%3Ns?%pCuhwl8!pzD5rL2OA4S0l6zcoL+r~ixzF-OGX~`$&`fG4Vv2eJ z{vIG6kwKm1a?;N6OsHWAB0xWKLa~f6o)qiSZ&lrS>4MT@9U$vQV#?+iUk{3^8v2%s z6nd&DSVk&$tV(60fzI1qqEGNGkmoyrl{&Qt?a&lRCr^Z!k|#_OM3|Y0Cygx2?p#w^ z&YDth#+l`br`yj#5dMfJ(s^tnWfD5H6B-_=_#$M!5Y3bgAT*!X(Os?he-*q zSm|IbBe4f+Gbug6S6z?p>h1!Zkmq<8_rZx#2#h~wB!B<}2>`_ka=quwS!9M0;m2YL z@en0aKZ_ZOjCN5ouFrV3YU+k1)b6EBx$hLs81$LnsB0q0O4zK`ScJ9J{&K_-V|mNS z7$8ukv;y3do6AEPV70U*u!i&?&aE(*Nt20;4kVKp&{ZxZ-G^OBP}B;9M1XM-!we&Z z8r9AogY&k2>mDnbdL^3rRg|-heh)83@E(=o;#J9%DvB{NDq>Mo3g(&DbV|+cD;qVy zustmAUA3zrw_17BrFzPw1uA?Iw1lK!WXT{CG$vs=8_%q|7L<}BN)~qnl6azND3Vo4 zpop|?5=RUOl!gjNX1%yBb9$~`M35#r4&HcCLtCE9G8<8uJ5n2}CIGLNvUoChM&MaNc zZIx+xq_E(H>5!}lAb?~@*I262;tJsbobw5{onsCwF! z>IM3=vq`uUw19Vm za+2EGa@ofgq^LNw@=(VKH5rzx%XX4N zRwPoPw-RK})Rywwytb|o)a*&pr0rG4neh{X83dRBnT!a4wa;RCK`GI$5BJ?kJsV{} zM_)*SUpj&KeRTf-8KB76*F`#&SB62EE2qjB-5*&6H7du8CTh%B0zEYJ3d$*xEC@8O zC=I!dhTC#Q-Jhsi=2qi*n*nMG3k95fIvZ9YM->v_h~Oivg|m*tt=)xLJE1y?VR*>} zLx98WJv%11yJv>lOpVFR6k#pT zvyRG4N7G#AELg=t5WYx0zHtAkh$r&#Q>i#)|{{UMv&T5+! z!m{QU#Um|qJ1pts)Y`uTZk7v0;k5LRS(%CQ5ifw4ZP z0a+2*ZtJmcYMaFkZn>x@53~$DC#TS2Xcg=3HA5CPnPbCoBa34Bg0fs|Gh<>liaM&9 zWoaBNJJ81(yB{qI`=i=T_&w~K^DbE-Zh)51G@x++Y%|23CyfO+;l|r}XhGDa8ByR* zL~xD*isTe;8=0!nRoh7D-`qk1{iEF9vE<0Bf+{&nJWU_p!{^jKdFUQ;>Z5d*D%NJ+ zv~`CsFGspHM}gx74r5=`UgX;6_Ez7VbT?^k=X&WT zJOK&>1Hh6;r(H^&m}f6o+&SDQQ?4gUL}4=^o}stnML($d9>1o&LFxxiv%b@uGFB^D zm9hT-B7Zd#5vP>LR~o#2>#DktSQ`>9E;ZzXySvKHWtZFCTTgQ80+S*Rk~}gFBMt{1 znnRl8=GN)fo;sG55J)%^#)68tk`J0$DGNy%*hITWm!Rxe7Wz%cehL`4)CM#kdfW-Z zhP=(`Z!+Z%NEu(%emh?UE???CYHprnd=Oa4SsgV!T$NRf>ce6rwBA~+uE%jU0B#0l zU8!5$?_;?eXeDg5-Yr}KB`}_|21(hlbis}0=P9h1UzLv%^nulmGwHI3e9bdXsF6z? zvF~MMYX{Wa+WOddc=Boy6ahjiYHGHn#dWp$*r&$Q1KajEY)zs&xV-v`&_`o4_L8)9~Z{*BbI) z6yHgW(PC0gu&8E(N{F_d*0Uhg1ATem)jEriL{?!9BPW#5m}8KUD%q{Oad1E*QGIyI zkre7zQfcVnK1@(f@%9nip$B`8_wG)oi5)RdBN};p3br{Tb;TMcl@zpc*z7yW(Dv=8 z*TjP8R?7;m4M~_6&0#E6s8xK%P(p#Y0CcyA9k`%eq-~}P3MXYjYOHPp`bs^~o2-*> zItB$U2amdLLDt-|t`J5Bn@cJOWm$Kre^mHKTV^K*a z9A%W$t5-u5l*UG!-Z-Qxq-k?$!@Y+yN4fNcvkY92T4Kk5r>6DDkEt~CU{ic zzT4#0`z)oe2nY!xLD}X39UDy-d~XzG>0VimuAGH>xhb&}U=buTNFR6vixzD_wu~=f zer7eBzq1t(xUT@E9S#MS^9M(;e6g4+gfw`ieB&o$(jP5p>Ru&bz5f7qDToOmzqr;n z(^E9Y(@m75wWOaaNMf{@reMSBF=~hzdY{u(Y8=^zRDx#2aH@4MEo&;@bkvcMlb-H@ zWFKc=At_35>7u97R3x7erpnyTdWnb7QsZ<~*pxXtgDxq^<93 z`#7q}kO?U}XomgbpfzI~DG^nJ;IOlY!&iAyj-&uAMZxcT4;yy3vxdoRaWo%!L>ww3 zj4>FgrwT=hRa9UJ7b5o;=Zh`Td2!1B)JA9T!jskIZC*1$mauG@))}$|bTs&P^#e9j z;WcejJ`qb@6p>M8rNWp7hNdu7$WH5zVLal?GyJjjq^9X83lrkN5k92B82EP9Sl({) z$wE}(NZLjUFhL_~K^!__wvqH<)2_XAhogRa6AS4^e+fP;4K(ss$xRtqC$17lByq-L zj4ju52hl(WzatAvM_vj-TMAJTB;cKdne>V;dGxfDsY-x7{ZvnVQ(_dEhow+skU}XV z!!ZhaiaK>!6~LV)jCp~q2npM6pTmRB$C9=))ii&J3Z6R(P9D895A6x`JC_BH3K8o& zYP4FirD1kiSh_1DVl~rg)43y4?HtQK zg}k&9ylghHD)zno(WU!*K-YP46iS;&M3Fe-g!+2ap=+JGlmxo6xCSH`69*1Hl$WfE zu7E8*F5e_w4MZ_j5`e;7?IbY2ZExZa(ZjoCA>3N=aKom9*LOt%98`JqP>IrvYoc8@ z>Q+O|oniUR@6-GZYcYznr-*>jzEn&ZlLb zm1FW`%(d2BK3uQVT6%S-5@L8oOzBZQERJIR95Os;Sz`d5qj5YEZdT~Kl%vAxj-+W) zW>BmM1f<9+NGC#%i4t^?CWyys*VgHA3~32joKlq#VM&o90n()aK#?*G<3%oPLWwIU zbeNW^CFJ`uqbbyzvWpKLcsym0kpN*)OZSAD&qJLlaMy$`S*65iBXDY?uaV;OBOqNa zr*eiPQ{LUJ;9}C!k@kuzb=4ELlGwf@Pl#g`6;$|IWy~eK&m#w-d8$$bYiP1mNY2;) z09mx~=8R83q~$dS4TiFzp@s;WS!Hi<00AY1n!%05t?UDqY#oBMu^7_hEa13hO-)D7 z&$+42>7i!a03+SG+6J2FIJJh7PA00S2=c7i$K~r_!?5fgKO@O^jFDv$KA!KpUDbk^FDnI4# zEh$pyJ;1uLw`lutC7*6PFWPra_+ZHBp+--IQsp-1m z9&K8Y4jEI2oFEsI+*WsXPY}g1Np=5W^{rVTw{j^l3+jRQ#EaSe21M zeWaUQo8I7^46?nzV&f}?HZ|#zc*zqW#UsAnhtqskmH2gFI6&bPYcmH{F`U1ha9p)U zw3Fc3hInwyMq26W1w>QM>9t~IJ4p!JfI1s}T!-@Q-wxWk;VKG1m;gip$Bx`6b$h%D zZs`pq0+nE7nFRE3r@ZCWOb;mIxlaJZaN4OP%>HB;eO?{qDnbPDz@^eg1dY#f7UWp* z?4NX>zGc<75Z>A2fjE09+|NI1+0-FZE7=}#SaW7+$T%#p(r0R_dU1=^PljRQzLjcW zCOyo3`683U$F{x)Q1(NSU)%+LSS!LL!H+H?shQteH68Q~Mg)oZ8tXE2@2B|1B@$w^ z6qHd!t%TuHt1UcmdCt`)IDDx#mANcH0N>kt@kNGbddVtnYLkiMJS6-pcR6LUzzawK zU^sQaq<(zKc;+k9Y4R3UD~8WaJqy8#Jn~5C6)97(+Q9vg0oLI0%%41N-uJ(KI`+uG zZLMF~Ez4fzv!)~6Su?-$O8%8*oVc{|PmBKmCx(Q}RU++or$M=kwx|xmZ>8CO2H8m92J2bP4G_2&6BoKVS z1+ERi@!*pvb%ke3Q6ME+qHr8P3MI_jS;`QAJVG{l(Uq&}Oc+N{Jt^W}I8fmks|vld#708TJv4AWJDPm{3BcP?iRmu3kdrmT*6@NC;#4MIkwikfy)8^gOPWdoSn zH+|bp-nlNI9Z*uRByDdA{t^xZ5z`VXPRz5Qw{)d&phTv40k$~JR(IkTnDX~dzY`v? zRATvtn*yL*ZjuIv88(GJb1mW1mNyz*oO{5JVbg-lhbFqY$U+-vsaj_ZxGh+FIC|4r zDuB#cxN$%vfHB$jfytp-gQj^BwvRCN4jM`v#h7u(#eNlt<{HPuJo*`9x}`g_%8H>? zc9l2xbkn#o{pY-Cv2ETIAv;1woJUB&ljl;cw(MCOuK2VR;<%h}=o2tJt6aXM<_cBG zv|+Hid@l}%by_kp0qQ4@d#c54BMrLW5vMu@k=Z<}nAB8$L$9W=XFhodwg*T^`JNHc zM2|FM@nS7UM?(UL;U;gLj1clO62)5m>~tRvOxb;xcO;W0qD#BNxBy@&pAN!js+Lj< z0XEk)A-}{1fLM01)Ns;^@jNMOhETzP(bmr~+zbXfRt^D;#Hic7;jWrniCvOKIEK>% zkwU*p@i_46oLM51^f;XGg^qWOBxHm(B%5h}uj=4Cd98cIr1Vg~c5VYYfc_|TFIHK~n@x21*+ASS$BNWarvdP!>nKPvOrul-vuTWCh8b6C_HF7xV5J2nVh@R1OkgyD zf=1Ag1kq^BT~o+iPxYIcI>%c>@|`))JyM^kwRkpbf(A&i97i<1B_vgl#Pciv0Her6 z(XQn>fpN(ttd8=_bj6xa`ARLc0+N34+zloH`@YkM4V4|Ubcgd)te9-AJ75R|0#BaP zR`=>0ei|KJ^_S@%2Fe+0DB;}=%oTa=9;!>zips18n;BNaB9{RbVuZmZ1Df#gpenxU zyL-0_j~j(|z7`w3nl9l_3x0Jt)Q#m74zeI$Gy>0ZE$;>F3E;luwp$@PO%m95$ay7m0QuA7;?>KJRbi@uu&6NU zF={%vh2naVO|+vmi)*&TTKC~{*#(fV;?x9nPTDh7+lhRlJRt;w!eeJmFyUQMmlCLG zh91Muu9VJ1-ahi-SMw5KrRFc3X zjMW)}u~KfT$gDmi+Brq;=D5^=W28?A{702M-hPlwD35m;{b@;ubw?bctE8I@&6Q8` zK4v9BdXu&qiC~^rl@ZR(#!9K2n-WX0?n&prvo`9TZ45*lIAMhJct@~wQkJuWJ{6oX z+r|z)c$4aB9=Sscshr0RbxjOXNVM_61wfTzMwrLFgn_&Ug8u-Q2QBX#sKG!VN+(|L zGOx6#de0i=m+;)rm2qgXYzH_sEn2CXZ=9uuSfv7-mAWw~#1|oMx*bNM;IlQ(t*%p{ z#-w!}nEPoxzDD~h)Q2(a1EQDoy+hBqcTF+AoyCfZstm*{=_|0v8R_X|k?1M#wU<^x zWGfOW-b&i$+MWfJ#fq=da6ttmLE3)eubHLkUFs~9z%msejey`2@*8lXYg3Z*Wj#2j zsL9V(>VPvrBodt|)d?z_joFp8zkd!)R=dS$zxD5Iiiz(xZs|YkB>6$4re%g~FA9!W za>Vo)n$*gy^H9wj`3wfYOQ2Dx@84buY}VU@2LbXl56oI|vHi@CFnMEH!e7JD-%Qhbm^82Gjz+Rc_xy4$JA_QREHF&!;$2cd`i7xjtW&(0^g*4pmw?7 z1zW=FDSqPMgfM_eCkP3dC(?wrc`~jR+bt(ksxciT#8KR&>4s(eF}lCd9-(z2WuK}Q z7%p$cvnEf>e+DzA;ZY=qIqz`VlKs+m^P0FElMYXoMf%rEW`3z}48f>fb|b;%Js0N6>wv9l%tM$BAEp=3M``Vpb%HF=|uwn?*+kv6PurXWgp(2zm4m-z8d<;5rO2Td|A9|B1KU5;E4yg0)0zxpT3Ue{YE(42ik=B$`I>5!48kW94dfHr#DYHVKAUxLq-$Oj-7;o@ z64O-SEm07EHbD}GCw8EzjGG?XTaSKK&Wc8>kT%o`YU%LG*+9 zQ^yrd_$~o0JoR)^(^0AUxn-(x9I{J&(ZtWWP!4kT>$BbOvCZCEi_NrNTY$9S*r#L# z4PRhNK`GKqDL@cR)@I}z!INBCCsLbQfEXx7#Eb-k(Gmz0Xz}Vl!NaOq#tIBC)1>)d zCE_`RqraR7rb|=GSy>A*03-}EzZ>0`thioz2})-| zn{{dcH!up??$*3#6@XNew90AcH(tW>-%0M=SpaHCN=BfVp9$3pUMFM?f-tJs^@-^N z)22-5_BGUQi&bJ6R%FYtWUNN71H|##Y*HDhF|3P6j8)Zqs>dxvVe6_HRg9%0v5e}s z62E4BxaYUI<5qWxN||v_Br8Ue6o-_Ar&b9*1nP*A2tHxW>g=Z~86)?W!Dw-)Fi9Y$ zc!EioBOQ_nz*R@(e6^XX@^(F(;K8PsC*W0dd21NPOQ)3$UL>PftaeD$Fxo~V0Bamml)kG~+ytKO1Oj>rralxmXWZF} zWBoYktzIu&ahj|e2(kfpD2UgwN|PFqhSDDNV%QbjCGNgnpVZY^-b zO*@ruF8f>M58I{Woi8s$^ccc@U{I5F_c{FH*5I@EGM#XEiNsG(lR?zA7``=?ur8+I zQ~v-h>R(UK%i<|6@h%}jNKz3q25){y6~t35wT{=lwH|~4KnFCg5Ag~Oq?(O<$tWO; z52un>tQ1P6VU9^R7T6oxyFxrI^zma(K%zHTMD3=$Rz*^k5=>ia0J4(6l_0gOLF{<& zbySUP1G144W{f@;Xy&L9N~iRZ?Oh4f_vK5f>83l1|JAd+h3g+6(shrheILzG;hiVy zUSa;P=M1%z*AkMy2gayta0*%_Y6`jIjT&JkD@N4E-Wx$e;GMiu%<@Oom$i3nlBNcv zn8!&9CJ2*(20_`3VO_X8W8tO=B~uMMOp!VRzGg*5b<~hG;busig_MT16%&9H!xItEF+Bo}?lSh4(Jla_ z{{Vdl<5l0Adhyl1q55u!X9zI7`A=PxYjNySeBp*+Uq6S|MVG27)}oqxI+~89=V`&V z`C8Yz0xqOwYo8!yL8R#cE`*31MzA1}zzlJjq8psCDQ!!F3{KMPO+4@oiAMSff!gAPhi$Xm{3K4nPVW-5Cnh#mZHIWea7ZWBO2(ose; z(_ccde!uloCiM3Y#Gu0E%$SWP8BLF7X&RRc!(x(khvsW46(kVS#lLjTuef4rRrvL#j{-|9sOLxs^*x{VKhbXZ)#LvZT5UEt|thZC>+61^z$)fdWO0CT9K}&OZVkP+Gdlen&?qu z6yiCesgdD~t47hYEv~=5EJxH29Yx9sriQ4m3~M*xK-AOJyfefeo*Jv|a3n&cqo$yc zc=vePusDi+rL87G#-U4zROvX1$%w}0F66yyl%Rb zrD~lg3RiVwt9br$%Xmf^9aL3KhS&V`n}KVu%CuG^aXNx^Ki*H1Zf%{5>RVuqNsoNd z)@!}bU9^-aj12pza;xg~Zf(M0!s%vQGPW7%9M9&;k)I_+mwH%@*B1oZ<6cCU9h-}1 zRI%bo2M8R03LYbTzcAQLX&{b0AB_t+ZcJyXFNXAsBIA_!e^YaWv>6X8PhD1&5e#Cc zq*2EtwKY3qiZac1k;njQcniASrC6WMKHS@+>O6cs5$i&0eBCz*47R9r;5O~)z)!Ou zTH)8#>KCM}FBR#xQ0TDSSE_juvk$^^MGP2?CNDTnDF7`?3DZ4bPo(jyMf9uchbHt-)OSg8&T`9A;@E_VS(x&EYNTco z;lDdWSA^98G!sWSj#^ZbHbo~!1%2QTG3$HxKK|n=xxKeo(2x?eOa*{KfauzG;pY`I zSZ9`vUbAHCd}@^?Pz-Gxe7Xpt%lNfY4ypRq>V{^?_>*JUZXsEL$AIE^#aEtdV*W{n zQu%&+s4_e<$K{q`dkeO_8TL7yCf_JRosblj6U2;Fx2TV8EW5t$T@4h23K1A2?ASPC z!-X9$OnG>8qXftOJm>5xtY)v})m=-j#Oh<2aC!;9mMmr(WHA$HmL~>H)-q|gLC9Zz zQpRWznKIzfs5S@jk*Z{w>ljAPH8&mRTbH4(?@0+8Fi%DpRr%@9{c-0gv>Q~(?2@P>^;qm@F zx{@l|jV5HorK)G7l|;)Vts7Fu?%fT+x$x`{5~xyutSM!KW0BzV)J$Pt^r;cjnvPQ5 zQ$(V`k_GQ;ci~m#mv{i0Uukv`jSVz)2~`SAEJJK)5;L^Nbu8D^{{V`{`V+4L7gnVt z(ernJic;Vec(p{24j&xz`J1ZK52IP+W_Xp0Nwx*Ol~~;P4~GMH?Y4m{f!1T^MwTzF zW)ml8x&rdWf3b&qyUpz{zSxk2ew1N$Z z()>5OwRvd;I}Y3rMiJ{ut!@yNWAUZVNX76;^LAaQ%$`iSR-(3smoUvNrZALdrZuRM zUN3ksh!ddtJUATBZ7x%0;bKFfDk;PGpy?2L=;JQBY`l=T&`1ZUPA3kkg^K1nI-KpA zDe~1Rq{(vCVv^;gt!a0y7^#1iMwPwhVGF3-ZcVOFbHzDcTIy^XFREYCopG~Nc%X2` zaIHC*g8ITgxyqx;aQ9Yc#i|xaWt|dNowTro6$M z1ua+03GPTlf6)f95eNp0Yi+RZJT=#bHkmS1CYygbDKT8)&P`J)nS#|r<_M+{KaqWs z2Dw5mPL~>5{M(s42nLq1p2_hE_ffa$pQf(0^=G7bk5}?8Ql`v#69#-w4aMBzxNSXM zJ7CyURrNBo6UiHxqmEne>`%Hq>kdP^)!J@Nl;)!^xp7H-K?DGW5Ot`fB0xBjBjbfg zxi;@!Us?C;OdgIeN-j~N1Wa7t3MwJB)GpvZOK%+fpkwmpex7FZJ7lB&O{r#FG>lShQI1pMOg1-aqZOwR{#j2HpE$Ht5qX|sKvi~{m36<_ zVh?ekv9}8@(X1E(XQQvGmLX0ci6$ebtFEV3W(rvGJR**Z7d7-a&1Fq3FvOq&c%X`@ z9wwQfVxgIK?hDxH3Gc$;mFr51lLP^<;W5H$>&(hjk*Y$8^b^J_tP3#WxtB7oRlsn0 zajZrcTT@ znilg$OX?p^>nbpe@zadOlJPns(Nw)}8=>pen41aIfNxeXLP`Fk~h8*i?<4h=i_<55!E=&L#OS6e~p z!!YIFTK!z8qsA$)S~;=qo!}2EOIe8GQDXHtJ4GZ#50=2tO}6IX5Z^{7_UnCdyhHmx zm!Rt|0OF&<5)hSxGl=mfdSHskzQ*nBvV^&t->wnekbpkor4o|>jj#-3gyTT2a`hB_ zLHdM#qV;BE@+#>utXBo5iHg(V6*1CQ;xusV)J+(yWO=s&WB{(0un^_Fn}26=BW-30 zR-^?UE0UC`^&J3f4Oxv_0p62O(wQ0d+3cy_tfZ%sHv&@c%9BvTAB}C#vWhV`ot89sa zIMLoydtef#(%~w0RFF0mLEE?O_;gUAfO>exdY^-448ut((&g*|zb)a}^E%aqj-HmU z9K>mGdU|SbLYZ8A$C>4idtx&Z2Lfu}_VVkNnLl#Fo!T~%5S1-TS3vN@oFsrK@B223 zlqphhDb#jiNK6bm{{UP?8yxxgUSpY4KjOVO>8DgOzgKa5D!zOQiSVka=x3~WD{&e~ z_9VhsRLHn%u~(YIdg?{U12y#o+M83?EjZI-9Z(dAgdISLQ6IDrLS(_%aG}0S*#7|L zm{QW}8&W_zR!C8w;SdO&po6kHDy=%1m9mxkDo0z|=k=Wk%m zgU-biVHb2e+AG8xgXxq`8jT!%)Pe zfwnW9g*>s`leFqI@9gG^YNd3U`D&T#8aPqOP~F%9pxthM$O7LUS+}Zw&&a^?$0n&dnrdx)Ld4W26MDaa9u3rk9~J` zZy$#XRl95+6lyn_)YBFC6RWPkIaTQ+SePASXho1FLE;1 zGeqVJZf+7F88~1>#=u~aBN!xcuO02aMS`rt;guO8I_GZPpcv{DFXQ;6RJ}UOl~t~> z;?&U8QprbHStO}rBE+BpxLH+B@=m&Vo(^qLkfJCy`{1+;;wU1At6B2~iVQCZ%#-1? zgv=n0j-qJLB+0TxQ5zr|)SH2QJNMy(xqZ8ltpQl^0PLdMeCF+tbS+8Su#vZJ%HxM- ztlWHzPD;m;k}@__mvor}D1o+(!0HCmZua4dWC^0dbZ4%Wlygdo9$n0#Rmwg0F70i8 z;E`>3%9ceaLQ<-WjN(#=;ffS36;jCpUDtX51*{IB5XSsSImU$nX?I0DbNo=BA)(UP9Zh_*476E^#*XfN;#-9 zn4rTM<9RU0#AdBjjvFfo9<-Sho7{WE505eXFzj;P;Up>3s~8{z`#`|Z;BVF7UZnU( zM3d|%8n+IM{vILrT*@Gdy%;$ruW($r6G|00GH2FSyUF ztsDH_Un(k4R7grdjVBFTal&>AjWdU`=dM-xYpF;A4-$Coic#Pmm)oa3cFI^sRx@1= zRHaN_3@a9?uSBY9arzk@$|#j?7F|I*l;2IjfoWyZG>4}m0*RTvWx za2OHPalMY`Fy3t2S9b|*G9=(*0DQRdIC0rZA6@+`>Bmnx&zmp~i}eE!>Ss!$`Fb3+ z)O;q9so|`OFVe|Zu&VhRnab@V;3mA0>@6~@OQCCI`tDE=h3YB<%F`tVHk9!gMA2tx z84DIqpfciA6oiri3eut^q^UjjhT7JAInh(h=><8820Byus_ z6>0!RxYF&Xj}PATAwE?X`ZL`-nP{r}nh$0h6(d$dA}db{R5WrGM?+y@ad1J7F?7yo zmsGI3QiY_WNhB=Bg~(9BILO&BPROI}%)QAw$h|}X#Db|DL;{nj{{RUl0f_`qOM~?P z0H^&y&5>oSsg5lzUL`Wn;O&~cnpmfmBxi!E86~8Gc4&a}Y1Tqo);1?_`p?6L=yF7wp%sp5diFvj zAQ^1NH3e)t17Txh^m4($Ot_&;ujWL|W~W&liElC%A(W}`Q>DeOc<@ytH9k2h%Db|$ zm5>04%@HKr0590R#jMnxV?qRxnbB?cyoQ_C}=^Yboq}J z!+fbI>h{#r1Yxzxz3-tWGo_BB`gqiZU_~zvsV4(V?1|Q_^V59qlDe0LVzZ_{mN7ak z+eK9sMDWyn)df=3AxV&zjF(Tgr*Jxs6lWPdz4fEE&Ln7BN_KRPj;b@uv&XG&5b{iv zkbL8(&Xj$0^&ix4QhA>=XRfH@b$OdL=9%ehaeQ+cb0uWM4y20@rB{>P^9)cxkp@2T z3vx*$@vYn4s~n!yyK7WwLM9`ul6KD0Nsb&V+3xV%W=}20cBt?G3@{J`4rY+KBQ?c_ zWqMjil1OC2@mR4$+a2U8vWcu%>)k)Mj^_4()tM71BW*L4-Kn;~7(#)gagjYs*&;s*mU4~wLz$(! z?t|b2W6)>uqc_(cp;2dEq%Lou%k^!Qa|HBt?Okw_Qv0;A`RnqxQp_N7cIjd?1Pekt zos+KDFH;UUkn>=O+7I1^K4Wh|sfq0Q2JyA`YEvd8?2VY=w_%zxxudOpQ0eY`exc^R zp;l*(m)6i!U>Q(il~OH0psk~c(Kc++7Nt0e)Qq^F77 ze#_ch2GF&MI+4zvZr^yT7K^`rkv@XCxxB43GY5O0u&9xY?Z%L}l+@Jp(aAlJkUW5q z?7!OI-1wdTKevY@fkd%M3am5(4aojnbUbB`I+#R?-LB4hL?^l=~shQEi+h zPp?8Ws7@vc7;KZauE(yqN7KixEa}uL&W~ptGJO5&BdE2RtEyd8t*XJX1&Wse#d9n; zBVd?C;l?A26r-9L>M7O|1H~M!Hd*Y<4+A+o?p)l{kv#ogTK3l}-Gd5etMr)~D z5mL7eu7uLg^|@aQi_S%fWL1(}&bDC@y2e;tSx*eV=wR*KWlkZtL=`|vfl<;HqsBHQ zM~f14;6bF9ot+}tWh-?D!VKxd__)s4LW#owJ&3$V@M`rJBp5Aj3DO)pHc?{KRJg?> zX(&>*V9Fzi%2wqS~e!DGc?M%Y{QmjdB;apUy_%PJ^c%FwAJ#@Raw7-*5gM8|}K z{6bj&0Atn^s8SLm3=}rWOmX6q?5BEv!P7UsR?N7(*zIml#WE!Xgp>fa5|qU22TmkG)u)Nm zU65NXq?Ec-Db>@qFc{;sM@)#CEV<+G!1XJa@~%Id@QP}@PYTKFisD(QLq=p69S#SH z;uw8In3VBGkwf}SGN2&bOYIv$)QM+yexowmmjWDQkFaVJ1x_U@NJzxu7B<8gnhs{2 zliV2Dz~Vtk1PL>MlZ6o@ zav#7IB4@8020IQOA&(46fsF*6PwD6Rnd&}2(r%+s;n;3-%F{s(DFzFOVYrnU6);6z z1eEpIRI}619I#BTvPB~)Qa+9gGHlr9R*AW{B(`L1BM?eRgN_6dNUk#GEne=P0V=@s zU__0$;tv=jh!j6`?*;WSllnV?=ANG6`GS|DT}H<1I(dR(I8`+D7(OYE)zez14~oem zJyfXy{TTO--8&0LThVE|mwBT905_xaOrXj}{{WgXx~i3zDZA2+0qK(?W^C&xsr;Rfbt@+0cvE3{Saj1Aj|s%Ed{oaJPtLKa204*X zGI>l0CA6^vhP|ZU?-kv0r8;WTG+S55x_4_wKEX2iK4nG|x8#N1I zNn0)-8OLIvc`+E5+-fzC&1n>>20i60uY6j5-7h&*alZ zE#9~>rN%E!n{es~Yq89qTZLidByd*ZwAB=lOz%jOEt*9@Sf^pibD~*N2@hb>~u_8VDU=jujH3s8hpFHBAikkm4?CXe%md%y7u9I6_b|?O-+4 zevb||QK>~KP$X>=h^;Nufg}(Q7{asVe98S^%osjk!fIBN9l&ZS@w`72g@jKHRTybd zmm}UG(ND0R{>~QWxna3s##~Icuu`GY6@m9w?H@uMO458n4E2h+td02HdfKP?dc5V2 z;k{U;rK+LFvB~kwAt|b=#vhB&;;^k>F8&t zm`-+8pvUms^$c=V*HBmC`KGTh)Sc7BXObG!s1&oqB*Yk$Yv2xdU$K17&DPSK$5>}Q~Vxr8`GlDzZ+rJcL*=?(9Ta5v!aU^jm8gV^9 zN2M2E-`tQ8;V_+m_2ciEp!XNW79$fYh4*h0l0gKMxHZRP-?p4PLm=%GPOFj)Fy*>@ zYdB`ATr&-*G_cdWbK+B^jT^@cy4)c>*oDx2{M+{E4XBU}8D(AL@1+38;Z`M=Yxv1J-=qfn?^XOl;+998smiQxJw&W{##fB~}7Z@J2&|54trLu!XZN#mXMM{M)uH zDeww)l#Nr4)<`OhhU^{y)$6QIIh0JNXNmigV zl2DEq4+n z{nl~*sV3&v;b{hz1l0ORo(E~-8)TQ}{0&%EB5()g6LN zaO*T6%B&o_cr?(JA0e}DCki!K*PstpnO~zFQtOUz>FoI@B6Ld{Y=P9wH$2tT;W*A6 ziu|nwXo0ZG=SqfS4kb?_l|yx6M{WU^+BQI|)-4fm7VW^6^n#?QN`!@hrviloCkUaF zdy$xnWx7%TKqP{3(m0L;bYqVSA`{gU=0s_skyB)we553Sf8Ms8&u$EZbO>9s!kea8 zW(HQHSemVW(f(h|LQr2@J23IRhaN&rB6Nz!L51P%E7hc{O+6e>TLKe(&ZlD_V{K2v zUMy)8fyI$Zd_uB%>^3#6#SKFsSyl&N!Zffp+Sed^bp5l&5a8ifRlvK!d@dvW*_&M{6@a?1EEJk!Whq6LzqO5lK17(dxt1|YY#{MbGoG{Vyg zr&rEc>aOq6l>=+TV6MOb39!=lBfmA?6JACK3QgkJ)+>oL63XIPDL|Sj79|#2Y6j13 zyBqO^rfGXGkwP8^){d#=j4qo4!1FP}@VYNEUb2)cOxvj hc}~3ARJCm~t^zn7fkG>6?&YKep+o`Y_*ehe|Jmcb^E3be literal 0 HcmV?d00001 diff --git a/img/example-card-square.png b/img/example-card-square.png new file mode 100644 index 0000000000000000000000000000000000000000..a58950a66116ab49e791c21c7049ef4a8c562d1b GIT binary patch literal 562184 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

    {d5d@;N1d;_xY{}|WJwW(i^&Fphn8ZXwa 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

    -DhCWi4q%PPJ?}7&t8s(Vwm%>7s(d6bq1Y(m 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⁢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%0AuVPKZ`Aq(QOCwQd0neLuD16 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�-rO-yyd$vD^ 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 literal 0 HcmV?d00001 diff --git a/img/illustration_documentation.svg b/img/illustration_documentation.svg new file mode 100644 index 0000000000..000504d506 --- /dev/null +++ b/img/illustration_documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/illustration_flexible.svg b/img/illustration_flexible.svg new file mode 100644 index 0000000000..b4e1b22ad5 --- /dev/null +++ b/img/illustration_flexible.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/illustration_responsive.svg b/img/illustration_responsive.svg new file mode 100644 index 0000000000..15be2baece --- /dev/null +++ b/img/illustration_responsive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/illustration_tested.svg b/img/illustration_tested.svg new file mode 100644 index 0000000000..8f7946ac45 --- /dev/null +++ b/img/illustration_tested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/large/Arrow100.svg b/img/large/Arrow100.svg new file mode 100644 index 0000000000..69b4aae9d8 --- /dev/null +++ b/img/large/Arrow100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Arrow200.svg b/img/large/Arrow200.svg new file mode 100644 index 0000000000..91c76abf8b --- /dev/null +++ b/img/large/Arrow200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Arrow300.svg b/img/large/Arrow300.svg new file mode 100644 index 0000000000..93d4e21019 --- /dev/null +++ b/img/large/Arrow300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Arrow400.svg b/img/large/Arrow400.svg new file mode 100644 index 0000000000..4ed72e8686 --- /dev/null +++ b/img/large/Arrow400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Arrow500.svg b/img/large/Arrow500.svg new file mode 100644 index 0000000000..da47cee1a8 --- /dev/null +++ b/img/large/Arrow500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Arrow600.svg b/img/large/Arrow600.svg new file mode 100644 index 0000000000..be5777d551 --- /dev/null +++ b/img/large/Arrow600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Arrow75.svg b/img/large/Arrow75.svg new file mode 100644 index 0000000000..bd2e324fcb --- /dev/null +++ b/img/large/Arrow75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Asterisk100.svg b/img/large/Asterisk100.svg new file mode 100644 index 0000000000..aaaeff5359 --- /dev/null +++ b/img/large/Asterisk100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Asterisk200.svg b/img/large/Asterisk200.svg new file mode 100644 index 0000000000..9692a83193 --- /dev/null +++ b/img/large/Asterisk200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Asterisk300.svg b/img/large/Asterisk300.svg new file mode 100644 index 0000000000..6f9892bb39 --- /dev/null +++ b/img/large/Asterisk300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Asterisk75.svg b/img/large/Asterisk75.svg new file mode 100644 index 0000000000..f68e77a166 --- /dev/null +++ b/img/large/Asterisk75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark100.svg b/img/large/Checkmark100.svg new file mode 100644 index 0000000000..f28d36fee4 --- /dev/null +++ b/img/large/Checkmark100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark200.svg b/img/large/Checkmark200.svg new file mode 100644 index 0000000000..b158b7b991 --- /dev/null +++ b/img/large/Checkmark200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark300.svg b/img/large/Checkmark300.svg new file mode 100644 index 0000000000..6e455aa141 --- /dev/null +++ b/img/large/Checkmark300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark400.svg b/img/large/Checkmark400.svg new file mode 100644 index 0000000000..c19a89eedd --- /dev/null +++ b/img/large/Checkmark400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark50.svg b/img/large/Checkmark50.svg new file mode 100644 index 0000000000..38204fc54c --- /dev/null +++ b/img/large/Checkmark50.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark500.svg b/img/large/Checkmark500.svg new file mode 100644 index 0000000000..6e5c8ca5e8 --- /dev/null +++ b/img/large/Checkmark500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark600.svg b/img/large/Checkmark600.svg new file mode 100644 index 0000000000..65ab57efd9 --- /dev/null +++ b/img/large/Checkmark600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Checkmark75.svg b/img/large/Checkmark75.svg new file mode 100644 index 0000000000..71852835ed --- /dev/null +++ b/img/large/Checkmark75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron100.svg b/img/large/Chevron100.svg new file mode 100644 index 0000000000..9c919f5df7 --- /dev/null +++ b/img/large/Chevron100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron200.svg b/img/large/Chevron200.svg new file mode 100644 index 0000000000..6e664205c2 --- /dev/null +++ b/img/large/Chevron200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron300.svg b/img/large/Chevron300.svg new file mode 100644 index 0000000000..6962509e83 --- /dev/null +++ b/img/large/Chevron300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron400.svg b/img/large/Chevron400.svg new file mode 100644 index 0000000000..e94a0e539e --- /dev/null +++ b/img/large/Chevron400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron50.svg b/img/large/Chevron50.svg new file mode 100644 index 0000000000..c2f827e67b --- /dev/null +++ b/img/large/Chevron50.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron500.svg b/img/large/Chevron500.svg new file mode 100644 index 0000000000..523b360710 --- /dev/null +++ b/img/large/Chevron500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron600.svg b/img/large/Chevron600.svg new file mode 100644 index 0000000000..a3549353ad --- /dev/null +++ b/img/large/Chevron600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Chevron75.svg b/img/large/Chevron75.svg new file mode 100644 index 0000000000..d404ff2a64 --- /dev/null +++ b/img/large/Chevron75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/CornerTriangle100.svg b/img/large/CornerTriangle100.svg new file mode 100644 index 0000000000..9fba19b1e7 --- /dev/null +++ b/img/large/CornerTriangle100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/CornerTriangle200.svg b/img/large/CornerTriangle200.svg new file mode 100644 index 0000000000..2aa9578055 --- /dev/null +++ b/img/large/CornerTriangle200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/CornerTriangle300.svg b/img/large/CornerTriangle300.svg new file mode 100644 index 0000000000..e473202267 --- /dev/null +++ b/img/large/CornerTriangle300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/CornerTriangle75.svg b/img/large/CornerTriangle75.svg new file mode 100644 index 0000000000..c4a325f17a --- /dev/null +++ b/img/large/CornerTriangle75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Cross100.svg b/img/large/Cross100.svg new file mode 100644 index 0000000000..3f5c167f27 --- /dev/null +++ b/img/large/Cross100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Cross200.svg b/img/large/Cross200.svg new file mode 100644 index 0000000000..acbc2a951f --- /dev/null +++ b/img/large/Cross200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Cross300.svg b/img/large/Cross300.svg new file mode 100644 index 0000000000..d7de79b810 --- /dev/null +++ b/img/large/Cross300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Cross400.svg b/img/large/Cross400.svg new file mode 100644 index 0000000000..1bbebda5ac --- /dev/null +++ b/img/large/Cross400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Cross500.svg b/img/large/Cross500.svg new file mode 100644 index 0000000000..a6a1e26f9e --- /dev/null +++ b/img/large/Cross500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Cross600.svg b/img/large/Cross600.svg new file mode 100644 index 0000000000..efa4bd9d7b --- /dev/null +++ b/img/large/Cross600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Cross75.svg b/img/large/Cross75.svg new file mode 100644 index 0000000000..818dafc208 --- /dev/null +++ b/img/large/Cross75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash100.svg b/img/large/Dash100.svg new file mode 100644 index 0000000000..de0b31b771 --- /dev/null +++ b/img/large/Dash100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash200.svg b/img/large/Dash200.svg new file mode 100644 index 0000000000..158e2b3feb --- /dev/null +++ b/img/large/Dash200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash300.svg b/img/large/Dash300.svg new file mode 100644 index 0000000000..e40234f6a8 --- /dev/null +++ b/img/large/Dash300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash400.svg b/img/large/Dash400.svg new file mode 100644 index 0000000000..56b89d2868 --- /dev/null +++ b/img/large/Dash400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash50.svg b/img/large/Dash50.svg new file mode 100644 index 0000000000..d60a0a1bf9 --- /dev/null +++ b/img/large/Dash50.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash500.svg b/img/large/Dash500.svg new file mode 100644 index 0000000000..b5abb02a37 --- /dev/null +++ b/img/large/Dash500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash600.svg b/img/large/Dash600.svg new file mode 100644 index 0000000000..9c3abe838c --- /dev/null +++ b/img/large/Dash600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/Dash75.svg b/img/large/Dash75.svg new file mode 100644 index 0000000000..79be8e98db --- /dev/null +++ b/img/large/Dash75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/DoubleGripper.svg b/img/large/DoubleGripper.svg new file mode 100644 index 0000000000..821b10a21b --- /dev/null +++ b/img/large/DoubleGripper.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/SingleGripper.svg b/img/large/SingleGripper.svg new file mode 100644 index 0000000000..68ed19f92d --- /dev/null +++ b/img/large/SingleGripper.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/large/TripleGripper.svg b/img/large/TripleGripper.svg new file mode 100644 index 0000000000..2c19bf11d4 --- /dev/null +++ b/img/large/TripleGripper.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Arrow100.svg b/img/medium/Arrow100.svg new file mode 100644 index 0000000000..f1f6c54864 --- /dev/null +++ b/img/medium/Arrow100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Arrow200.svg b/img/medium/Arrow200.svg new file mode 100644 index 0000000000..655b1342dd --- /dev/null +++ b/img/medium/Arrow200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Arrow300.svg b/img/medium/Arrow300.svg new file mode 100644 index 0000000000..64a4e2213c --- /dev/null +++ b/img/medium/Arrow300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Arrow400.svg b/img/medium/Arrow400.svg new file mode 100644 index 0000000000..0c403cf65b --- /dev/null +++ b/img/medium/Arrow400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Arrow500.svg b/img/medium/Arrow500.svg new file mode 100644 index 0000000000..a515402346 --- /dev/null +++ b/img/medium/Arrow500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Arrow600.svg b/img/medium/Arrow600.svg new file mode 100644 index 0000000000..d7eaff8986 --- /dev/null +++ b/img/medium/Arrow600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Arrow75.svg b/img/medium/Arrow75.svg new file mode 100644 index 0000000000..0d24c1720d --- /dev/null +++ b/img/medium/Arrow75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Asterisk100.svg b/img/medium/Asterisk100.svg new file mode 100644 index 0000000000..1f693c545c --- /dev/null +++ b/img/medium/Asterisk100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Asterisk200.svg b/img/medium/Asterisk200.svg new file mode 100644 index 0000000000..b50c78d9ae --- /dev/null +++ b/img/medium/Asterisk200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Asterisk300.svg b/img/medium/Asterisk300.svg new file mode 100644 index 0000000000..cd45f98fec --- /dev/null +++ b/img/medium/Asterisk300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Asterisk75.svg b/img/medium/Asterisk75.svg new file mode 100644 index 0000000000..c35ca44821 --- /dev/null +++ b/img/medium/Asterisk75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark100.svg b/img/medium/Checkmark100.svg new file mode 100644 index 0000000000..9477111ada --- /dev/null +++ b/img/medium/Checkmark100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark200.svg b/img/medium/Checkmark200.svg new file mode 100644 index 0000000000..23c75d16a7 --- /dev/null +++ b/img/medium/Checkmark200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark300.svg b/img/medium/Checkmark300.svg new file mode 100644 index 0000000000..3d37bf7ec2 --- /dev/null +++ b/img/medium/Checkmark300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark400.svg b/img/medium/Checkmark400.svg new file mode 100644 index 0000000000..e91301c00c --- /dev/null +++ b/img/medium/Checkmark400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark50.svg b/img/medium/Checkmark50.svg new file mode 100644 index 0000000000..51488822f5 --- /dev/null +++ b/img/medium/Checkmark50.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark500.svg b/img/medium/Checkmark500.svg new file mode 100644 index 0000000000..23b39b842c --- /dev/null +++ b/img/medium/Checkmark500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark600.svg b/img/medium/Checkmark600.svg new file mode 100644 index 0000000000..a002935c4b --- /dev/null +++ b/img/medium/Checkmark600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Checkmark75.svg b/img/medium/Checkmark75.svg new file mode 100644 index 0000000000..bc058a0a30 --- /dev/null +++ b/img/medium/Checkmark75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron100.svg b/img/medium/Chevron100.svg new file mode 100644 index 0000000000..ef8b2bd90f --- /dev/null +++ b/img/medium/Chevron100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron200.svg b/img/medium/Chevron200.svg new file mode 100644 index 0000000000..a076c5ae9d --- /dev/null +++ b/img/medium/Chevron200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron300.svg b/img/medium/Chevron300.svg new file mode 100644 index 0000000000..4d0f1b17de --- /dev/null +++ b/img/medium/Chevron300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron400.svg b/img/medium/Chevron400.svg new file mode 100644 index 0000000000..42fbadfc09 --- /dev/null +++ b/img/medium/Chevron400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron50.svg b/img/medium/Chevron50.svg new file mode 100644 index 0000000000..e11a5132b3 --- /dev/null +++ b/img/medium/Chevron50.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron500.svg b/img/medium/Chevron500.svg new file mode 100644 index 0000000000..721e419c57 --- /dev/null +++ b/img/medium/Chevron500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron600.svg b/img/medium/Chevron600.svg new file mode 100644 index 0000000000..e890433ece --- /dev/null +++ b/img/medium/Chevron600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Chevron75.svg b/img/medium/Chevron75.svg new file mode 100644 index 0000000000..3d251c10a3 --- /dev/null +++ b/img/medium/Chevron75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/CornerTriangle100.svg b/img/medium/CornerTriangle100.svg new file mode 100644 index 0000000000..575b16ab61 --- /dev/null +++ b/img/medium/CornerTriangle100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/CornerTriangle200.svg b/img/medium/CornerTriangle200.svg new file mode 100644 index 0000000000..d0c982c6b7 --- /dev/null +++ b/img/medium/CornerTriangle200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/CornerTriangle300.svg b/img/medium/CornerTriangle300.svg new file mode 100644 index 0000000000..a2924643e8 --- /dev/null +++ b/img/medium/CornerTriangle300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/CornerTriangle75.svg b/img/medium/CornerTriangle75.svg new file mode 100644 index 0000000000..59daad121d --- /dev/null +++ b/img/medium/CornerTriangle75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Cross100.svg b/img/medium/Cross100.svg new file mode 100644 index 0000000000..8f9da29f5f --- /dev/null +++ b/img/medium/Cross100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Cross200.svg b/img/medium/Cross200.svg new file mode 100644 index 0000000000..4d0d5e9de1 --- /dev/null +++ b/img/medium/Cross200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Cross300.svg b/img/medium/Cross300.svg new file mode 100644 index 0000000000..d0c7a62e60 --- /dev/null +++ b/img/medium/Cross300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Cross400.svg b/img/medium/Cross400.svg new file mode 100644 index 0000000000..c544fc1fe7 --- /dev/null +++ b/img/medium/Cross400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Cross500.svg b/img/medium/Cross500.svg new file mode 100644 index 0000000000..9cb239a4ba --- /dev/null +++ b/img/medium/Cross500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Cross600.svg b/img/medium/Cross600.svg new file mode 100644 index 0000000000..3c8808cdcd --- /dev/null +++ b/img/medium/Cross600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Cross75.svg b/img/medium/Cross75.svg new file mode 100644 index 0000000000..d0e807e491 --- /dev/null +++ b/img/medium/Cross75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash100.svg b/img/medium/Dash100.svg new file mode 100644 index 0000000000..08d7aa139a --- /dev/null +++ b/img/medium/Dash100.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash200.svg b/img/medium/Dash200.svg new file mode 100644 index 0000000000..3ff7980b57 --- /dev/null +++ b/img/medium/Dash200.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash300.svg b/img/medium/Dash300.svg new file mode 100644 index 0000000000..4744c22b7c --- /dev/null +++ b/img/medium/Dash300.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash400.svg b/img/medium/Dash400.svg new file mode 100644 index 0000000000..b991a61e3b --- /dev/null +++ b/img/medium/Dash400.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash50.svg b/img/medium/Dash50.svg new file mode 100644 index 0000000000..339e771115 --- /dev/null +++ b/img/medium/Dash50.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash500.svg b/img/medium/Dash500.svg new file mode 100644 index 0000000000..e29326cf8a --- /dev/null +++ b/img/medium/Dash500.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash600.svg b/img/medium/Dash600.svg new file mode 100644 index 0000000000..3371cb6f3e --- /dev/null +++ b/img/medium/Dash600.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/Dash75.svg b/img/medium/Dash75.svg new file mode 100644 index 0000000000..6daad2c454 --- /dev/null +++ b/img/medium/Dash75.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/DoubleGripper.svg b/img/medium/DoubleGripper.svg new file mode 100644 index 0000000000..816aa5ee7f --- /dev/null +++ b/img/medium/DoubleGripper.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/SingleGripper.svg b/img/medium/SingleGripper.svg new file mode 100644 index 0000000000..45de9af8ac --- /dev/null +++ b/img/medium/SingleGripper.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/medium/TripleGripper.svg b/img/medium/TripleGripper.svg new file mode 100644 index 0000000000..fa6f8147ad --- /dev/null +++ b/img/medium/TripleGripper.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/spectrum-css-icons-large.svg b/img/spectrum-css-icons-large.svg new file mode 100644 index 0000000000..980a437431 --- /dev/null +++ b/img/spectrum-css-icons-large.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/spectrum-css-icons-medium.svg b/img/spectrum-css-icons-medium.svg new file mode 100644 index 0000000000..111d831660 --- /dev/null +++ b/img/spectrum-css-icons-medium.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/spectrum-css-icons.svg b/img/spectrum-css-icons.svg new file mode 100644 index 0000000000..cf77c86196 --- /dev/null +++ b/img/spectrum-css-icons.svg @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/spectrum-css_illustration_desktop.png b/img/spectrum-css_illustration_desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..b585d3d3e0dc5acbdb729fc03bb64f1ac83a96c2 GIT binary patch literal 113866 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 o0mWx3H5ll-QO4Xj>-)bxi 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

    _1^a2EVe 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 +IggA^cjX8F>BDZmvT657Sv(u41S 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≠X@We^XhPJ!>Za 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

    2fb8GTtWdk1eOujj1H;Yg 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 aYb=hB8~OU5Fm*Q@l$BPHDv>n!^1lE(ey!O6 literal 0 HcmV?d00001 diff --git a/img/spectrum-icons.svg b/img/spectrum-icons.svg new file mode 100644 index 0000000000..c731f5cb90 --- /dev/null +++ b/img/spectrum-icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/spectrum_illustration_2x.png b/img/spectrum_illustration_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..42a23966263668acd626802372f75634d29b8f83 GIT binary patch literal 427957 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¨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

    Yp%X!7poBpzERK|8A{;R#d0W`|?US&u%+jsSL6 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

    tHC|HO+-ViNOfwZ-*a7=Uv?Y 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 z�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�{T_TDi`=LT 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

    Spectrum CSS

    Spectrum CSS is an open-source implementation of Spectrum, Adobe’s design system. It includes components and resources to make applications more cohesive.

    Spectrum CSS Hero image
    Documentation illustation

    Robust documentation

    Spectrum CSS is designed to be used in partnership with Spectrum’s detailed usage guidelines.

    View Spectrum guidelines

    Flexible illustation

    Flexible

    Our CSS is customizable, powerful, and designed to work with any JavaScript framework.

    Get started

    Tested illustation

    Rigorously tested

    These individually-versioned components have been vetted to be accessible and inclusive of global audiences.

    Responsove illustation

    Multi-platform support

    We support evergreen browsers (minus one version) for scalability and flexibility.


    \ No newline at end of file diff --git a/index.json b/index.json new file mode 100644 index 0000000000..9197c91c94 --- /dev/null +++ b/index.json @@ -0,0 +1,8785 @@ +{ + "version": "2.3.9", + "fields": [ + "name", + "description" + ], + "fieldVectors": [ + [ + "name/actionbutton.html", + [ + 0, + 16.218, + 1, + 10.491 + ] + ], + [ + "description/actionbutton.html", + [ + 0, + 0.706, + 1, + 0.457, + 2, + 1.105, + 3, + 3.616, + 4, + 3.235, + 5, + 1.105, + 6, + 3.189, + 7, + 2.434, + 8, + 5.311, + 9, + 2.09, + 10, + 1.489, + 11, + 1.253, + 12, + 1.245, + 13, + 2.518, + 14, + 2.866, + 15, + 2.866, + 16, + 1.695, + 17, + 1.695, + 18, + 1.695, + 19, + 0.997, + 20, + 1.489, + 21, + 1.172, + 22, + 1.12, + 23, + 1.489, + 24, + 1.047, + 25, + 0.997, + 26, + 0.952, + 27, + 0.782, + 28, + 0.912 + ] + ], + [ + "name/actiongroup.html", + [ + 0, + 16.218, + 29, + 21.87 + ] + ], + [ + "description/actiongroup.html", + [] + ], + [ + "name/assetcard.html", + [ + 30, + 24.057, + 31, + 25.381 + ] + ], + [ + "description/assetcard.html", + [ + 7, + 1.869, + 19, + 2.553, + 24, + 2.682, + 25, + 2.553, + 26, + 2.438, + 30, + 3.652, + 32, + 4.343, + 33, + 4.088, + 34, + 3.209, + 35, + 2.335 + ] + ], + [ + "name/asset.html", + [ + 30, + 31.108 + ] + ], + [ + "description/asset.html", + [] + ], + [ + "name/alertbanner.html", + [ + 36, + 26.927, + 37, + 34.222 + ] + ], + [ + "description/alertbanner.html", + [ + 0, + 1.555, + 36, + 3.68, + 37, + 3.282, + 38, + 2.434, + 39, + 3.282, + 40, + 2.983, + 41, + 3.735, + 42, + 2.983, + 43, + 3.735, + 44, + 3.282, + 45, + 3.735, + 46, + 3.735, + 47, + 3.735, + 48, + 3.735, + 49, + 2.008, + 50, + 3.282 + ] + ], + [ + "name/alertdialog.html", + [ + 36, + 26.927, + 51, + 26.927 + ] + ], + [ + "description/alertdialog.html", + [] + ], + [ + "name/actionbar.html", + [ + 0, + 16.218, + 52, + 28.784 + ] + ], + [ + "description/actionbar.html", + [ + 0, + 2.247, + 28, + 2.902, + 52, + 3.988, + 53, + 4.31, + 54, + 4.31, + 55, + 5.396 + ] + ], + [ + "name/assetlist.html", + [ + 30, + 24.057, + 56, + 26.927 + ] + ], + [ + "description/assetlist.html", + [ + 12, + 1.475, + 28, + 2.789, + 30, + 3.203, + 56, + 3.586, + 57, + 4.557, + 58, + 4.557, + 59, + 4.557 + ] + ], + [ + "name/avatar.html", + [ + 60, + 44.251 + ] + ], + [ + "description/avatar.html", + [ + 7, + 1.41, + 9, + 1.84, + 12, + 1.637, + 23, + 2.879, + 49, + 1.762, + 60, + 5.586, + 61, + 3.866, + 62, + 2.421, + 63, + 2.617, + 64, + 5.586, + 65, + 4.84, + 66, + 2.617 + ] + ], + [ + "name/breadcrumb.html", + [ + 67, + 50.362 + ] + ], + [ + "description/breadcrumb.html", + [] + ], + [ + "name/button-staticcolor.html", + [ + 1, + 8.552, + 22, + 12.405, + 68, + 31.752 + ] + ], + [ + "description/button-staticcolor.html", + [ + 1, + 1.635, + 6, + 1.944, + 12, + 0.849, + 22, + 1.763, + 25, + 1.754, + 26, + 1.675, + 69, + 2.383, + 70, + 3.605, + 71, + 2.983, + 72, + 3.547, + 73, + 2.983, + 74, + 2.983, + 75, + 2.621, + 76, + 2.205, + 77, + 1.944, + 78, + 2.205, + 79, + 2.621, + 80, + 1.944, + 81, + 2.983 + ] + ], + [ + "name/actionmenu.html", + [ + 0, + 16.218, + 82, + 26.927 + ] + ], + [ + "description/actionmenu.html", + [ + 0, + 2.091, + 1, + 1.353, + 9, + 1.935, + 28, + 1.853, + 82, + 4.098, + 83, + 3.028, + 84, + 3.028, + 85, + 4.012, + 86, + 2.026, + 87, + 2.382, + 88, + 2.752, + 89, + 3.446, + 90, + 3.446, + 91, + 3.446, + 92, + 3.446 + ] + ], + [ + "name/button-negative.html", + [ + 1, + 10.491, + 93, + 31.109 + ] + ], + [ + "description/button-negative.html", + [ + 0, + 2.16, + 1, + 1.397, + 40, + 4.142, + 93, + 5.311, + 94, + 3.833, + 95, + 5.186 + ] + ], + [ + "name/button-primary.html", + [ + 1, + 10.491, + 96, + 34.222 + ] + ], + [ + "description/button-primary.html", + [ + 1, + 1.515, + 12, + 1.599, + 94, + 4.156, + 96, + 4.941, + 97, + 5.623 + ] + ], + [ + "name/button-pending.html", + [ + 1, + 10.491, + 98, + 34.222 + ] + ], + [ + "description/button-pending.html", + [ + 0, + 0.946, + 1, + 0.983, + 2, + 1.481, + 3, + 1.679, + 4, + 1.679, + 9, + 1.276, + 12, + 1.038, + 38, + 1.481, + 50, + 1.997, + 54, + 1.815, + 66, + 1.815, + 70, + 1.815, + 78, + 1.679, + 86, + 1.336, + 98, + 4.6, + 99, + 1.571, + 100, + 1.815, + 101, + 3.869, + 102, + 2.272, + 103, + 2.523, + 104, + 2.272, + 105, + 3.206, + 106, + 1.815, + 107, + 2.272, + 108, + 1.997, + 109, + 2.272, + 110, + 2.697, + 111, + 2.272, + 112, + 1.997 + ] + ], + [ + "name/button-accent.html", + [ + 1, + 10.491, + 113, + 34.222 + ] + ], + [ + "description/button-accent.html", + [ + 0, + 2.576, + 1, + 1.251, + 94, + 3.433, + 114, + 4.081, + 115, + 4.645, + 116, + 4.645, + 117, + 4.645, + 118, + 4.645, + 119, + 4.645 + ] + ], + [ + "name/accordion.html", + [ + 120, + 44.251 + ] + ], + [ + "description/accordion.html", + [ + 10, + 2.81, + 49, + 1.72, + 76, + 2.363, + 88, + 2.554, + 108, + 2.81, + 120, + 2.81, + 121, + 3.198, + 122, + 3.198, + 123, + 3.198, + 124, + 3.198, + 125, + 3.198, + 126, + 4.754, + 127, + 3.198, + 128, + 3.198, + 129, + 3.198, + 130, + 3.198, + 131, + 3.198, + 132, + 3.198, + 133, + 3.198, + 134, + 3.198, + 135, + 2.554, + 136, + 3.198 + ] + ], + [ + "name/buttongroup.html", + [ + 1, + 10.491, + 29, + 21.87 + ] + ], + [ + "description/buttongroup.html", + [] + ], + [ + "name/button-secondary.html", + [ + 1, + 10.491, + 137, + 34.222 + ] + ], + [ + "description/button-secondary.html", + [ + 1, + 1.581, + 94, + 4.339, + 137, + 5.158, + 138, + 5.871 + ] + ], + [ + "name/card-asset.html", + [ + 30, + 19.612, + 31, + 20.692, + 139, + 27.899 + ] + ], + [ + "description/card-asset.html", + [ + 30, + 3.333, + 31, + 3.516, + 33, + 3.73, + 139, + 4.741, + 140, + 4.741, + 141, + 5.396 + ] + ], + [ + "name/badge.html", + [ + 142, + 44.251 + ] + ], + [ + "description/badge.html", + [ + 3, + 4.699, + 4, + 4.254, + 5, + 2.135, + 33, + 3.346, + 142, + 5.058, + 143, + 2.879, + 144, + 2.879, + 145, + 2.617, + 146, + 3.276, + 147, + 2.617, + 148, + 3.276, + 149, + 2.879, + 150, + 2.879, + 151, + 1.364 + ] + ], + [ + "name/card.html", + [ + 31, + 32.82 + ] + ], + [ + "description/card.html", + [] + ], + [ + "name/coachmark.html", + [ + 152, + 34.222, + 153, + 34.222 + ] + ], + [ + "description/coachmark.html", + [] + ], + [ + "name/calendar.html", + [ + 154, + 50.362 + ] + ], + [ + "description/calendar.html", + [] + ], + [ + "name/card-gallery.html", + [ + 31, + 25.381, + 155, + 34.222 + ] + ], + [ + "description/card-gallery.html", + [ + 31, + 4.002, + 61, + 4.905, + 155, + 5.396 + ] + ], + [ + "name/colorhandle.html", + [ + 22, + 15.217, + 156, + 28.784 + ] + ], + [ + "description/colorhandle.html", + [ + 7, + 2.246, + 19, + 2.136, + 22, + 2.039, + 24, + 2.244, + 25, + 2.136, + 26, + 2.04, + 34, + 2.685, + 35, + 1.954, + 38, + 2.368, + 77, + 2.368, + 80, + 2.368, + 86, + 2.136, + 87, + 2.512, + 157, + 2.685, + 158, + 3.633, + 159, + 2.902 + ] + ], + [ + "name/clearbutton.html", + [ + 1, + 10.491, + 160, + 34.222 + ] + ], + [ + "description/clearbutton.html", + [ + 12, + 1.747, + 161, + 4.245, + 162, + 4.002 + ] + ], + [ + "name/coachindicator.html", + [ + 99, + 26.927, + 152, + 34.222 + ] + ], + [ + "description/coachindicator.html", + [] + ], + [ + "name/colorarea.html", + [ + 22, + 15.217, + 163, + 26.927 + ] + ], + [ + "description/colorarea.html", + [ + 7, + 1.839, + 22, + 1.085, + 25, + 1.632, + 26, + 2.399, + 28, + 2.297, + 39, + 1.435, + 72, + 1.064, + 80, + 3.81, + 110, + 2.052, + 151, + 0.68, + 164, + 2.218, + 165, + 1.304, + 166, + 1.435, + 167, + 1.633, + 168, + 2.439, + 169, + 1.809, + 170, + 2.052, + 171, + 1.129, + 172, + 3.182, + 173, + 2.439, + 174, + 1.633, + 175, + 2.218, + 176, + 1.435, + 177, + 2.052, + 178, + 3.622, + 179, + 1.633, + 180, + 1.633, + 181, + 1.633, + 182, + 1.435, + 183, + 1.633, + 184, + 1.633, + 185, + 1.633, + 186, + 1.633 + ] + ], + [ + "name/closebutton.html", + [ + 1, + 10.491, + 187, + 34.222 + ] + ], + [ + "description/closebutton.html", + [ + 1, + 1.515, + 12, + 1.599, + 151, + 2.342, + 187, + 4.941, + 188, + 5.623 + ] + ], + [ + "name/colorloupe.html", + [ + 22, + 15.217, + 159, + 31.109 + ] + ], + [ + "description/colorloupe.html", + [ + 7, + 1.344, + 19, + 1.836, + 22, + 2.186, + 24, + 1.929, + 25, + 1.836, + 26, + 1.754, + 34, + 2.308, + 35, + 1.679, + 38, + 3.044, + 66, + 3.731, + 77, + 2.035, + 80, + 2.035, + 86, + 1.836, + 87, + 2.159, + 156, + 2.308, + 157, + 2.308, + 159, + 3.731, + 169, + 2.035, + 189, + 3.123 + ] + ], + [ + "name/contextualhelp.html", + [ + 190, + 38.948, + 191, + 28.784 + ] + ], + [ + "description/contextualhelp.html", + [] + ], + [ + "name/colorslider.html", + [ + 22, + 15.217, + 170, + 28.784 + ] + ], + [ + "description/colorslider.html", + [ + 6, + 1.268, + 7, + 1.769, + 9, + 0.611, + 12, + 0.751, + 13, + 1.71, + 19, + 1.553, + 22, + 1.606, + 24, + 0.672, + 25, + 1.553, + 26, + 1.806, + 28, + 1.047, + 34, + 0.804, + 72, + 0.709, + 77, + 0.709, + 86, + 0.639, + 110, + 1.438, + 145, + 0.869, + 151, + 0.453, + 156, + 0.804, + 157, + 0.804, + 164, + 0.869, + 165, + 0.869, + 169, + 1.268, + 170, + 1.952, + 171, + 0.752, + 173, + 3.251, + 175, + 0.869, + 177, + 1.438, + 192, + 0.955, + 193, + 1.087, + 194, + 1.087, + 195, + 1.946, + 196, + 1.087, + 197, + 1.71, + 198, + 0.955, + 199, + 1.087, + 200, + 1.087, + 201, + 1.087, + 202, + 3.217, + 203, + 1.346, + 204, + 0.955, + 205, + 1.946, + 206, + 1.946, + 207, + 1.087, + 208, + 1.71, + 209, + 1.71, + 210, + 1.087, + 211, + 0.869, + 212, + 1.087, + 213, + 0.955, + 214, + 1.087, + 215, + 1.087, + 216, + 1.087, + 217, + 1.087, + 218, + 1.087, + 219, + 1.087, + 220, + 1.087, + 221, + 0.955, + 222, + 1.087, + 223, + 1.087, + 224, + 0.869, + 225, + 1.087, + 226, + 1.087 + ] + ], + [ + "name/dropzone.html", + [ + 227, + 26.927, + 228, + 31.109 + ] + ], + [ + "description/dropzone.html", + [ + 0, + 1.074, + 12, + 0.734, + 44, + 2.267, + 49, + 1.387, + 51, + 1.784, + 83, + 2.267, + 135, + 2.061, + 140, + 2.267, + 163, + 1.784, + 171, + 1.784, + 227, + 4.218, + 228, + 3.97, + 229, + 2.58, + 230, + 2.58, + 231, + 2.58, + 232, + 2.061, + 233, + 2.58, + 234, + 2.58, + 235, + 2.58, + 236, + 3.223, + 237, + 2.267, + 238, + 2.267, + 239, + 2.58, + 240, + 2.58, + 241, + 2.58, + 242, + 2.267 + ] + ], + [ + "name/combobox.html", + [ + 243, + 44.251 + ] + ], + [ + "description/combobox.html", + [ + 27, + 2.488, + 82, + 3.73, + 243, + 4.741, + 244, + 5.396, + 245, + 2.785, + 246, + 3.73 + ] + ], + [ + "name/colorwheel.html", + [ + 22, + 15.217, + 247, + 34.222 + ] + ], + [ + "description/colorwheel.html", + [ + 2, + 1.822, + 5, + 0.589, + 7, + 1.965, + 12, + 0.645, + 19, + 2.142, + 20, + 1.446, + 22, + 0.886, + 24, + 0.558, + 25, + 0.531, + 26, + 0.507, + 28, + 0.486, + 33, + 1.138, + 35, + 0.486, + 57, + 0.794, + 77, + 1.073, + 80, + 1.822, + 86, + 0.531, + 88, + 0.722, + 110, + 0.668, + 147, + 0.722, + 149, + 0.794, + 150, + 0.794, + 156, + 0.668, + 163, + 0.625, + 164, + 0.722, + 165, + 0.722, + 166, + 0.794, + 168, + 1.446, + 169, + 1.073, + 171, + 1.138, + 172, + 3.774, + 175, + 0.722, + 176, + 0.794, + 177, + 0.668, + 208, + 1.993, + 247, + 2.456, + 248, + 0.903, + 249, + 0.903, + 250, + 0.903, + 251, + 0.903, + 252, + 0.903, + 253, + 4.811, + 254, + 1.646, + 255, + 1.993, + 256, + 0.794, + 257, + 0.903, + 258, + 0.903, + 259, + 0.794, + 260, + 1.646, + 261, + 0.903, + 262, + 1.646, + 263, + 0.903, + 264, + 1.646, + 265, + 1.315, + 266, + 0.531, + 267, + 0.903, + 268, + 1.646, + 269, + 1.646, + 270, + 0.903, + 271, + 0.903, + 272, + 0.903, + 273, + 2.268, + 274, + 0.903, + 275, + 0.903, + 276, + 0.903, + 277, + 0.903, + 278, + 0.903, + 279, + 0.903 + ] + ], + [ + "name/datepicker.html", + [ + 246, + 26.927, + 280, + 34.222 + ] + ], + [ + "description/datepicker.html", + [ + 1, + 1.006, + 27, + 2.454, + 35, + 2.862, + 203, + 2.582, + 242, + 3.282, + 245, + 2.747, + 246, + 2.582, + 280, + 4.677, + 281, + 5.323, + 282, + 3.735, + 283, + 3.735, + 284, + 3.735 + ] + ], + [ + "name/divider.html", + [ + 285, + 50.362 + ] + ], + [ + "description/divider.html", + [] + ], + [ + "name/form.html", + [ + 286, + 40.226 + ] + ], + [ + "description/form.html", + [ + 224, + 4.31, + 245, + 2.785, + 286, + 5.446, + 287, + 5.396, + 288, + 4.741 + ] + ], + [ + "name/dropindicator.html", + [ + 99, + 26.927, + 227, + 26.927 + ] + ], + [ + "description/dropindicator.html", + [ + 12, + 1.42, + 38, + 3.253, + 56, + 3.451, + 99, + 3.451, + 147, + 3.987, + 227, + 3.451, + 289, + 4.992, + 290, + 3.689 + ] + ], + [ + "name/fieldlabel.html", + [ + 4, + 28.784, + 245, + 20.103 + ] + ], + [ + "description/fieldlabel.html", + [] + ], + [ + "name/floatingactionbutton.html", + [ + 0, + 13.222, + 1, + 8.552, + 53, + 25.361 + ] + ], + [ + "description/floatingactionbutton.html", + [ + 0, + 2.07, + 1, + 1.339, + 12, + 1.148, + 21, + 1.784, + 22, + 1.577, + 38, + 1.681, + 40, + 2.061, + 49, + 1.387, + 53, + 3.223, + 61, + 2.061, + 72, + 1.681, + 209, + 2.267, + 221, + 2.267, + 238, + 2.267, + 256, + 2.267, + 259, + 2.267, + 291, + 2.58, + 292, + 2.58, + 293, + 2.58, + 294, + 2.58, + 295, + 2.58, + 296, + 2.58, + 297, + 2.061, + 298, + 4.035, + 299, + 2.58 + ] + ], + [ + "name/fieldgroup.html", + [ + 29, + 21.87, + 245, + 20.103 + ] + ], + [ + "description/fieldgroup.html", + [ + 1, + 0.92, + 22, + 0.818, + 27, + 2.301, + 29, + 2.429, + 54, + 1.673, + 93, + 2.728, + 151, + 0.872, + 191, + 3.688, + 203, + 1.448, + 245, + 3.044, + 300, + 2.094, + 301, + 3.455, + 302, + 3.455, + 303, + 2.094, + 304, + 2.094, + 305, + 1.84, + 306, + 2.094, + 307, + 3.986, + 308, + 2.094, + 309, + 3.001, + 310, + 2.094, + 311, + 2.094 + ] + ], + [ + "name/checkbox.html", + [ + 302, + 40.226 + ] + ], + [ + "description/checkbox.html", + [ + 5, + 1.902, + 12, + 1.262, + 28, + 2.387, + 36, + 2.018, + 49, + 1.569, + 56, + 2.018, + 99, + 2.018, + 106, + 2.331, + 153, + 2.564, + 266, + 1.716, + 302, + 4.289, + 307, + 2.331, + 312, + 2.157, + 313, + 2.918, + 314, + 3.713, + 315, + 3.9, + 316, + 2.918, + 317, + 2.564, + 318, + 2.564, + 319, + 2.918 + ] + ], + [ + "name/helptext.html", + [ + 27, + 17.958, + 191, + 28.784 + ] + ], + [ + "description/helptext.html", + [] + ], + [ + "name/illustratedmessage.html", + [ + 42, + 31.109, + 320, + 34.222 + ] + ], + [ + "description/illustratedmessage.html", + [ + 0, + 1.14, + 12, + 1.468, + 22, + 1.07, + 35, + 1.473, + 42, + 3.376, + 103, + 1.893, + 113, + 2.406, + 114, + 2.406, + 151, + 1.14, + 163, + 1.893, + 171, + 1.893, + 227, + 2.923, + 228, + 2.187, + 232, + 2.187, + 236, + 2.187, + 320, + 5.1, + 321, + 2.739, + 322, + 2.187, + 323, + 2.739, + 324, + 2.739, + 325, + 2.406, + 326, + 2.739, + 327, + 2.187 + ] + ], + [ + "name/logicbutton.html", + [ + 1, + 10.491, + 328, + 34.222 + ] + ], + [ + "description/logicbutton.html", + [ + 35, + 2.789, + 237, + 4.557, + 266, + 3.049, + 328, + 4.557, + 329, + 5.186, + 330, + 5.186, + 331, + 5.186 + ] + ], + [ + "name/miller.html", + [ + 58, + 34.222, + 59, + 34.222 + ] + ], + [ + "description/miller.html", + [] + ], + [ + "name/infieldbutton.html", + [ + 1, + 10.491, + 245, + 20.103 + ] + ], + [ + "description/infieldbutton.html", + [] + ], + [ + "name/page.html", + [ + 332, + 40.226 + ] + ], + [ + "description/page.html", + [ + 2, + 1.619, + 7, + 2.369, + 9, + 3.091, + 11, + 1.836, + 12, + 1.114, + 77, + 1.619, + 78, + 3.584, + 145, + 1.984, + 162, + 3.161, + 177, + 1.836, + 204, + 2.182, + 236, + 1.984, + 332, + 1.984, + 333, + 2.484, + 334, + 2.484, + 335, + 2.484, + 336, + 2.484, + 337, + 1.984, + 338, + 2.182, + 339, + 2.484, + 340, + 3.917, + 341, + 2.484, + 342, + 2.484 + ] + ], + [ + "name/link.html", + [ + 64, + 44.251 + ] + ], + [ + "description/link.html", + [] + ], + [ + "name/pagination-button-style.html", + [ + 1, + 8.552, + 169, + 20.692, + 343, + 25.361 + ] + ], + [ + "description/pagination-button-style.html", + [] + ], + [ + "name/modal.html", + [ + 344, + 44.251 + ] + ], + [ + "description/modal.html", + [ + 12, + 1.599, + 51, + 3.888, + 151, + 2.342, + 344, + 4.941, + 345, + 4.941 + ] + ], + [ + "name/inlinealert.html", + [ + 36, + 26.927, + 346, + 28.784 + ] + ], + [ + "description/inlinealert.html", + [] + ], + [ + "name/pagination-explicit.html", + [ + 343, + 31.109, + 347, + 38.948 + ] + ], + [ + "description/pagination-explicit.html", + [] + ], + [ + "name/pagination-listing.html", + [ + 332, + 31.109, + 343, + 31.109 + ] + ], + [ + "description/pagination-listing.html", + [] + ], + [ + "name/picker.html", + [ + 246, + 34.818 + ] + ], + [ + "description/picker.html", + [] + ], + [ + "name/opacitycheckerboard.html", + [ + 348, + 34.222, + 349, + 34.222 + ] + ], + [ + "description/opacitycheckerboard.html", + [ + 9, + 2.803, + 12, + 1.42, + 22, + 1.95, + 72, + 3.253, + 348, + 5.7, + 349, + 4.386, + 350, + 4.992 + ] + ], + [ + "name/progressbar.html", + [ + 52, + 28.784, + 101, + 28.784 + ] + ], + [ + "description/progressbar.html", + [] + ], + [ + "name/meter.html", + [ + 351, + 44.251 + ] + ], + [ + "description/meter.html", + [ + 7, + 1.899, + 12, + 0.824, + 19, + 3.986, + 33, + 3.408, + 52, + 1.269, + 76, + 1.269, + 101, + 2.141, + 103, + 1.187, + 143, + 1.509, + 144, + 1.509, + 151, + 0.715, + 213, + 1.509, + 224, + 1.371, + 290, + 1.269, + 337, + 1.371, + 351, + 4.331, + 352, + 1.717, + 353, + 1.717, + 354, + 2.897, + 355, + 1.717, + 356, + 2.314, + 357, + 1.717, + 358, + 1.717, + 359, + 1.717, + 360, + 1.717, + 361, + 1.509, + 362, + 2.897, + 363, + 1.717, + 364, + 2.897, + 365, + 2.897 + ] + ], + [ + "name/progresscircle.html", + [ + 101, + 28.784, + 105, + 34.222 + ] + ], + [ + "description/progresscircle.html", + [] + ], + [ + "name/pickerbutton.html", + [ + 1, + 10.491, + 246, + 26.927 + ] + ], + [ + "description/pickerbutton.html", + [] + ], + [ + "name/popover.html", + [ + 84, + 44.251 + ] + ], + [ + "description/popover.html", + [] + ], + [ + "name/dialog.html", + [ + 51, + 34.818 + ] + ], + [ + "description/dialog.html", + [ + 11, + 2.482, + 51, + 4.038, + 63, + 3.938, + 75, + 2.951, + 79, + 2.951, + 86, + 1.975, + 87, + 2.322, + 366, + 3.359, + 367, + 3.359, + 368, + 3.359, + 369, + 3.359, + 370, + 4.93, + 371, + 3.359, + 372, + 3.359, + 373, + 3.359, + 374, + 2.951, + 375, + 3.359 + ] + ], + [ + "name/dial.html", + [ + 376, + 44.251 + ] + ], + [ + "description/dial.html", + [ + 297, + 4.689, + 376, + 5.158, + 377, + 5.871, + 378, + 5.871 + ] + ], + [ + "name/sidenav.html", + [ + 379, + 34.222, + 380, + 34.222 + ] + ], + [ + "description/sidenav.html", + [ + 12, + 0.849, + 21, + 2.063, + 49, + 2.427, + 69, + 2.383, + 82, + 2.063, + 169, + 1.944, + 211, + 2.383, + 327, + 2.383, + 337, + 2.383, + 379, + 2.621, + 380, + 4.783, + 381, + 2.983, + 382, + 2.983, + 383, + 2.983, + 384, + 2.983, + 385, + 2.983, + 386, + 2.983, + 387, + 2.983, + 388, + 2.983, + 389, + 2.983, + 390, + 2.983, + 391, + 2.983, + 392, + 2.205 + ] + ], + [ + "name/swatch.html", + [ + 393, + 37.219 + ] + ], + [ + "description/swatch.html", + [ + 7, + 1.999, + 19, + 2.731, + 22, + 2.417, + 24, + 2.869, + 26, + 2.608, + 72, + 3.027, + 157, + 3.433, + 393, + 3.433, + 394, + 4.645 + ] + ], + [ + "name/statuslight.html", + [ + 325, + 34.222, + 338, + 34.222 + ] + ], + [ + "description/statuslight.html", + [] + ], + [ + "name/splitview.html", + [ + 395, + 34.222, + 396, + 31.109 + ] + ], + [ + "description/splitview.html", + [] + ], + [ + "name/stepper.html", + [ + 397, + 50.362 + ] + ], + [ + "description/stepper.html", + [] + ], + [ + "name/slider.html", + [ + 170, + 37.219 + ] + ], + [ + "description/slider.html", + [] + ], + [ + "name/radio.html", + [ + 301, + 40.226 + ] + ], + [ + "description/radio.html", + [ + 1, + 1.232, + 5, + 2.378, + 12, + 1.038, + 28, + 1.222, + 49, + 1.962, + 56, + 1.571, + 103, + 3.162, + 106, + 1.815, + 112, + 1.997, + 266, + 1.336, + 297, + 1.815, + 301, + 4.182, + 307, + 2.915, + 309, + 1.997, + 312, + 1.679, + 317, + 3.206, + 318, + 1.997, + 392, + 1.679, + 398, + 2.272, + 399, + 2.272, + 400, + 2.272, + 401, + 2.272, + 402, + 2.272, + 403, + 2.272, + 404, + 2.272, + 405, + 1.815, + 406, + 2.272, + 407, + 2.272 + ] + ], + [ + "name/search.html", + [ + 161, + 34.818 + ] + ], + [ + "description/search.html", + [ + 1, + 1.304, + 2, + 2.135, + 3, + 2.421, + 11, + 2.421, + 12, + 0.932, + 35, + 2.603, + 80, + 2.135, + 151, + 2.016, + 160, + 4.253, + 203, + 3.346, + 245, + 1.691, + 266, + 1.926, + 327, + 2.617, + 392, + 2.421, + 408, + 3.276, + 409, + 3.276, + 410, + 3.276 + ] + ], + [ + "name/swatchgroup.html", + [ + 29, + 21.87, + 393, + 28.784 + ] + ], + [ + "description/swatchgroup.html", + [ + 7, + 2.311, + 9, + 3.016, + 12, + 0.83, + 22, + 1.14, + 29, + 1.639, + 191, + 2.157, + 393, + 4.771, + 411, + 2.918, + 412, + 2.918, + 413, + 2.918, + 414, + 2.918, + 415, + 2.918, + 416, + 2.918, + 417, + 2.918, + 418, + 2.918, + 419, + 2.918, + 420, + 2.918, + 421, + 2.918, + 422, + 2.918 + ] + ], + [ + "name/switch.html", + [ + 423, + 50.362 + ] + ], + [ + "description/switch.html", + [] + ], + [ + "name/tag.html", + [ + 162, + 32.82 + ] + ], + [ + "description/tag.html", + [ + 21, + 2.908, + 29, + 2.362, + 49, + 2.262, + 62, + 3.108, + 161, + 2.908, + 162, + 2.741, + 312, + 3.108, + 314, + 2.908, + 424, + 3.695, + 425, + 3.695, + 426, + 3.695, + 427, + 3.695, + 428, + 3.695 + ] + ], + [ + "name/tabs.html", + [ + 429, + 50.362 + ] + ], + [ + "description/tabs.html", + [] + ], + [ + "name/textfield.html", + [ + 27, + 17.958, + 245, + 20.103 + ] + ], + [ + "description/textfield.html", + [ + 6, + 3.38, + 12, + 1.475, + 27, + 2.391, + 203, + 3.586, + 245, + 2.677, + 346, + 3.833, + 392, + 3.833 + ] + ], + [ + "name/textarea.html", + [ + 27, + 17.958, + 163, + 26.927 + ] + ], + [ + "description/textarea.html", + [ + 6, + 3.38, + 12, + 1.475, + 27, + 2.391, + 245, + 2.677, + 346, + 3.833, + 430, + 5.186, + 431, + 5.186 + ] + ], + [ + "name/taggroup.html", + [ + 29, + 21.87, + 162, + 25.381 + ] + ], + [ + "description/taggroup.html", + [ + 21, + 2.018, + 29, + 3.016, + 49, + 1.569, + 62, + 2.157, + 63, + 2.331, + 161, + 2.018, + 162, + 3.5, + 197, + 2.564, + 286, + 2.331, + 288, + 2.564, + 312, + 2.157, + 314, + 2.018, + 315, + 2.564, + 346, + 2.157, + 424, + 2.564, + 425, + 2.564, + 426, + 2.564, + 427, + 2.564, + 428, + 2.564, + 432, + 2.918, + 433, + 2.918, + 434, + 2.918, + 435, + 2.918 + ] + ], + [ + "name/tray.html", + [ + 436, + 44.251 + ] + ], + [ + "description/tray.html", + [ + 12, + 1.321, + 135, + 3.71, + 151, + 1.934, + 436, + 4.081, + 437, + 4.081, + 438, + 4.645, + 439, + 4.081, + 440, + 4.645, + 441, + 4.645, + 442, + 4.081 + ] + ], + [ + "name/table.html", + [ + 290, + 37.219 + ] + ], + [ + "description/table.html", + [ + 28, + 2.588, + 35, + 2.588, + 103, + 3.327, + 151, + 2.004, + 290, + 3.556, + 443, + 4.812, + 444, + 4.812, + 445, + 4.812, + 446, + 4.812 + ] + ], + [ + "name/toast.html", + [ + 447, + 50.362 + ] + ], + [ + "description/toast.html", + [] + ], + [ + "name/thumbnail.html", + [ + 448, + 50.362 + ] + ], + [ + "description/thumbnail.html", + [] + ], + [ + "name/typography-body.html", + [ + 449, + 19.331, + 450, + 34.222 + ] + ], + [ + "description/typography-body.html", + [ + 7, + 1.999, + 12, + 1.321, + 27, + 2.142, + 151, + 2.576, + 198, + 4.081, + 266, + 2.731, + 345, + 4.081, + 449, + 2.305, + 450, + 4.081 + ] + ], + [ + "name/typography-international.html", + [ + 449, + 19.331, + 451, + 34.222 + ] + ], + [ + "description/typography-international.html", + [ + 5, + 2.741, + 69, + 3.359, + 85, + 3.359, + 211, + 3.359, + 232, + 4.62, + 374, + 3.695, + 449, + 2.087, + 451, + 3.695, + 452, + 4.206, + 453, + 4.206, + 454, + 4.206, + 455, + 4.206 + ] + ], + [ + "name/typography.html", + [ + 449, + 24.997 + ] + ], + [ + "description/typography.html", + [ + 7, + 1.483, + 76, + 2.546, + 151, + 1.435, + 361, + 3.028, + 405, + 2.752, + 449, + 1.71, + 456, + 3.446, + 457, + 3.446, + 458, + 3.446, + 459, + 3.446, + 460, + 3.446, + 461, + 3.446, + 462, + 3.446, + 463, + 3.446, + 464, + 3.446, + 465, + 3.446, + 466, + 3.446, + 467, + 3.446, + 468, + 3.446, + 469, + 3.446 + ] + ], + [ + "name/typography-code.html", + [ + 265, + 31.109, + 449, + 19.331 + ] + ], + [ + "description/typography-code.html", + [ + 12, + 1.475, + 27, + 2.391, + 62, + 3.833, + 151, + 2.16, + 265, + 5.311, + 449, + 2.574 + ] + ], + [ + "name/tooltip.html", + [ + 470, + 50.362 + ] + ], + [ + "description/tooltip.html", + [] + ], + [ + "name/typography-heading.html", + [ + 322, + 31.109, + 449, + 19.331 + ] + ], + [ + "description/typography-heading.html", + [ + 12, + 1.321, + 27, + 2.142, + 151, + 1.934, + 182, + 4.081, + 322, + 3.71, + 449, + 2.305, + 471, + 4.645, + 472, + 4.645, + 473, + 4.645, + 474, + 4.645 + ] + ], + [ + "name/typography-detail.html", + [ + 356, + 31.109, + 449, + 19.331 + ] + ], + [ + "description/typography-detail.html", + [ + 12, + 1.235, + 27, + 2.002, + 151, + 1.808, + 314, + 3.002, + 356, + 3.468, + 439, + 3.816, + 442, + 3.816, + 449, + 2.155, + 475, + 4.343, + 476, + 4.343, + 477, + 4.343, + 478, + 4.343 + ] + ], + [ + "name/well.html", + [ + 479, + 50.362 + ] + ], + [ + "description/well.html", + [] + ], + [ + "name/cyclebutton.html", + [ + 1, + 10.491, + 480, + 38.948 + ] + ], + [ + "description/cyclebutton.html", + [] + ], + [ + "name/splitbutton.html", + [ + 1, + 10.491, + 395, + 34.222 + ] + ], + [ + "description/splitbutton.html", + [] + ], + [ + "name/quickaction.html", + [ + 0, + 16.218, + 100, + 31.109 + ] + ], + [ + "description/quickaction.html", + [ + 0, + 1.555, + 1, + 1.006, + 2, + 2.434, + 7, + 2.291, + 9, + 2.989, + 27, + 1.722, + 35, + 2.008, + 70, + 2.983, + 85, + 2.983, + 86, + 2.196, + 100, + 2.983, + 481, + 5.323, + 482, + 3.735, + 483, + 3.735 + ] + ], + [ + "name/rating.html", + [ + 484, + 50.362 + ] + ], + [ + "description/rating.html", + [] + ], + [ + "name/steplist.html", + [ + 485, + 50.362 + ] + ], + [ + "description/steplist.html", + [] + ], + [ + "name/treeview.html", + [ + 396, + 31.109, + 486, + 34.222 + ] + ], + [ + "description/treeview.html", + [ + 6, + 3.547, + 7, + 2.343, + 78, + 3.335, + 87, + 2.063, + 192, + 2.621, + 266, + 1.754, + 314, + 3.12, + 396, + 2.383, + 405, + 2.383, + 437, + 2.621, + 486, + 2.621, + 487, + 2.983, + 488, + 6.069, + 489, + 2.983, + 490, + 2.983, + 491, + 2.983, + 492, + 2.983 + ] + ], + [ + "name/menu.html", + [ + 82, + 34.818 + ] + ], + [ + "description/menu.html", + [] + ], + [ + "name/searchwithin.html", + [ + 161, + 26.927, + 266, + 22.899 + ] + ], + [ + "description/searchwithin.html", + [ + 151, + 2.445, + 255, + 5.158, + 305, + 5.158, + 493, + 5.871 + ] + ] + ], + "invertedIndex": [ + [ + "", + { + "_index": 19, + "name": {}, + "description": { + "actionbutton.html": {}, + "assetcard.html": {}, + "colorhandle.html": {}, + "colorloupe.html": {}, + "colorslider.html": {}, + "colorwheel.html": {}, + "meter.html": {}, + "swatch.html": {} + } + } + ], + [ + "0", + { + "_index": 205, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "0.1", + { + "_index": 212, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "1", + { + "_index": 206, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "1.1", + { + "_index": 127, + "name": {}, + "description": { + "accordion.html": {} + } + } + ], + [ + "1.1/#accordion", + { + "_index": 131, + "name": {}, + "description": { + "accordion.html": {} + } + } + ], + [ + "100", + { + "_index": 258, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "11", + { + "_index": 378, + "name": {}, + "description": { + "dial.html": {} + } + } + ], + [ + "2", + { + "_index": 256, + "name": {}, + "description": { + "colorwheel.html": {}, + "floatingactionbutton.html": {} + } + } + ], + [ + "255", + { + "_index": 207, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "3:1", + { + "_index": 419, + "name": {}, + "description": { + "swatchgroup.html": {} + } + } + ], + [ + "50", + { + "_index": 259, + "name": {}, + "description": { + "colorwheel.html": {}, + "floatingactionbutton.html": {} + } + } + ], + [ + "70.1", + { + "_index": 262, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "75", + { + "_index": 299, + "name": {}, + "description": { + "floatingactionbutton.html": {} + } + } + ], + [ + "accent", + { + "_index": 113, + "name": { + "button-accent.html": {} + }, + "description": { + "illustratedmessage.html": {} + } + } + ], + [ + "access", + { + "_index": 88, + "name": {}, + "description": { + "actionmenu.html": {}, + "accordion.html": {}, + "colorwheel.html": {} + } + } + ], + [ + "accomplish", + { + "_index": 230, + "name": {}, + "description": { + "dropzone.html": {} + } + } + ], + [ + "accord", + { + "_index": 183, + "name": {}, + "description": { + "colorarea.html": {} + } + } + ], + [ + "accordion", + { + "_index": 120, + "name": { + "accordion.html": {} + }, + "description": { + "accordion.html": {} + } + } + ], + [ + "action", + { + "_index": 0, + "name": { + "actionbutton.html": {}, + "actiongroup.html": {}, + "actionbar.html": {}, + "actionmenu.html": {}, + "floatingactionbutton.html": {}, + "quickaction.html": {} + }, + "description": { + "actionbutton.html": {}, + "alertbanner.html": {}, + "actionbar.html": {}, + "actionmenu.html": {}, + "button-negative.html": {}, + "button-pending.html": {}, + "button-accent.html": {}, + "dropzone.html": {}, + "floatingactionbutton.html": {}, + "illustratedmessage.html": {}, + "quickaction.html": {} + } + } + ], + [ + "actionbutton", + { + "_index": 8, + "name": {}, + "description": { + "actionbutton.html": {} + } + } + ], + [ + "ad", + { + "_index": 492, + "name": {}, + "description": { + "treeview.html": {} + } + } + ], + [ + "add", + { + "_index": 260, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "addit", + { + "_index": 460, + "name": {}, + "description": { + "typography.html": {} + } + } + ], + [ + "against", + { + "_index": 81, + "name": {}, + "description": { + "button-staticcolor.html": {} + } + } + ], + [ + "alert", + { + "_index": 36, + "name": { + "alertbanner.html": {}, + "alertdialog.html": {}, + "inlinealert.html": {} + }, + "description": { + "alertbanner.html": {}, + "checkbox.html": {} + } + } + ], + [ + "allow", + { + "_index": 312, + "name": {}, + "description": { + "checkbox.html": {}, + "radio.html": {}, + "tag.html": {}, + "taggroup.html": {} + } + } + ], + [ + "along", + { + "_index": 321, + "name": {}, + "description": { + "illustratedmessage.html": {} + } + } + ], + [ + "altern", + { + "_index": 223, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "alway", + { + "_index": 106, + "name": {}, + "description": { + "button-pending.html": {}, + "checkbox.html": {}, + "radio.html": {} + } + } + ], + [ + "anoth", + { + "_index": 435, + "name": {}, + "description": { + "taggroup.html": {} + } + } + ], + [ + "api", + { + "_index": 354, + "name": {}, + "description": { + "meter.html": {} + } + } + ], + [ + "appear", + { + "_index": 54, + "name": {}, + "description": { + "actionbar.html": {}, + "button-pending.html": {}, + "fieldgroup.html": {} + } + } + ], + [ + "appli", + { + "_index": 86, + "name": {}, + "description": { + "actionmenu.html": {}, + "button-pending.html": {}, + "colorhandle.html": {}, + "colorloupe.html": {}, + "colorslider.html": {}, + "colorwheel.html": {}, + "dialog.html": {}, + "quickaction.html": {} + } + } + ], + [ + "appropri", + { + "_index": 211, + "name": {}, + "description": { + "colorslider.html": {}, + "sidenav.html": {}, + "typography-international.html": {} + } + } + ], + [ + "area", + { + "_index": 163, + "name": { + "colorarea.html": {}, + "textarea.html": {} + }, + "description": { + "dropzone.html": {}, + "colorwheel.html": {}, + "illustratedmessage.html": {} + } + } + ], + [ + "aria", + { + "_index": 126, + "name": {}, + "description": { + "accordion.html": {} + } + } + ], + [ + "asset", + { + "_index": 30, + "name": { + "assetcard.html": {}, + "asset.html": {}, + "assetlist.html": {}, + "card-asset.html": {} + }, + "description": { + "assetcard.html": {}, + "assetlist.html": {}, + "card-asset.html": {} + } + } + ], + [ + "assetcard", + { + "_index": 32, + "name": {}, + "description": { + "assetcard.html": {} + } + } + ], + [ + "attach", + { + "_index": 189, + "name": {}, + "description": { + "colorloupe.html": {} + } + } + ], + [ + "attribut", + { + "_index": 110, + "name": {}, + "description": { + "button-pending.html": {}, + "colorarea.html": {}, + "colorslider.html": {}, + "colorwheel.html": {} + } + } + ], + [ + "automat", + { + "_index": 216, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "avail", + { + "_index": 360, + "name": {}, + "description": { + "meter.html": {} + } + } + ], + [ + "avatar", + { + "_index": 60, + "name": { + "avatar.html": {} + }, + "description": { + "avatar.html": {} + } + } + ], + [ + "avoid", + { + "_index": 366, + "name": {}, + "description": { + "dialog.html": {} + } + } + ], + [ + "background", + { + "_index": 72, + "name": {}, + "description": { + "button-staticcolor.html": {}, + "colorarea.html": {}, + "colorslider.html": {}, + "floatingactionbutton.html": {}, + "opacitycheckerboard.html": {}, + "swatch.html": {} + } + } + ], + [ + "backward", + { + "_index": 122, + "name": {}, + "description": { + "accordion.html": {} + } + } + ], + [ + "badg", + { + "_index": 142, + "name": { + "badge.html": {} + }, + "description": { + "badge.html": {} + } + } + ], + [ + "banner", + { + "_index": 37, + "name": { + "alertbanner.html": {} + }, + "description": { + "alertbanner.html": {} + } + } + ], + [ + "bar", + { + "_index": 52, + "name": { + "actionbar.html": {}, + "progressbar.html": {} + }, + "description": { + "actionbar.html": {}, + "meter.html": {} + } + } + ], + [ + "bar](progressbar.html", + { + "_index": 352, + "name": {}, + "description": { + "meter.html": {} + } + } + ], + [ + "base", + { + "_index": 221, + "name": {}, + "description": { + "colorslider.html": {}, + "floatingactionbutton.html": {} + } + } + ], + [ + "be", + { + "_index": 261, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "befor", + { + "_index": 16, + "name": {}, + "description": { + "actionbutton.html": {} + } + } + ], + [ + "behavior", + { + "_index": 389, + "name": {}, + "description": { + "sidenav.html": {} + } + } + ], + [ + "below", + { + "_index": 304, + "name": {}, + "description": { + "fieldgroup.html": {} + } + } + ], + [ + "better", + { + "_index": 132, + "name": {}, + "description": { + "accordion.html": {} + } + } + ], + [ + "between", + { + "_index": 182, + "name": {}, + "description": { + "colorarea.html": {}, + "typography-heading.html": {} + } + } + ], + [ + "block", + { + "_index": 198, + "name": {}, + "description": { + "colorslider.html": {}, + "typography-body.html": {} + } + } + ], + [ + "blurri", + { + "_index": 367, + "name": {}, + "description": { + "dialog.html": {} + } + } + ], + [ + "bodi", + { + "_index": 450, + "name": { + "typography-body.html": {} + }, + "description": { + "typography-body.html": {} + } + } + ], + [ + "boolean", + { + "_index": 330, + "name": {}, + "description": { + "logicbutton.html": {} + } + } + ], + [ + "border", + { + "_index": 149, + "name": {}, + "description": { + "badge.html": {}, + "colorwheel.html": {} + } + } + ], + [ + "both", + { + "_index": 11, + "name": {}, + "description": { + "actionbutton.html": {}, + "page.html": {}, + "dialog.html": {}, + "search.html": {} + } + } + ], + [ + "box", + { + "_index": 311, + "name": {}, + "description": { + "fieldgroup.html": {} + } + } + ], + [ + "breadcrumb", + { + "_index": 67, + "name": { + "breadcrumb.html": {} + }, + "description": {} + } + ], + [ + "broken", + { + "_index": 456, + "name": {}, + "description": { + "typography.html": {} + } + } + ], + [ + "button", + { + "_index": 1, + "name": { + "actionbutton.html": {}, + "button-staticcolor.html": {}, + "button-negative.html": {}, + "button-primary.html": {}, + "button-pending.html": {}, + "button-accent.html": {}, + "buttongroup.html": {}, + "button-secondary.html": {}, + "clearbutton.html": {}, + "closebutton.html": {}, + "floatingactionbutton.html": {}, + "logicbutton.html": {}, + "infieldbutton.html": {}, + "pagination-button-style.html": {}, + "pickerbutton.html": {}, + "cyclebutton.html": {}, + "splitbutton.html": {} + }, + "description": { + "actionbutton.html": {}, + "button-staticcolor.html": {}, + "actionmenu.html": {}, + "button-negative.html": {}, + "button-primary.html": {}, + "button-pending.html": {}, + "button-accent.html": {}, + "button-secondary.html": {}, + "closebutton.html": {}, + "datepicker.html": {}, + "floatingactionbutton.html": {}, + "fieldgroup.html": {}, + "radio.html": {}, + "search.html": {}, + "quickaction.html": {} + } + } + ], + [ + "calcault", + { + "_index": 269, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "calcualt", + { + "_index": 276, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "calendar", + { + "_index": 154, + "name": { + "calendar.html": {} + }, + "description": {} + } + ], + [ + "call", + { + "_index": 114, + "name": {}, + "description": { + "button-accent.html": {}, + "illustratedmessage.html": {} + } + } + ], + [ + "canva", + { + "_index": 225, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "card", + { + "_index": 31, + "name": { + "assetcard.html": {}, + "card-asset.html": {}, + "card.html": {}, + "card-gallery.html": {} + }, + "description": { + "card-asset.html": {}, + "card-gallery.html": {} + } + } + ], + [ + "case", + { + "_index": 102, + "name": {}, + "description": { + "button-pending.html": {} + } + } + ], + [ + "categor", + { + "_index": 424, + "name": {}, + "description": { + "tag.html": {}, + "taggroup.html": {} + } + } + ], + [ + "checkbox", + { + "_index": 302, + "name": { + "checkbox.html": {} + }, + "description": { + "fieldgroup.html": {}, + "checkbox.html": {} + } + } + ], + [ + "checkerboard", + { + "_index": 349, + "name": { + "opacitycheckerboard.html": {} + }, + "description": { + "opacitycheckerboard.html": {} + } + } + ], + [ + "child", + { + "_index": 490, + "name": {}, + "description": { + "treeview.html": {} + } + } + ], + [ + "choos", + { + "_index": 242, + "name": {}, + "description": { + "dropzone.html": {}, + "datepicker.html": {} + } + } + ], + [ + "circl", + { + "_index": 105, + "name": { + "progresscircle.html": {} + }, + "description": { + "button-pending.html": {} + } + } + ], + [ + "class", + { + "_index": 9, + "name": {}, + "description": { + "actionbutton.html": {}, + "avatar.html": {}, + "actionmenu.html": {}, + "button-pending.html": {}, + "colorslider.html": {}, + "page.html": {}, + "opacitycheckerboard.html": {}, + "swatchgroup.html": {}, + "quickaction.html": {} + } + } + ], + [ + "class=\"spectrum", + { + "_index": 369, + "name": {}, + "description": { + "dialog.html": {} + } + } + ], + [ + "classnam", + { + "_index": 362, + "name": {}, + "description": { + "meter.html": {} + } + } + ], + [ + "clear", + { + "_index": 160, + "name": { + "clearbutton.html": {} + }, + "description": { + "search.html": {} + } + } + ], + [ + "clip", + { + "_index": 272, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "close", + { + "_index": 187, + "name": { + "closebutton.html": {} + }, + "description": { + "closebutton.html": {} + } + } + ], + [ + "coach", + { + "_index": 152, + "name": { + "coachmark.html": {}, + "coachindicator.html": {} + }, + "description": {} + } + ], + [ + "code", + { + "_index": 265, + "name": { + "typography-code.html": {} + }, + "description": { + "colorwheel.html": {}, + "typography-code.html": {} + } + } + ], + [ + "color", + { + "_index": 22, + "name": { + "button-staticcolor.html": {}, + "colorhandle.html": {}, + "colorarea.html": {}, + "colorloupe.html": {}, + "colorslider.html": {}, + "colorwheel.html": {} + }, + "description": { + "actionbutton.html": {}, + "button-staticcolor.html": {}, + "colorhandle.html": {}, + "colorarea.html": {}, + "colorloupe.html": {}, + "colorslider.html": {}, + "colorwheel.html": {}, + "floatingactionbutton.html": {}, + "fieldgroup.html": {}, + "illustratedmessage.html": {}, + "opacitycheckerboard.html": {}, + "swatch.html": {}, + "swatchgroup.html": {} + } + } + ], + [ + "colorarea", + { + "_index": 172, + "name": {}, + "description": { + "colorarea.html": {}, + "colorwheel.html": {} + } + } + ], + [ + "colorhandl", + { + "_index": 164, + "name": {}, + "description": { + "colorarea.html": {}, + "colorslider.html": {}, + "colorwheel.html": {} + } + } + ], + [ + "colorloup", + { + "_index": 158, + "name": {}, + "description": { + "colorhandle.html": {} + } + } + ], + [ + "colorslid", + { + "_index": 202, + "name": {}, + "description": { + "colorslider.html": {} + } + } + ], + [ + "colorstop", + { + "_index": 336, + "name": {}, + "description": { + "page.html": {} + } + } + ], + [ + "colorwheel", + { + "_index": 253, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "column", + { + "_index": 59, + "name": { + "miller.html": {} + }, + "description": { + "assetlist.html": {} + } + } + ], + [ + "combin", + { + "_index": 244, + "name": {}, + "description": { + "combobox.html": {} + } + } + ], + [ + "combobox", + { + "_index": 243, + "name": { + "combobox.html": {} + }, + "description": { + "combobox.html": {} + } + } + ], + [ + "come", + { + "_index": 14, + "name": {}, + "description": { + "actionbutton.html": {} + } + } + ], + [ + "commun", + { + "_index": 115, + "name": {}, + "description": { + "button-accent.html": {} + } + } + ], + [ + "compar", + { + "_index": 403, + "name": {}, + "description": { + "radio.html": {} + } + } + ], + [ + "compat", + { + "_index": 123, + "name": {}, + "description": { + "accordion.html": {} + } + } + ], + [ + "compon", + { + "_index": 151, + "name": {}, + "description": { + "badge.html": {}, + "colorarea.html": {}, + "closebutton.html": {}, + "colorslider.html": {}, + "fieldgroup.html": {}, + "illustratedmessage.html": {}, + "modal.html": {}, + "meter.html": {}, + "search.html": {}, + "tray.html": {}, + "table.html": {}, + "typography-body.html": {}, + "typography.html": {}, + "typography-code.html": {}, + "typography-heading.html": {}, + "typography-detail.html": {}, + "searchwithin.html": {} + } + } + ], + [ + "component'", + { + "_index": 109, + "name": {}, + "description": { + "button-pending.html": {} + } + } + ], + [ + "const", + { + "_index": 277, + "name": {}, + "description": { + "colorwheel.html": {} + } + } + ], + [ + "contain", + { + "_index": 2, + "name": {}, + "description": { + "actionbutton.html": {}, + "button-pending.html": {}, + "colorwheel.html": {}, + "page.html": {}, + "search.html": {}, + "quickaction.html": {} + } + } + ], + [ + "content", + { + "_index": 21, + "name": {}, + "description": { + "actionbutton.html": {}, + "floatingactionbutton.html": {}, + "sidenav.html": {}, + "tag.html": {}, + "taggroup.html": {} + } + } + ], + [ + "context", + { + "_index": 386, + "name": {}, + "description": { + "sidenav.html": {} + } + } + ], + [ + "contextu", + { + "_index": 190, + "name": { + "contextualhelp.html": {} + }, + "description": {} + } + ], + [ + "contrast", + { + "_index": 416, + "name": {}, + "description": { + "swatchgroup.html": {} + } + } + ], + [ + "control", + { + "_index": 491, + "name": {}, + "description": { + "treeview.html": {} + } + } + ], + [ + "correctli", + { + "_index": 452, + "name": {}, + "description": { + "typography-international.html": {} + } + } + ], + [ + "correspond", + { + "_index": 145, + "name": {}, + "description": { + "badge.html": {}, + "colorslider.html": {}, + "page.html": {} + } + } + ], + [ + "creat", + { + "_index": 471, + "name": {}, + "description": { + "typography-heading.html": {} + } + } + ], + [ + "critic", + { + "_index": 119, + "name": {}, + "description": { + "button-accent.html": {} + } + } + ], + [ + "css", + { + "_index": 77, + "name": {}, + "description": { + "button-staticcolor.html": {}, + "colorhandle.html": {}, + "colorloupe.html": {}, + "colorslider.html": {}, + "colorwheel.html": {}, + "page.html": {} + } + } + ], + [ + "css/tag.html\">tagsIn-field button - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    In-field button

    Component status
    Contribution
    Current version@spectrum-css/infieldbutton@5.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/infieldbutton@6.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Sizing
    Contribution

    +
    +

    S

    + +
    + +
    +

    M

    + +
    + +
    +

    L

    + +
    + +
    +

    XL

    + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeS spectrum-InfieldButton--right" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeS spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use href="#spectrum-icon-18-Add"></use>
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--right" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeM spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use href="#spectrum-icon-18-Add"></use>
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeL spectrum-InfieldButton--right" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeL spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use href="#spectrum-icon-18-Add"></use>
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeXL spectrum-InfieldButton--right" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeXL spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use href="#spectrum-icon-18-Add"></use>
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +</div>
    +

    Quiet
    Contribution

    +
    + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--quiet spectrum-InfieldButton--right" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeM spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use href="#spectrum-icon-18-Add"></use>
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +</div>
    +

    Position
    Contribution

    +
    +

    Start

    + +
    +
    +

    End

    + +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="justify-content: space-around;">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Start</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--left" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeM spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use href="#spectrum-icon-18-Add"></use>
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">End</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--right" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeM spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use href="#spectrum-icon-18-Add"></use>
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +</div>
    +

    Disabled
    Contribution

    +
    Show markup
    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--right" disabled aria-haspopup="listbox" aria-label="Add">
    +  <div class="spectrum-InfieldButton-fill">
    +    <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeM spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +      <use href="#spectrum-icon-18-Add"></use>
    +    </svg>
    +  </div>
    +</button>
    +

    Stacked
    Contribution

    +
    +

    M

    + + +
    + +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--top" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron75" />
    +        </svg>
    +      </div>
    +    </button>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--bottom" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron75" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +</button>
    +

    Stacked
    Contribution

    +
    +

    S

    + + +
    + +
    +

    M

    + + +
    + +
    +

    L

    + + +
    + +
    +

    XL

    + + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeS spectrum-InfieldButton--top" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp50 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Chevron50" />
    +          </svg>
    +      </div>
    +    </button>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeS spectrum-InfieldButton--bottom" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown50 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron50" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--top" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Chevron75" />
    +          </svg>
    +      </div>
    +    </button>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeM spectrum-InfieldButton--bottom" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown75 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron75" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeL spectrum-InfieldButton--top" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp100 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Chevron100" />
    +          </svg>
    +      </div>
    +    </button>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeL spectrum-InfieldButton--bottom" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeXL spectrum-InfieldButton--top" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronUp200 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Chevron200" />
    +          </svg>
    +      </div>
    +    </button>
    +    <button type="button" class="spectrum-InfieldButton spectrum-InfieldButton--sizeXL spectrum-InfieldButton--bottom" aria-haspopup="listbox" aria-label="Add">
    +      <div class="spectrum-InfieldButton-fill">
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown200 spectrum-InfieldButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron200" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +</div>
    +

    Migration Guide


    In-field button uses the Quiet variant instead of loudness levels.

    +

    The Loudness level classes, .spectrum-InfieldButton--low, .spectrum-InfieldButton--medium, and .spectrum-InfieldButton--high, have been removed.

    +
      +
    • Use the base class, .spectrum-InfieldButton, to apply the default button styles. The default styles correspond to what was previously the Loudness - High variant, which used the class .spectrum-InfieldButton--high.
    • +
    • Use the modifier class, spectrum-InfieldButton--quiet, to apply the quiet variant styles. Quiet corresponds to what was previously the Loudness - Low variant, which used the class .spectrum-InfieldButton--low class.
    • +
    +

    The Loudness - Medium variant has been removed, so there is no equivalent.

    +

    Stacked in-field buttons

    +

    In order to create the stacked In-field buttons, give the first button a class of spectrum-InfieldButton--top and the second a class of spectrum-InfieldButton--bottom

    +

    \ No newline at end of file diff --git a/inlinealert.html b/inlinealert.html new file mode 100644 index 0000000000..b0e9e8e8c8 --- /dev/null +++ b/inlinealert.html @@ -0,0 +1,111 @@ +In-line alert - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    In-line alert

    Component status
    Contribution
    Current version@spectrum-css/inlinealert@8.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/inlinealert@9.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Neutral
    Contribution

    +
    Neutral in-line alert header
    +
    This is an alert.
    +
    +
    Show markup
    <div class="spectrum-InLineAlert">
    +  <div class="spectrum-InLineAlert-header">Neutral in-line alert header</div>
    +  <div class="spectrum-InLineAlert-content">This is an alert.</div>
    +</div>
    +

    Informative
    Contribution

    Spectrum for Adobe Express uses a different icon. Use the SX_Info_18_S.svg icon in the Express workflow icon set.

    +
    +
    + Information in-line alert header + +
    +
    This is an alert.
    +
    +
    Show markup
    <div class="spectrum-InLineAlert spectrum-InLineAlert--info">
    +  <div class="spectrum-InLineAlert-header">
    +    Information in-line alert header
    +    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-InLineAlert-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-icon-18-Info" />
    +    </svg>
    +  </div>
    +  <div class="spectrum-InLineAlert-content">This is an alert.</div>
    +</div>
    +

    Positive
    Contribution

    Spectrum for Adobe Express uses a different icon. Use the SX_CheckmarkCircle_18_S.svg icon in the Express workflow icon set.

    +
    +
    + Positive in-line alert header + +
    +
    This is an alert.
    +
    +
    Show markup
    <div class="spectrum-InLineAlert spectrum-InLineAlert--positive">
    +  <div class="spectrum-InLineAlert-header">
    +    Positive in-line alert header
    +    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-InLineAlert-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-icon-18-CheckmarkCircle" />
    +    </svg>
    +  </div>
    +  <div class="spectrum-InLineAlert-content">This is an alert.</div>
    +</div>
    +

    Notice
    Contribution

    Spectrum for Adobe Express uses a different icon. Use the SX_Alert_18_S.svg icon in the Express workflow icon set.

    +
    +
    + Notice in-line alert - Oh no + +
    +
    This is an alert.
    +
    +
    Show markup
    <div class="spectrum-InLineAlert spectrum-InLineAlert--notice">
    +  <div class="spectrum-InLineAlert-header">
    +    Notice in-line alert - Oh no
    +    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-InLineAlert-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-icon-18-Alert" />
    +    </svg>
    +  </div>
    +  <div class="spectrum-InLineAlert-content">This is an alert.</div>
    +</div>
    +

    Negative
    Contribution

    Spectrum for Adobe Express uses a different icon. Use the SX_Alert_18_S.svg icon in the Express workflow icon set.

    +
    +
    + Negative in-line alert header + +
    +
    This is an alert.
    +
    +
    Show markup
    <div class="spectrum-InLineAlert spectrum-InLineAlert--negative">
    +  <div class="spectrum-InLineAlert-header">
    +    Negative in-line alert header
    +    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-InLineAlert-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-icon-18-Alert" />
    +    </svg>
    +  </div>
    +  <div class="spectrum-InLineAlert-content">This is an alert.</div>
    +</div>
    +

    Closable
    Contribution

    An in-line alert with a close button in the footer. Combine this strategy with any variant.

    +

    Spectrum for Adobe Express uses a different icon. Use the SX_Alert_18_S.svg icon in the Express workflow icon set.

    +
    +
    Incorrect Payment Information - Error + +
    +
    This is an alert.
    + +
    +
    Show markup
    <div class="spectrum-InLineAlert spectrum-InLineAlert--negative">
    +  <div class="spectrum-InLineAlert-header">Incorrect Payment Information - Error
    +    <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-InLineAlert-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-icon-18-Alert" />
    +    </svg>
    +  </div>
    +  <div class="spectrum-InLineAlert-content">This is an alert.</div>
    +  <div class="spectrum-InLineAlert-footer">
    +    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary"><span class="spectrum-Button-label">Ok</span></button>
    +  </div>
    +</div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    \ No newline at end of file diff --git a/js/Search.js b/js/Search.js new file mode 100644 index 0000000000..db30e01e4b --- /dev/null +++ b/js/Search.js @@ -0,0 +1,349 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/* global lunr */ + +function Search(el) { + this.index = null; + this.hasResults = false; + this.el = el; + + this.el.innerHTML = ` + +`; + + this.form = this.el.querySelector(".js-form"); + this.popover = this.el.querySelector(".js-popover"); + this.input = this.el.querySelector(".js-input"); + this.searchResults = this.el.querySelector(".js-searchResults"); + this.searchError = this.el.querySelector(".js-searchError"); + this.clearButton = this.el.querySelector(".js-clearButton"); + document.body.appendChild(this.popover); + + this.clearButton.addEventListener("click", this.hideResults.bind(this)); + this.el.addEventListener("submit", this.handleSubmit.bind(this)); + this.el.addEventListener("reset", this.handleReset.bind(this)); + this.input.addEventListener("keydown", this.handleKeyDown.bind(this)); + this.input.addEventListener("keypress", this.handleKeyPress.bind(this)); + + this.popover.addEventListener( + "keydown", + this.handlePopoverNavigation.bind(this) + ); + this.popover.addEventListener("click", this.hideResults.bind(this)); + + this.popover.addEventListener( + "focusin", + this.handleListInteraction.bind(this) + ); + this.popover.addEventListener( + "mouseenter", + this.handleListInteraction.bind(this) + ); + this.popover.addEventListener( + "keydown", + this.handleListInteraction.bind(this) + ); + + this.el.addEventListener( + "focusout", + function (e) { + if ( + !this.el.contains(e.relatedTarget) && + !this.popover.contains(e.relatedTarget) + ) { + // Don't do this right away or Safari gets all pissy + setTimeout(this.hideResults.bind(this), 100); + } + }.bind(this) + ); + + this.input.addEventListener( + "focus", + function () { + const event = new Event("SearchFocused"); + window.dispatchEvent(event); + }.bind(this) + ); + + document.addEventListener( + "keydown", + function (e) { + if (e.key === "/" && document.activeElement === document.body) { + this.input.classList.add("focus-ring"); + this.input.setSelectionRange(0, this.input.value.length); + setTimeout(this.input.focus.bind(this.input), 100); + e.preventDefault(); + } + }.bind(this) + ); + + this.loadIndex(); + this.loadStore(); +} + +Search.Categories = ["components"]; + +Search.CategoryNames = { + components: "Components", +}; + +function loadJSON(url, callback) { + function handleLoad() { + var object = null; + try { + object = JSON.parse(req.responseText); + } + catch (err) { + console.error(`Failed to load JSON from ${url}: ${err}`); + callback(err); + } + + callback(null, object); + } + + var req = new XMLHttpRequest(); + req.addEventListener("load", handleLoad.bind(this)); + req.open("GET", url); + req.send(); +} + +Search.prototype.loadStore = function () { + loadJSON( + "./store.json", + function (err, object) { + this.store = object; + }.bind(this) + ); +}; + +Search.prototype.loadIndex = function () { + loadJSON( + "./index.json", + function (err, object) { + this.index = lunr.Index.load(object); + }.bind(this) + ); +}; + +Search.prototype.handleSubmit = function (event) { + event.preventDefault(); +}; + +Search.prototype.handleReset = function () { + this.hasResults = false; + this.hideResults(); + this.input.value = ""; + this.showHideClear(); +}; + +Search.prototype.showHideClear = function () { + this.clearButton.hidden = this.input.value.length === 0; +}; + +Search.prototype.hideResults = function () { + this.form.setAttribute("aria-expanded", "false"); + this.popover.classList.remove("is-open"); +}; + +Search.prototype.showResults = function () { + this.form.setAttribute("aria-expanded", "true"); + var inputRect = this.input.getBoundingClientRect(); + this.popover.style.top = `${inputRect.bottom + 10}px`; + + var isRTL = + window + .getComputedStyle(document.documentElement, null) + .getPropertyValue("direction") === "rtl"; + + if (isRTL) { + this.popover.style.right = `${window.innerWidth - inputRect.right}px`; + this.popover.style.left = "auto"; + } + else { + this.popover.style.right = "auto"; + this.popover.style.left = `${inputRect.left}px`; + } + + this.popover.classList.add("is-open"); + + let firstItem = this.popover.querySelector(".spectrum-Menu-item"); + if (firstItem) { + // Provide some visual indication that we will navigate here on enter + firstItem.classList.add("is-highlighted"); + } +}; + +Search.prototype.handleListInteraction = function (e) { + let firstItem = this.popover.querySelector(".spectrum-Menu-item"); + if (firstItem) { + firstItem.classList.remove("is-highlighted"); + } +}; + +Search.prototype.handlePopoverNavigation = function (e) { + let currentItem = document.activeElement; + if (currentItem.classList.contains("spectrum-Menu-item")) { + let items = Array.prototype.slice.call( + this.popover.querySelectorAll(".spectrum-Menu-item") + ); + let currentItemIndex = items.indexOf(currentItem); + let newItemIndex = -1; + if (e.key === "ArrowDown") { + newItemIndex = + currentItemIndex + 1 < items.length ? currentItemIndex + 1 : 0; + } + else if (e.key === "ArrowUp") { + newItemIndex = + currentItemIndex - 1 >= 0 ? currentItemIndex - 1 : items.length - 1; + } + else if (e.key === "Home") { + newItemIndex = 0; + } + else if (e.key === "End") { + newItemIndex = items.length - 1; + } + else if (e.key === "Escape") { + this.input.focus(); + } + else if (e.key === "Enter") { + currentItem.click(); + } + if (newItemIndex !== -1) { + items[newItemIndex].focus(); + + // Don't scroll the list + e.preventDefault(); + } + } +}; + +Search.prototype.handleKeyDown = function (e) { + if (e.key === "ArrowDown") { + let firstItem = this.popover.querySelector(".spectrum-Menu-item"); + if (firstItem) { + this.showResults(); + firstItem.focus(); + } + } + else if (e.key === "Escape") { + this.handleReset(); + } +}; + +Search.prototype.handleKeyPress = function (e) { + if (e.key === "Enter") { + let firstItem = this.popover.querySelector(".spectrum-Menu-item"); + if (firstItem) { + firstItem.click(); + this.input.blur(); + this.hideResults(); + } + } + else if (e.key !== "Escape") { + this.showHideClear(); + if (this.input.value.length === 0) { + this.handleReset(); + } + else { + this.doSearch(); + } + } +}; + +Search.prototype.doSearch = function () { + this.search(this.input.value); +}; + +Search.prototype.search = function (val) { + this.searchVal = val; + + let r = []; + if (val.length > 1) { + let searchParam = val + .trim() + .split(" ") + .map((term) => `${term}* ${term}`) + .join(" "); + try { + r = this.index.search(searchParam); + } + catch (err) { + this.popover.innerHTML = ` +
    +

    Search error

    +

    ${err}

    +
    +`; + this.showResults(); + return; + } + } + + let results = { + length: r.length, + components: r.map(function (result) { + return this.store[result.ref]; + }, this), + }; + + this.hasResults = !!r.length; + + if (results.length) { + this.searchError.hidden = true; + this.searchResults.hidden = false; + + let markup = Search.Categories.map((category) => results[category].length ? ` +
  • + + +
  • ` : "").join("\n"); + this.searchResults.innerHTML = markup; + } + else { + this.searchError.hidden = false; + this.searchResults.hidden = true; + } + + this.showResults(); +}; diff --git a/js/SpectrumSwitcher.js b/js/SpectrumSwitcher.js new file mode 100644 index 0000000000..3502e8d5ca --- /dev/null +++ b/js/SpectrumSwitcher.js @@ -0,0 +1,225 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +// eslint-disable-next-line no-unused-vars +class SpectrumSwitcher { + constructor({ varsVersion, theme, scale, direction, callback }) { + this._callback = callback.bind(this); + + this._theme; + this._scale; + this._direction; + this._varsVersion; + + window.addEventListener("keydown", this.keyDownHandler); + window.addEventListener("resize", () => { + if (window.matchMedia("(max-width: 768px)").matches) { + this.scaleMQLHandler(); + } + }); + + window.addEventListener("DOMContentLoaded", () => { + this.theme = theme; + this.scale = scale; + this.direction = direction; + this.varsVersion = varsVersion; + }); + + // Watch the picker event for changes and reflect in the class object + window.addEventListener("picker:change", (event) => { + const value = event.detail.value; + if (event.target.id === "switcher-scale") { + this.scale = value; + } + else if (event.target.id === "switcher-theme") { + this.theme = value; + } + else if (event.target.id === "switcher-direction") { + this.direction = value; + } + else if (event.target.id === "switcher-vars-version") { + this.varsVersion = value; + } + }); + } + + get rootElements() { + return [...document.querySelectorAll(".spectrum")]; + } + + keyDownHandler (event) { + if (!event.ctrlKey) return; + + let property; + let value; + if ((value = { + 1: "light", + 2: "dark", + 3: "darkest", + }[event.key])) { + property = "theme"; + } + else if ((value = { + m: "medium", + l: "large", + }[event.key])) { + property = "scale"; + } + else if ((value = { + r: "rtl", + n: "ltr", + }[event.key])) { + property = "direction"; + } + else if ((value = { + d: "default", + e: "express", + }[event.key])) { + property = "varsVersion"; + } + + this[property] = value; + + if (this._callback) this._callback({ property, value }); + } + + scaleMQLHandler() { + this.scale = window.matchMedia("(max-width: 768px)").matches ? "large" : "medium"; + } + + set theme(input) { + if (this._theme === input) return; + + ["light", "dark", "darkest"].forEach((otherTheme) => { + this.rootElements.forEach(el => el.classList.remove(`spectrum--${otherTheme}`)); + }); + + this.rootElements.forEach(el => el.classList.add(`spectrum--${input}`)); + + if (window.localStorage) { + localStorage.setItem("swc-docs:theme:color", input); + } + + const prismLink = document.querySelector("[data-prism]"); + let prismDarkLink = document.querySelector("[data-prism-dark]"); + + if (input.startsWith("dark") && prismLink) { + if (!prismDarkLink) { + prismDarkLink = document.createElement("link"); + prismDarkLink.setAttribute("rel", "stylesheet"); + prismDarkLink.setAttribute("data-prism-dark", ""); + prismDarkLink.setAttribute("type", "text/css"); + prismDarkLink.setAttribute("href", "css/prism/prism-dark.css"); + } + + prismLink.parentElement.insertBefore( + prismDarkLink, + prismLink.nextElementSibling + ); + } + else if (prismDarkLink) { + prismDarkLink.parentElement.removeChild(prismDarkLink); + } + + if (this._callback) { + this._callback({ + property: "theme", + value: input, + }); + } + + this._theme = input; + } + + get theme () { + return this._theme; + } + + set varsVersion(input) { + if (this._varsVersion === input) return; + + if (input === "express") { + this.rootElements.forEach(el => el.classList.add("spectrum--express")); + } + else { + this.rootElements.forEach(el => el.classList.remove("spectrum--express")); + } + + if (window.localStorage) { + localStorage.setItem("swc-docs:theme:theme", input); + } + + if (this._callback) { + this._callback({ + property: "vars", + value: input, + }); + } + + this._varsVersion = input; + } + + get varsVersion() { + return this._varsVersion; + } + + set scale (input) { + if (this._scale === input) return; + + ["medium", "large"].forEach((otherScale) => { + this.rootElements.forEach(el => el.classList.remove(`spectrum--${otherScale}`)); + }); + + this.rootElements.forEach(el => el.classList.add(`spectrum--${input}`)); + + if (window.localStorage) { + localStorage.setItem("swc-docs:theme:scale", input); + } + + if (this._callback) { + this._callback({ + property: "scale", + value: input, + }); + } + + this._scale = input; + } + + get scale() { + return this._scale; + } + + set direction(input) { + if (this._direction === input) return; + + document.documentElement.setAttribute("dir", input); + + if (window.localStorage) { + localStorage.setItem("swc-docs:theme:dir", input); + } + + if (this._callback) { + this._callback({ + property: "direction", + value: input, + }); + } + + this._direction = input; + } + + get direction() { + return this._direction; + } +} diff --git a/js/adobe-globalnav.js b/js/adobe-globalnav.js new file mode 100644 index 0000000000..af3993e6c8 --- /dev/null +++ b/js/adobe-globalnav.js @@ -0,0 +1,46 @@ +window.adobeGlobalnavConfig = { + locale: "en", + footer: { + target: document.getElementById("footer_global"), + excludeNavigation: true + }, + callbacks: { + globalnav_ready: function() { + document.querySelector(".Footernav-region").style.visibility = "hidden"; + + document.querySelector("#AdobeFooterNav").classList.add("has-spectrum-css-customTheme"); + + var css = document.createElement("style"); + css.type = "text/css"; + + var styles = ` + #AdobeFooterNav.Footernav-wrapper.has-spectrum-css-customTheme { + background-color: var(--spectrum-gray-50); + } + + #AdobeFooterNav.Footernav-wrapper.has-spectrum-css-customTheme .Footernav-disclaimer { + color: var(--spectrum-neutral-content-color-default); + } + + #AdobeFooterNav.Footernav-wrapper.has-spectrum-css-customTheme .Footernav-disclaimer-link:hover { + color: var(--spectrum-neutral-content-color-hover); + } + + #AdobeFooterNav.Footernav-wrapper.has-spectrum-css-customTheme .Footernav-disclaimer.is-adChoices .Footernav-disclaimer-link { + fill: var(--spectrum-neutral-content-color-default); + } + + #AdobeFooterNav.Footernav-wrapper.has-spectrum-css-customTheme .Footernav-disclaimer.is-adChoices .Footernav-disclaimer-link:hover { + fill: var(--spectrum-neutral-content-color-hover); + } + `; + + if (css.styleSheet) + css.styleSheet.cssText = styles; + else + css.appendChild(document.createTextNode(styles)); + + document.getElementsByTagName("head")[0].appendChild(css); + } + } +}; diff --git a/js/docs.js b/js/docs.js new file mode 100644 index 0000000000..0e0d8d5835 --- /dev/null +++ b/js/docs.js @@ -0,0 +1,32 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +/* eslint-disable no-unused-vars */ +/* global loadIcons */ + +"use strict"; + +loadIcons("img/spectrum-css-icons.svg"); +loadIcons("img/spectrum-icons.svg"); + +// Show and hide code samples +document.addEventListener("click", (event) => { + if (!event.target.classList.contains("js-markup-toggle")) return; + + event.preventDefault(); + + const exampleMarkup = event.target.closest(".spectrum-CSSExample-markup"); + const isOpen = exampleMarkup.classList.contains("is-open"); + + event.target.innerHTML = isOpen ? "Show markup" : "Hide markup"; + exampleMarkup.classList.toggle("is-open"); +}); diff --git a/js/enhancement.js b/js/enhancement.js new file mode 100644 index 0000000000..c35f59f536 --- /dev/null +++ b/js/enhancement.js @@ -0,0 +1,966 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/* Global holder tracking open pickers to ensure only 1 is ever open at a time */ +let openPicker; + +function furthest(el, selector) { + let lastMatch; + while (el) { + if (el.matches && el.matches(selector)) lastMatch = el; + el = el.parentNode; + } + + return lastMatch; +} + +// Add or remove focused or keyboard focused classes on element. +function setFocusClasses(element, target, focused) { + const focusClass = target.classList.contains("is-keyboardFocused") + ? "is-keyboardFocused" + : "is-focused"; + + if (focused) { + element.classList.add(focusClass); + } + else { + element.classList.remove("is-keyboardFocused"); + element.classList.remove("is-focused"); + } +} + +function togglePicker(picker, force = undefined) { + if (!picker) return; + + const isOpen = force !== undefined ? force : !picker.classList.contains("is-open"); + + if (isOpen) { + picker.setAttribute("aria-expanded", "true"); + + if (openPicker && openPicker !== picker) { + togglePicker(openPicker, false); + } + openPicker = picker; + } + else { + picker.removeAttribute("aria-expanded"); + } + + picker.classList.toggle("is-open", isOpen); + picker.classList.toggle("is-selected", isOpen); + + const popover = picker.nextElementSibling?.matches(".spectrum-Popover") ? picker.nextElementSibling : undefined; + if (!popover) return; + + // We have to get the coordinates relative to the parent + const parent = popover.closest(".spectrum-CSSExample-container") ?? document.querySelector("body"); + const parentRect = parent.getBoundingClientRect(); + + const transforms = []; + popover.style.zIndex = 1; + + const rect = picker.getBoundingClientRect(); + const triggerBottom = rect.bottom - parentRect.top; + + popover.style.left = rect.left - parentRect.left + "px"; + popover.style.top = triggerBottom + "px"; + popover.style.transform = transforms.join(" "); + + popover.classList.toggle("is-open", isOpen); + popover.querySelector(".spectrum-Menu-item").focus(); +} + +function setPickerValue(picker, value, label = undefined) { + if (!picker) return; + + picker.setAttribute("value", value); + + const menu = picker.nextElementSibling.querySelector(".spectrum-Menu"); + if (!menu) return; + + const menuItem = menu.querySelector( + ".spectrum-Menu-item[value=\"" + value + "\"]" + ); + + if (menuItem) { + const selectedMenuItem = menu.querySelector( + ".spectrum-Menu-item.is-selected" + ); + + if (selectedMenuItem) { + selectedMenuItem.classList.remove("is-selected"); + selectedMenuItem.removeAttribute("aria-selected"); + } + + menuItem.classList.add("is-selected"); + menuItem.setAttribute("aria-selected", "true"); + + if (!label) { + const menuLabel = menuItem.querySelector(".spectrum-Menu-itemLabel"); + if (menuLabel) { + label = menuLabel.innerHTML; + } + } + } + + if (picker && label) { + const pickerLabel = picker.querySelector(".spectrum-Picker-label"); + if (pickerLabel) { + pickerLabel.innerHTML = label; + } + } + + picker.dispatchEvent(new CustomEvent("picker:change", { + bubbles: true, + detail: { label, value }, + })); +} + +window.addEventListener("DOMContentLoaded", () => { + [...document.querySelectorAll(".spectrum-DropZone")].forEach((dropzone) => { + dropzone.addEventListener("dragover", (event) => { + // prevent default to allow drop + event.preventDefault(); + }, false); + + dropzone.addEventListener("dragenter", () => { + dropzone.classList.add("is-dragged"); + }); + + dropzone.addEventListener("dragleave", () => { + dropzone.classList.remove("is-dragged"); + }); + + dropzone.addEventListener("drop", (event) => { + event.preventDefault(); + }); + }); + + [...document.querySelectorAll(".spectrum-Swatch")].forEach((swatch) => { + swatch.addEventListener("click", (event) => { + const el = event.target; + if (el.classList.contains("is-disabled")) return; + + el.classList.toggle("is-selected"); + }); + }); + + [...document.querySelectorAll(".spectrum-AssetCard")].forEach((assetcard) => { + assetcard.addEventListener("click", () => { + const checkbox = assetcard.querySelector(".spectrum-Checkbox-input"); + if (checkbox) { + checkbox.checked = !assetcard.classList.contains("is-selected"); + } + + assetcard.classList.toggle("is-selected"); + }); + }); + + /* TODO: is there a keypress behavior for rating? */ + [...document.querySelectorAll(".spectrum-Rating")].forEach((rating) => { + rating.addEventListener("focusin", (event) => { + const el = event.target; + el.classList.add("is-focused"); + }); + + rating.addEventListener("focusout", (event) => { + const el = event.target; + el.classList.remove("is-focused"); + }); + + const input = rating.querySelector(".spectrum-Rating-input"); + input.addEventListener("change", (event) => { + const el = event.target; + if (el.hasAttribute("readonly")) { + event.preventDefault(); + el.value = event.defaultValue; + } + else { + const value = parseInt(el.value, 10); + input.value = value; + + [...rating.querySelectorAll(".spectrum-Rating-icon")].forEach((el, index) => { + el.classList[index <= value - 1 ? "add" : "remove"]("is-selected"); + el.classList[index === value - 1 ? "add" : "remove"]("is-currentValue"); + }); + } + }); + + [...rating.querySelectorAll(".spectrum-Rating-icon")].forEach((icon, idx, allIcons) => { + icon.addEventListener("click", () => { + const value = allIcons[idx] + 1; + input.value = value; + + allIcons.forEach((el, index) => { + el.classList[index <= value - 1 ? "add" : "remove"]("is-selected"); + el.classList[index === value - 1 ? "add" : "remove"]("is-currentValue"); + }); + }); + }); + }); + + [...document.querySelectorAll(".spectrum-Textfield, .spectrum-Combobox, .spectrum-Stepper")].forEach((input) => { + // -- Bubble up focus classes to component's parent element. + input.addEventListener("focusin", (event) => { + setFocusClasses(input, event.target, true); + }); + input.addEventListener("focusout", (event) => { + setFocusClasses(input, event.target, false); + }); + }); + + [...document.querySelectorAll(".spectrum-Menu")].forEach((menu) => { + menu.addEventListener("click", (event) => { + const popover = menu.closest(".spectrum-Popover"); + const picker = popover?.previousElementSibling?.matches(".spectrum-Picker") ? popover.previousElementSibling : undefined; + + const menuItem = event.target.closest(".spectrum-Menu-item"); + if (!menuItem) return; + + const menuLabel = menuItem.querySelector(".spectrum-Menu-itemLabel"); + if (!menuLabel) return; + + const pickerLabel = picker.querySelector(".spectrum-Picker-label"); + if (!pickerLabel) return; + + pickerLabel.innerHTML = menuLabel.innerHTML; + + event.stopPropagation(); + + const value = menuItem.getAttribute("value"); + const label = menuLabel.innerHTML; + + if (picker) { + togglePicker(picker, false); + setPickerValue(picker, value, label); + } + }); + }); + + [...document.querySelectorAll(".spectrum-Picker")].forEach((picker) => { + picker.addEventListener("click", (event) => { + const el = event.target; + const isOpen = !el.classList.contains("is-open"); + togglePicker(picker, isOpen); + }); + }); + + [...document.querySelectorAll(".spectrum-Accordion")].forEach((accordion) => { + [...accordion.querySelectorAll(".spectrum-Accordion-item")].forEach(accordionItem => { + const button = accordionItem.querySelector(".spectrum-Accordion-itemHeading"); + button.addEventListener("click", (event) => { + const isDisabled = accordionItem.classList.contains("is-disabled"); + if (isDisabled) return; + + accordionItem.classList.toggle("is-open"); + event.preventDefault(); + }); + }); + }); + + [...document.querySelectorAll(".spectrum-CycleButton")].forEach((cycleButton) => { + cycleButton.addEventListener("click", () => { + const icons = [...cycleButton.querySelectorAll(".spectrum-Icon")]; + const currentIcon = cycleButton.querySelector(".spectrum-Icon.is-selected"); + const currentIconIndex = icons.indexOf(currentIcon); + + if (!currentIcon) return; + currentIcon.classList.remove("is-selected"); + + const newIndex = currentIconIndex + 1 < icons.length ? currentIconIndex + 1 : 0; + icons[newIndex].classList.add("is-selected"); + }); + }); + + [...document.querySelectorAll(".spectrum-TreeView")].forEach((treeview) => { + [...treeview.querySelectorAll(".spectrum-TreeView-item")].forEach(treeviewItem => { + treeviewItem.addEventListener("click", (event) => { + const isDisabled = treeviewItem.classList.contains("is-disabled"); + if (isDisabled) return; + + let el; + + if ( + (el = event.target.closest(".spectrum-TreeView-itemIndicator")) !== null + ) { + treeviewItem.classList.toggle("is-open"); + event.preventDefault(); + } + else if ( + (el = event.target.closest(".spectrum-TreeView-itemLink")) !== null + ) { + if (!(event.shiftKey || event.metaKey)) { + // Remove other selected items + const outerTreeview = furthest(el, ".spectrum-TreeView"); + if (outerTreeview) { + [...outerTreeview.querySelectorAll(".spectrum-TreeView-item.is-selected")].forEach(item => { + if (item != treeviewItem) { + item.classList.remove("is-selected"); + + var thumbnail = item.querySelector( + ".spectrum-TreeView-itemThumbnail" + ); + if (thumbnail) { + thumbnail.classList.remove("is-selected"); + } + } + }); + } + } + + const thumbnail = treeviewItem.querySelector(".spectrum-TreeView-itemThumbnail"); + if (thumbnail) { + const selected = treeviewItem.classList.toggle("is-selected"); + thumbnail.classList.toggle("is-selected", !selected); + } + + event.preventDefault(); + } + }); + }); + }); + + [...document.querySelectorAll(".spectrum-Slider")].forEach(slider => { + const handles = [...slider.querySelectorAll(".spectrum-Slider-handle")]; + + const isColor = slider.classList.contains("spectrum-Slider--color"); + const value = slider.querySelector(".spectrum-Slider-value"); + const fill = slider.querySelector(".spectrum-Slider-fill"); + + let init; + + if (handles.length > 1) { + let handle; + + const onMouseUp = function () { + window.removeEventListener("mouseup", onMouseUp); + window.removeEventListener("mousemove", onMouseMove); + document.body.classList.remove("u-isGrabbing"); + handle = undefined; + }; + + const onMouseMove = function (e) { + if (!handle) return; + + const [leftTrack, middleTrack, rightTrack] = [...slider.querySelectorAll(".spectrum-Slider-track")]; + + const leftHandle = handles[0]; + const rightHandle = handles[1]; + + const sliderOffsetWidth = slider.offsetWidth; + const sliderOffsetLeft = slider.offsetLeft + slider.offsetParent.offsetLeft; + + const x = Math.max(Math.min(e.x - sliderOffsetLeft, sliderOffsetWidth), 0); + let percent = Math.round((x / sliderOffsetWidth) * 100); + + const isRTL = slider.dir === "rtl"; + + if (isRTL) { + percent = 100 - percent; + } + + if (handle === leftHandle) { + if (percent < parseFloat(rightHandle.style[isRTL ? "right" : "left"])) { + if (isRTL) { + handle.style.right = `${percent}%`; + handle.style.left = "auto"; + } + else { + handle.style.right = "auto"; + handle.style.left = `${percent}%`; + } + + leftTrack.style.width = `${percent}%`; + } + } + else { + if (percent > parseFloat(leftHandle.style[isRTL ? "right" : "left"])) { + if (isRTL) { + handle.style.right = `${percent}%`; + handle.style.left = "auto"; + } + else { + handle.style.right = "auto"; + handle.style.left = `${percent}%`; + } + + rightTrack.style.width = `${100 - percent}%`; + } + } + + if (isRTL) { + middleTrack.style.right = leftHandle.style.right; + middleTrack.style.left = 100 - parseFloat(rightHandle.style.right) + "%"; + } + else { + middleTrack.style.left = leftHandle.style.left; + middleTrack.style.right = 100 - parseFloat(rightHandle.style.left) + "%"; + } + }; + + const onMouseDown = function (e) { + if (e.target.classList.contains("spectrum-Slider-handle")) { + handle = e.target; + window.addEventListener("mouseup", onMouseUp); + window.addEventListener("mousemove", onMouseMove); + document.body.classList.add("u-isGrabbing"); + } + }; + + init = function () { + const [leftTrack, middleTrack, rightTrack] = [...slider.querySelectorAll(".spectrum-Slider-track")]; + + const leftHandle = handles[0]; + const rightHandle = handles[1]; + + const isRTL = slider.dir === "rtl"; + + // Set initial track position + let startPercent, endPercent; + if (isRTL) { + leftHandle.style.right = leftHandle.style.left; + leftHandle.style.left = leftHandle.style.right; + rightHandle.style.right = rightHandle.style.left; + rightHandle.style.left = rightHandle.style.right; + + startPercent = parseFloat(leftHandle.style.right); + endPercent = parseFloat(rightHandle.style.right); + + middleTrack.style.right = startPercent + "%"; + middleTrack.style.left = 100 - endPercent + "%"; + } + else { + startPercent = parseFloat(leftHandle.style.left); + endPercent = parseFloat(rightHandle.style.left); + + middleTrack.style.left = startPercent + "%"; + middleTrack.style.right = 100 - endPercent + "%"; + } + + leftTrack.style.width = startPercent + "%"; + rightTrack.style.width = 100 - endPercent + "%"; + + if (!slider.classList.contains("is-disabled")) { + slider.addEventListener("mousedown", onMouseDown); + } + }; + } + else { + const handle = handles[0]; + + const buffers = [...slider.querySelectorAll(".spectrum-Slider-buffer")]; + + let leftBuffer, rightBuffer, bufferedAmount; + if (buffers.length) { + const isRTL = slider.dir === "rtl"; + + leftBuffer = buffers[0]; + rightBuffer = buffers[1]; + + bufferedAmount = + parseInt(handle.style[isRTL ? "right" : "left"], 10) + + parseInt(rightBuffer.style.width, 10); + } + + const onMouseUp = function () { + window.removeEventListener("mouseup", onMouseUp); + window.removeEventListener("mousemove", onMouseMove); + handle.classList.remove("is-dragged"); + }; + + const onMouseMove = function (e) { + const [leftTrack, rightTrack] = [...slider.querySelectorAll(".spectrum-Slider-track")]; + + const sliderOffsetWidth = slider.offsetWidth; + const sliderOffsetLeft = slider.offsetLeft + slider.offsetParent.offsetLeft; + + const x = Math.max(Math.min(e.x - sliderOffsetLeft, sliderOffsetWidth), 0); + let percent = Math.round((x / sliderOffsetWidth) * 100); + + const isRTL = slider.dir === "rtl"; + + if (isRTL) { + percent = 100 - percent; + } + + if (value) { + value.innerText = percent; + } + + if (leftTrack && rightTrack && !isColor) { + leftTrack.style.width = `${percent}%`; + rightTrack.style.width = `${100 - percent}%`; + } + + if (isRTL) { + handle.style.right = `${percent}%`; + handle.style.left = "auto"; + } + else { + handle.style.right = "auto"; + handle.style.left = `${percent}%`; + } + + if (buffers.length) { + if (percent >= bufferedAmount) { + // Hide the right buffer + rightBuffer.style.width = 0; + rightBuffer.style.left = "auto"; + rightBuffer.style.right = "auto"; + + // This disgusting calculation takes into account the pretty gap + const bufferStyle = window.getComputedStyle(leftBuffer); + + // The left buffer is offset by the gap and some margin, so we have to add that back to make it actually hit the desired value + let handleGap, bufferOffset, bufferMaxWidth; + if (isRTL) { + handleGap = parseInt(bufferStyle.paddingLeft, 10); + bufferOffset = parseInt(bufferStyle.marginRight, 10) * -1; + bufferMaxWidth = (handle.parentElement.offsetWidth - handle.offsetLeft) + handle.offsetWidth / 2; + } + else { + handleGap = parseInt(bufferStyle.paddingRight, 10); + bufferOffset = parseInt(bufferStyle.marginLeft, 10) * -1; + bufferMaxWidth = handle.offsetLeft + handle.offsetWidth / 2; + } + + const actualMiddle = + handle.parentElement.offsetWidth / 2 + bufferOffset + handleGap; + + // Keep the left buffer to account for the nasty gaps + leftBuffer.style.width = Math.min(bufferMaxWidth, actualMiddle) + "px"; + } + else { + leftBuffer.style.width = `${percent}%`; + rightBuffer.style.width = "auto"; + + if (isRTL) { + rightBuffer.style.right = `${percent}%`; + rightBuffer.style.left = `${100 - bufferedAmount}%`; + } + else { + rightBuffer.style.right = `${100 - bufferedAmount}%`; + rightBuffer.style.left = `${percent}%`; + } + } + } + + if (fill) { + if (isRTL) { + fill.style.right = `${(percent < 50 ? percent : 50)}%`; + } + else { + fill.style.left = `${(percent < 50 ? percent : 50)}%`; + } + + fill.style.width = `${(percent < 50 ? 50 - percent : percent - 50)}%`; + fill.classList.toggle("spectrum-Slider-fill--right", percent > 50); + } + }; + + const onMouseDown = function (e) { + window.addEventListener("mouseup", onMouseUp); + window.addEventListener("mousemove", onMouseMove); + handle.classList.add("is-dragged"); + // to move by merely clicking on the track + onMouseMove(e); + }; + + init = function () { + const isRTL = slider.dir === "rtl"; + const [leftTrack, rightTrack] = [...slider.querySelectorAll(".spectrum-Slider-track")]; + + if (isRTL) { + handle.style.right = handle.style.left; + handle.style.left = handle.style.right; + if (fill) { + fill.style.right = fill.style.left; + fill.style.left = fill.style.right; + } + + if (buffers.length) { + var oldRightRight = rightBuffer.style.right; + rightBuffer.style.right = rightBuffer.style.left; + rightBuffer.style.left = oldRightRight; + var oldLeftRight = leftBuffer.style.right; + leftBuffer.style.right = leftBuffer.style.left; + leftBuffer.style.left = oldLeftRight; + } + + if (tracks.length) { + // Flip colors + if (tracks[0].style.background) { + tracks[0].style.background = tracks[0].style.background.replace( + "right", + "left" + ); + } + } + } + + // Set initial track position + let percent; + if (isRTL) { + percent = parseInt(handle.style.right, 10); + } + else { + percent = parseInt(handle.style.left, 10); + } + + if (leftTrack && rightTrack && !isColor) { + leftTrack.style.width = `${percent}%`; + rightTrack.style.width = `${100 - percent}%`; + } + + if (!slider.classList.contains("is-disabled")) { + slider.addEventListener("mousedown", onMouseDown); + } + }; + } + + const observer = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + if (mutation.type === "attributes" && mutation.attributeName === "dir") { + init(); + } + }); + }); + + observer.observe(document.documentElement, { + attributes: true, //configure it to listen to attribute changes + }); + + init(); + }); + + [...document.querySelectorAll(".spectrum-Dial")].forEach(dial => { + const dialOffsetWidth = dial.offsetWidth; + const dialOffsetLeft = dial.offsetLeft + dial.offsetParent.offsetLeft; + const handle = dial.querySelector(".spectrum-Dial-handle"); + const min = -45; + const max = 225; + + function onMouseDown() { + window.addEventListener("mouseup", onMouseUp); + window.addEventListener("mousemove", onMouseMove); + document.body.classList.add("u-isGrabbing"); + } + + function onMouseUp() { + window.removeEventListener("mouseup", onMouseUp); + window.removeEventListener("mousemove", onMouseMove); + document.body.classList.remove("u-isGrabbing"); + } + + function onMouseMove(e) { + const x = Math.max(Math.min(e.x - dialOffsetLeft, dialOffsetWidth), 0); + const percent = (x / dialOffsetWidth) * 100; + + const deg = percent * 0.01 * (max - min) + min; + handle.style.transform = `rotate(${deg}deg)`; + } + + if (!dial.classList.contains("is-disabled")) { + dial.addEventListener("mousedown", onMouseDown); + } + }); + + // Kicks off the loader animation + let value = 0; + setInterval(() => { + const loaders = [...document.querySelectorAll( + ".spectrum-CircleLoader:not(spectrum-CircleLoader--indeterminate)" + )]; + if (!loaders.length) return; + + loaders.forEach(loader => { + const v = value++; + + let submask1 = loader.querySelector(".spectrum-CircleLoader-fillSubMask1"); + let submask2 = loader.querySelector(".spectrum-CircleLoader-fillSubMask2"); + let angle; + + if (v > 0 && v <= 50) { + angle = -180 + (v / 50) * 180; + submask1.style.transform = "rotate(" + angle + "deg)"; + submask2.style.transform = "rotate(-180deg)"; + } + else if (v > 50) { + angle = -180 + ((v - 50) / 50) * 180; + submask1.style.transform = "rotate(0deg)"; + submask2.style.transform = "rotate(" + angle + "deg)"; + } + }); + + if (value >= 100) value = 0; + }, 500); +}); + +window.addEventListener("click", (event) => { + const menu = event.target.closest(".spectrum-Menu"); + const picker = event.target.closest(".spectrum-Picker"); + + if (!picker && !menu && openPicker) togglePicker(openPicker, false); +}); + +document.addEventListener("keypress", (event) => { + const swatch = event.target.closest(".spectrum-Swatch"); + if (swatch && (event.key === "Enter" || event.key === " ")) { + if (!swatch.classList.contains("is-disabled")) { + swatch.classList.toggle("is-selected", !swatch.classList.contains("is-selected")); + } + + event.preventDefault(); + } + + const assetcard = event.target.closest(".spectrum-AssetCard"); + if (assetcard && (event.key === "Enter" || event.key === " ")) { + const checkbox = assetcard.querySelector(".spectrum-Checkbox-input"); + if (checkbox) { + checkbox.checked = !assetcard.classList.contains("is-selected"); + } + + assetcard.classList.toggle("is-selected"); + + event.preventDefault(); + } + + const menuItem = event.target.closest(".spectrum-Menu-item"); + if (menuItem) { + const menu = menuItem.closest(".spectrum-Menu"); + if (menuItem.classList.contains("spectrum-Menu-item")) { + const items = [...menu.querySelectorAll(".spectrum-Menu-item:not(.is-disabled)")]; + const menuItemIndex = items.indexOf(menuItem); + let newItemIndex = -1; + if (event.key === "ArrowDown") { + newItemIndex = + menuItemIndex + 1 < items.length ? menuItemIndex + 1 : 0; + } + else if (event.key === "ArrowUp") { + newItemIndex = + menuItemIndex - 1 >= 0 ? menuItemIndex - 1 : items.length - 1; + } + else if (event.key === "Home") { + newItemIndex = 0; + } + else if (event.key === "End") { + newItemIndex = items.length - 1; + } + else if (event.key === "Escape") { + const picker = event.target.closest(".spectrum-Picker"); + togglePicker(picker, false); + picker.focus(); + } + else if (event.key === "Enter") { + const value = menuItem.getAttribute("value"); + const menuLabel = menuItem.querySelector(".spectrum-Menu-itemLabel"); + const label = menuLabel.innerHTML; + + if (picker) { + togglePicker(picker, false); + setPickerValue(picker, value, label); + } + + const picker = popover?.previousElementSibling?.matches(".spectrum-Picker") ? popover.previousElementSibling : undefined; + const popover = menu.closest(".spectrum-Popover"); + + togglePicker(picker, false); + picker.focus(); + + event.preventDefault(); + } + if (newItemIndex !== -1) { + items[newItemIndex].focus(); + + // Don't scroll the list + event.preventDefault(); + } + } + } + else if (event.key === "ArrowDown") { + const targetPicker = event.target.closest(".spectrum-Picker"); + if (targetPicker) togglePicker(targetPicker, true); + } +}); + +// eslint-disable-next-line no-unused-vars -- Used in dialog docs +function openDialog(dialog, withOverlay) { + if (withOverlay !== false) { + document.getElementById("spectrum-underlay").classList.add("is-open"); + } + + dialog.classList.add("is-open"); + + // Support wrapped dialogs + const innerDialog = dialog.querySelector(".spectrum-Modal"); + if (!innerDialog) return; + + innerDialog.classList.add("is-open"); +} + +// eslint-disable-next-line no-unused-vars -- Used in dialog docs +function closeDialog(dialog) { + document.getElementById("spectrum-underlay").classList.remove("is-open"); + dialog.classList.remove("is-open"); + + // Support wrapped dialogs + const innerDialog = dialog.querySelector(".spectrum-Modal"); + if (innerDialog) { + innerDialog.classList.remove("is-open"); + } + + setTimeout(() => { + dialog.classList.remove("spectrum-CSSExample-dialog"); + }, 130); +} + +// eslint-disable-next-line no-unused-vars -- Used in popover docs +function toggleSpectrumPopover(popover) { + popover.classList.contains("is-open") + ? popover.classList.remove("is-open") + : popover.classList.add("is-open"); +} + +// Focus Indicator Classes +const NAVIGATION_KEYS = [ + "Tab", + "ArrowUp", + "ArrowRight", + "ArrowDown", + "ArrowLeft", + "Home", + "End", + "PageUp", + "PageDown", + "Enter", + " ", + "Escape", + + /* IE9 and Firefox < 37 */ + "Up", + "Right", + "Down", + "Left", + "Esc" +]; + +const FOCUS_COMPONENTS = [ + "assetlist", + "button", + "calendar", + "card", + "closebutton", + "colorarea", + "colorhandle", + "colorslider", + "colorwheel", + "combobox", + "menu", + "picker", + "pickerbutton", + "rating", + "sidenav", + "slider", + "steplist", + "stepper", + "table", + "tag", + "tooltip" +]; + +const KEYBOARD_FOCUS_COMPONENTS = [ + "closebutton", + "combobox", + "datepicker", + "pickerbutton", + "sidenav", + "stepper", + "table", +]; + +// If pathname matches a component in the focus or keyboard focus arrays, +// we know that component should get/is setup to handle the focus class +function getsFocusClasses(componentArray) { + return componentArray.some((componentPath) => { + const currentPath = window.location.pathname; + return currentPath.includes(componentPath); + }); +} + +let keyboardFocus = false; + +// Display InputGroup focus style +function toggleInputGroupFocus(event) { + const classList = event.target.classList; + + let closestSelector; + // target within InputGroup + if (!classList) return; + if ( + classList.contains("spectrum-InputGroup-input") || + classList.contains("spectrum-ActionButton spectrum-ActionButton--sizeM") + ) { + closestSelector = ".spectrum-InputGroup"; + } + // target within a Slider + else if (classList.contains("spectrum-Slider-input")) { + closestSelector = ".spectrum-Slider-handle"; + } + else return; + + const closestElement = event.target.closest(closestSelector); + if (!closestElement) return; + + closestElement.classList.toggle("is-focused", event.type === "focus"); +} + +document.addEventListener("focus", toggleInputGroupFocus, true); +document.addEventListener("blur", toggleInputGroupFocus, true); + +window.addEventListener("keydown", (event) => { + if (event.ctrlKey || event.altKey || event.metaKey || NAVIGATION_KEYS.indexOf(event.key) === -1) { + return; + } + keyboardFocus = true; + + if (getsFocusClasses(KEYBOARD_FOCUS_COMPONENTS) + && document.activeElement + && document.activeElement !== document.body) { + document.activeElement.classList.add("is-keyboardFocused"); + } +}, true); + +window.addEventListener("focusin", (event) => { + const classList = event.target.classList; + if (classList && keyboardFocus && getsFocusClasses(KEYBOARD_FOCUS_COMPONENTS)) { + classList.add("is-keyboardFocused"); + } +}, true); + +window.addEventListener("focusout", (event) => { + const classList = event.target.classList; + if (!classList) return; + + classList.remove("is-keyboardFocused"); + classList.remove("is-focused"); +}, true); + +window.addEventListener("mousedown", () => { + keyboardFocus = false; + + if (getsFocusClasses(FOCUS_COMPONENTS) + && document.activeElement + && document.activeElement !== document.body) { + document.activeElement.classList.add("is-focused"); + } +}, true); diff --git a/js/loadicons/index.js b/js/loadicons/index.js new file mode 100644 index 0000000000..45b4640c71 --- /dev/null +++ b/js/loadicons/index.js @@ -0,0 +1,90 @@ +/* +Copyright 2018 Adobe. All rights reserved. +This file is licensed to you under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. You may obtain a copy +of the License at http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under +the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS +OF ANY KIND, either express or implied. See the License for the specific language +governing permissions and limitations under the License. +*/ + +// UMD pattern via umdjs +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD + define([], factory); + } + else if (typeof module === 'object' && module.exports) { + // CommonJS-like + module.exports = factory(); + } + else { + // Browser + root.loadIcons = factory(); + } +}(typeof self !== 'undefined' ? self : this, function() { + function handleError(string) { + string = 'loadIcons: '+string; + var error = new Error(string); + + console.error(error.toString()); + + if (typeof callback === 'function') { + callback(error); + } + } + + function injectSVG(svgURL, callback) { + var error; + // 200 for web servers, 0 for CEP panels + if (this.status !== 200 && this.status !== 0) { + handleError('Failed to fetch icons, server returned ' + this.status); + return; + } + + // Parse the SVG + var parser = new DOMParser(); + try { + var doc = parser.parseFromString(this.responseText, 'image/svg+xml'); + var svg = doc.firstChild; + } + catch (err) { + handleError('Error parsing SVG: ' + err); + return; + } + + // Make sure a real SVG was returned + if (svg && svg.tagName === 'svg') { + // Hide the element + svg.style.display = 'none'; + + svg.setAttribute('data-url', svgURL); + + // Insert it into the head + document.head.insertBefore(svg, null); + + // Pass the SVG to the callback + if (typeof callback === 'function') { + callback(null, svg); + } + } + else { + handleError('Parsed SVG document contained something other than an SVG'); + } + } + + function loadIcons(svgURL, callback) { + // Request the SVG sprite + var req = new XMLHttpRequest(); + req.open('GET', svgURL, true); + req.addEventListener('load', injectSVG.bind(req, svgURL, callback)); + req.addEventListener('error', function(event) { + handleError('Request failed'); + }); + req.send(); + } + + return loadIcons; +})); diff --git a/js/lunr/lunr.js b/js/lunr/lunr.js new file mode 100644 index 0000000000..6aa370fbcb --- /dev/null +++ b/js/lunr/lunr.js @@ -0,0 +1,3475 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ + +;(function(){ + +/** + * A convenience function for configuring and constructing + * a new lunr Index. + * + * A lunr.Builder instance is created and the pipeline setup + * with a trimmer, stop word filter and stemmer. + * + * This builder object is yielded to the configuration function + * that is passed as a parameter, allowing the list of fields + * and other builder parameters to be customised. + * + * All documents _must_ be added within the passed config function. + * + * @example + * var idx = lunr(function () { + * this.field('title') + * this.field('body') + * this.ref('id') + * + * documents.forEach(function (doc) { + * this.add(doc) + * }, this) + * }) + * + * @see {@link lunr.Builder} + * @see {@link lunr.Pipeline} + * @see {@link lunr.trimmer} + * @see {@link lunr.stopWordFilter} + * @see {@link lunr.stemmer} + * @namespace {function} lunr + */ +var lunr = function (config) { + var builder = new lunr.Builder + + builder.pipeline.add( + lunr.trimmer, + lunr.stopWordFilter, + lunr.stemmer + ) + + builder.searchPipeline.add( + lunr.stemmer + ) + + config.call(builder, builder) + return builder.build() +} + +lunr.version = "2.3.9" +/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A namespace containing utils for the rest of the lunr library + * @namespace lunr.utils + */ +lunr.utils = {} + +/** + * Print a warning message to the console. + * + * @param {String} message The message to be printed. + * @memberOf lunr.utils + * @function + */ +lunr.utils.warn = (function (global) { + /* eslint-disable no-console */ + return function (message) { + if (global.console && console.warn) { + console.warn(message) + } + } + /* eslint-enable no-console */ +})(this) + +/** + * Convert an object to a string. + * + * In the case of `null` and `undefined` the function returns + * the empty string, in all other cases the result of calling + * `toString` on the passed object is returned. + * + * @param {Any} obj The object to convert to a string. + * @return {String} string representation of the passed object. + * @memberOf lunr.utils + */ +lunr.utils.asString = function (obj) { + if (obj === void 0 || obj === null) { + return "" + } else { + return obj.toString() + } +} + +/** + * Clones an object. + * + * Will create a copy of an existing object such that any mutations + * on the copy cannot affect the original. + * + * Only shallow objects are supported, passing a nested object to this + * function will cause a TypeError. + * + * Objects with primitives, and arrays of primitives are supported. + * + * @param {Object} obj The object to clone. + * @return {Object} a clone of the passed object. + * @throws {TypeError} when a nested object is passed. + * @memberOf Utils + */ +lunr.utils.clone = function (obj) { + if (obj === null || obj === undefined) { + return obj + } + + var clone = Object.create(null), + keys = Object.keys(obj) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i], + val = obj[key] + + if (Array.isArray(val)) { + clone[key] = val.slice() + continue + } + + if (typeof val === 'string' || + typeof val === 'number' || + typeof val === 'boolean') { + clone[key] = val + continue + } + + throw new TypeError("clone is not deep and does not support nested objects") + } + + return clone +} +lunr.FieldRef = function (docRef, fieldName, stringValue) { + this.docRef = docRef + this.fieldName = fieldName + this._stringValue = stringValue +} + +lunr.FieldRef.joiner = "/" + +lunr.FieldRef.fromString = function (s) { + var n = s.indexOf(lunr.FieldRef.joiner) + + if (n === -1) { + throw "malformed field ref string" + } + + var fieldRef = s.slice(0, n), + docRef = s.slice(n + 1) + + return new lunr.FieldRef (docRef, fieldRef, s) +} + +lunr.FieldRef.prototype.toString = function () { + if (this._stringValue == undefined) { + this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef + } + + return this._stringValue +} +/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A lunr set. + * + * @constructor + */ +lunr.Set = function (elements) { + this.elements = Object.create(null) + + if (elements) { + this.length = elements.length + + for (var i = 0; i < this.length; i++) { + this.elements[elements[i]] = true + } + } else { + this.length = 0 + } +} + +/** + * A complete set that contains all elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.complete = { + intersect: function (other) { + return other + }, + + union: function () { + return this + }, + + contains: function () { + return true + } +} + +/** + * An empty set that contains no elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.empty = { + intersect: function () { + return this + }, + + union: function (other) { + return other + }, + + contains: function () { + return false + } +} + +/** + * Returns true if this set contains the specified object. + * + * @param {object} object - Object whose presence in this set is to be tested. + * @returns {boolean} - True if this set contains the specified object. + */ +lunr.Set.prototype.contains = function (object) { + return !!this.elements[object] +} + +/** + * Returns a new set containing only the elements that are present in both + * this set and the specified set. + * + * @param {lunr.Set} other - set to intersect with this set. + * @returns {lunr.Set} a new set that is the intersection of this and the specified set. + */ + +lunr.Set.prototype.intersect = function (other) { + var a, b, elements, intersection = [] + + if (other === lunr.Set.complete) { + return this + } + + if (other === lunr.Set.empty) { + return other + } + + if (this.length < other.length) { + a = this + b = other + } else { + a = other + b = this + } + + elements = Object.keys(a.elements) + + for (var i = 0; i < elements.length; i++) { + var element = elements[i] + if (element in b.elements) { + intersection.push(element) + } + } + + return new lunr.Set (intersection) +} + +/** + * Returns a new set combining the elements of this and the specified set. + * + * @param {lunr.Set} other - set to union with this set. + * @return {lunr.Set} a new set that is the union of this and the specified set. + */ + +lunr.Set.prototype.union = function (other) { + if (other === lunr.Set.complete) { + return lunr.Set.complete + } + + if (other === lunr.Set.empty) { + return this + } + + return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) +} +/** + * A function to calculate the inverse document frequency for + * a posting. This is shared between the builder and the index + * + * @private + * @param {object} posting - The posting for a given term + * @param {number} documentCount - The total number of documents. + */ +lunr.idf = function (posting, documentCount) { + var documentsWithTerm = 0 + + for (var fieldName in posting) { + if (fieldName == '_index') continue // Ignore the term index, its not a field + documentsWithTerm += Object.keys(posting[fieldName]).length + } + + var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) + + return Math.log(1 + Math.abs(x)) +} + +/** + * A token wraps a string representation of a token + * as it is passed through the text processing pipeline. + * + * @constructor + * @param {string} [str=''] - The string token being wrapped. + * @param {object} [metadata={}] - Metadata associated with this token. + */ +lunr.Token = function (str, metadata) { + this.str = str || "" + this.metadata = metadata || {} +} + +/** + * Returns the token string that is being wrapped by this object. + * + * @returns {string} + */ +lunr.Token.prototype.toString = function () { + return this.str +} + +/** + * A token update function is used when updating or optionally + * when cloning a token. + * + * @callback lunr.Token~updateFunction + * @param {string} str - The string representation of the token. + * @param {Object} metadata - All metadata associated with this token. + */ + +/** + * Applies the given function to the wrapped string token. + * + * @example + * token.update(function (str, metadata) { + * return str.toUpperCase() + * }) + * + * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. + * @returns {lunr.Token} + */ +lunr.Token.prototype.update = function (fn) { + this.str = fn(this.str, this.metadata) + return this +} + +/** + * Creates a clone of this token. Optionally a function can be + * applied to the cloned token. + * + * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. + * @returns {lunr.Token} + */ +lunr.Token.prototype.clone = function (fn) { + fn = fn || function (s) { return s } + return new lunr.Token (fn(this.str, this.metadata), this.metadata) +} +/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A function for splitting a string into tokens ready to be inserted into + * the search index. Uses `lunr.tokenizer.separator` to split strings, change + * the value of this property to change how strings are split into tokens. + * + * This tokenizer will convert its parameter to a string by calling `toString` and + * then will split this string on the character in `lunr.tokenizer.separator`. + * Arrays will have their elements converted to strings and wrapped in a lunr.Token. + * + * Optional metadata can be passed to the tokenizer, this metadata will be cloned and + * added as metadata to every token that is created from the object to be tokenized. + * + * @static + * @param {?(string|object|object[])} obj - The object to convert into tokens + * @param {?object} metadata - Optional metadata to associate with every token + * @returns {lunr.Token[]} + * @see {@link lunr.Pipeline} + */ +lunr.tokenizer = function (obj, metadata) { + if (obj == null || obj == undefined) { + return [] + } + + if (Array.isArray(obj)) { + return obj.map(function (t) { + return new lunr.Token( + lunr.utils.asString(t).toLowerCase(), + lunr.utils.clone(metadata) + ) + }) + } + + var str = obj.toString().toLowerCase(), + len = str.length, + tokens = [] + + for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + var char = str.charAt(sliceEnd), + sliceLength = sliceEnd - sliceStart + + if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { + + if (sliceLength > 0) { + var tokenMetadata = lunr.utils.clone(metadata) || {} + tokenMetadata["position"] = [sliceStart, sliceLength] + tokenMetadata["index"] = tokens.length + + tokens.push( + new lunr.Token ( + str.slice(sliceStart, sliceEnd), + tokenMetadata + ) + ) + } + + sliceStart = sliceEnd + 1 + } + + } + + return tokens +} + +/** + * The separator used to split a string into tokens. Override this property to change the behaviour of + * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see lunr.tokenizer + */ +lunr.tokenizer.separator = /[\s\-]+/ +/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.Pipelines maintain an ordered list of functions to be applied to all + * tokens in documents entering the search index and queries being ran against + * the index. + * + * An instance of lunr.Index created with the lunr shortcut will contain a + * pipeline with a stop word filter and an English language stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline will call each function in turn, passing a token, the + * index of that token in the original list of all tokens and finally a list of + * all the original tokens. + * + * The output of functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with lunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ +lunr.Pipeline = function () { + this._stack = [] +} + +lunr.Pipeline.registeredFunctions = Object.create(null) + +/** + * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token + * string as well as all known metadata. A pipeline function can mutate the token string + * or mutate (or add) metadata for a given token. + * + * A pipeline function can indicate that the passed token should be discarded by returning + * null, undefined or an empty string. This token will not be passed to any downstream pipeline + * functions and will not be added to the index. + * + * Multiple tokens can be returned by returning an array of tokens. Each token will be passed + * to any downstream pipeline functions and all will returned tokens will be added to the index. + * + * Any number of pipeline functions may be chained together using a lunr.Pipeline. + * + * @interface lunr.PipelineFunction + * @param {lunr.Token} token - A token from the document being processed. + * @param {number} i - The index of this token in the complete list of tokens for this document/field. + * @param {lunr.Token[]} tokens - All tokens for this document/field. + * @returns {(?lunr.Token|lunr.Token[])} + */ + +/** + * Register a function with the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @param {String} label - The label to register this function with + */ +lunr.Pipeline.registerFunction = function (fn, label) { + if (label in this.registeredFunctions) { + lunr.utils.warn('Overwriting existing registered function: ' + label) + } + + fn.label = label + lunr.Pipeline.registeredFunctions[fn.label] = fn +} + +/** + * Warns if the function is not registered as a Pipeline function. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @private + */ +lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + var isRegistered = fn.label && (fn.label in this.registeredFunctions) + + if (!isRegistered) { + lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) + } +} + +/** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with lunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised - The serialised pipeline to load. + * @returns {lunr.Pipeline} + */ +lunr.Pipeline.load = function (serialised) { + var pipeline = new lunr.Pipeline + + serialised.forEach(function (fnName) { + var fn = lunr.Pipeline.registeredFunctions[fnName] + + if (fn) { + pipeline.add(fn) + } else { + throw new Error('Cannot load unregistered function: ' + fnName) + } + }) + + return pipeline +} + +/** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. + */ +lunr.Pipeline.prototype.add = function () { + var fns = Array.prototype.slice.call(arguments) + + fns.forEach(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + this._stack.push(fn) + }, this) +} + +/** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.after = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + pos = pos + 1 + this._stack.splice(pos, 0, newFn) +} + +/** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.before = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + this._stack.splice(pos, 0, newFn) +} + +/** + * Removes a function from the pipeline. + * + * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. + */ +lunr.Pipeline.prototype.remove = function (fn) { + var pos = this._stack.indexOf(fn) + if (pos == -1) { + return + } + + this._stack.splice(pos, 1) +} + +/** + * Runs the current list of functions that make up the pipeline against the + * passed tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @returns {Array} + */ +lunr.Pipeline.prototype.run = function (tokens) { + var stackLength = this._stack.length + + for (var i = 0; i < stackLength; i++) { + var fn = this._stack[i] + var memo = [] + + for (var j = 0; j < tokens.length; j++) { + var result = fn(tokens[j], j, tokens) + + if (result === null || result === void 0 || result === '') continue + + if (Array.isArray(result)) { + for (var k = 0; k < result.length; k++) { + memo.push(result[k]) + } + } else { + memo.push(result) + } + } + + tokens = memo + } + + return tokens +} + +/** + * Convenience method for passing a string through a pipeline and getting + * strings out. This method takes care of wrapping the passed string in a + * token and mapping the resulting tokens back to strings. + * + * @param {string} str - The string to pass through the pipeline. + * @param {?object} metadata - Optional metadata to associate with the token + * passed to the pipeline. + * @returns {string[]} + */ +lunr.Pipeline.prototype.runString = function (str, metadata) { + var token = new lunr.Token (str, metadata) + + return this.run([token]).map(function (t) { + return t.toString() + }) +} + +/** + * Resets the pipeline by removing any existing processors. + * + */ +lunr.Pipeline.prototype.reset = function () { + this._stack = [] +} + +/** + * Returns a representation of the pipeline ready for serialisation. + * + * Logs a warning if the function has not been registered. + * + * @returns {Array} + */ +lunr.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + + return fn.label + }) +} +/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A vector is used to construct the vector space of documents and queries. These + * vectors support operations to determine the similarity between two documents or + * a document and a query. + * + * Normally no parameters are required for initializing a vector, but in the case of + * loading a previously dumped vector the raw elements can be provided to the constructor. + * + * For performance reasons vectors are implemented with a flat array, where an elements + * index is immediately followed by its value. E.g. [index, value, index, value]. This + * allows the underlying array to be as sparse as possible and still offer decent + * performance when being used for vector calculations. + * + * @constructor + * @param {Number[]} [elements] - The flat list of element index and element value pairs. + */ +lunr.Vector = function (elements) { + this._magnitude = 0 + this.elements = elements || [] +} + + +/** + * Calculates the position within the vector to insert a given index. + * + * This is used internally by insert and upsert. If there are duplicate indexes then + * the position is returned as if the value for that index were to be updated, but it + * is the callers responsibility to check whether there is a duplicate at that index + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @returns {Number} + */ +lunr.Vector.prototype.positionForIndex = function (index) { + // For an empty vector the tuple can be inserted at the beginning + if (this.elements.length == 0) { + return 0 + } + + var start = 0, + end = this.elements.length / 2, + sliceLength = end - start, + pivotPoint = Math.floor(sliceLength / 2), + pivotIndex = this.elements[pivotPoint * 2] + + while (sliceLength > 1) { + if (pivotIndex < index) { + start = pivotPoint + } + + if (pivotIndex > index) { + end = pivotPoint + } + + if (pivotIndex == index) { + break + } + + sliceLength = end - start + pivotPoint = start + Math.floor(sliceLength / 2) + pivotIndex = this.elements[pivotPoint * 2] + } + + if (pivotIndex == index) { + return pivotPoint * 2 + } + + if (pivotIndex > index) { + return pivotPoint * 2 + } + + if (pivotIndex < index) { + return (pivotPoint + 1) * 2 + } +} + +/** + * Inserts an element at an index within the vector. + * + * Does not allow duplicates, will throw an error if there is already an entry + * for this index. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + */ +lunr.Vector.prototype.insert = function (insertIdx, val) { + this.upsert(insertIdx, val, function () { + throw "duplicate index" + }) +} + +/** + * Inserts or updates an existing index within the vector. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + * @param {function} fn - A function that is called for updates, the existing value and the + * requested value are passed as arguments + */ +lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { + this._magnitude = 0 + var position = this.positionForIndex(insertIdx) + + if (this.elements[position] == insertIdx) { + this.elements[position + 1] = fn(this.elements[position + 1], val) + } else { + this.elements.splice(position, 0, insertIdx, val) + } +} + +/** + * Calculates the magnitude of this vector. + * + * @returns {Number} + */ +lunr.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude + + var sumOfSquares = 0, + elementsLength = this.elements.length + + for (var i = 1; i < elementsLength; i += 2) { + var val = this.elements[i] + sumOfSquares += val * val + } + + return this._magnitude = Math.sqrt(sumOfSquares) +} + +/** + * Calculates the dot product of this vector and another vector. + * + * @param {lunr.Vector} otherVector - The vector to compute the dot product with. + * @returns {Number} + */ +lunr.Vector.prototype.dot = function (otherVector) { + var dotProduct = 0, + a = this.elements, b = otherVector.elements, + aLen = a.length, bLen = b.length, + aVal = 0, bVal = 0, + i = 0, j = 0 + + while (i < aLen && j < bLen) { + aVal = a[i], bVal = b[j] + if (aVal < bVal) { + i += 2 + } else if (aVal > bVal) { + j += 2 + } else if (aVal == bVal) { + dotProduct += a[i + 1] * b[j + 1] + i += 2 + j += 2 + } + } + + return dotProduct +} + +/** + * Calculates the similarity between this vector and another vector. + * + * @param {lunr.Vector} otherVector - The other vector to calculate the + * similarity with. + * @returns {Number} + */ +lunr.Vector.prototype.similarity = function (otherVector) { + return this.dot(otherVector) / this.magnitude() || 0 +} + +/** + * Converts the vector to an array of the elements within the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toArray = function () { + var output = new Array (this.elements.length / 2) + + for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { + output[j] = this.elements[i] + } + + return output +} + +/** + * A JSON serializable representation of the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toJSON = function () { + return this.elements +} +/* eslint-disable */ +/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/** + * lunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token - The string to stem + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + * @function + */ +lunr.stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + var re_mgr0 = new RegExp(mgr0); + var re_mgr1 = new RegExp(mgr1); + var re_meq1 = new RegExp(meq1); + var re_s_v = new RegExp(s_v); + + var re_1a = /^(.+?)(ss|i)es$/; + var re2_1a = /^(.+?)([^s])s$/; + var re_1b = /^(.+?)eed$/; + var re2_1b = /^(.+?)(ed|ing)$/; + var re_1b_2 = /.$/; + var re2_1b_2 = /(at|bl|iz)$/; + var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); + var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var re_1c = /^(.+?[^aeiou])y$/; + var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + var re2_4 = /^(.+?)(s|t)(ion)$/; + + var re_5 = /^(.+?)e$/; + var re_5_1 = /ll$/; + var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var porterStemmer = function porterStemmer(w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a + re2 = re2_1a; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return function (token) { + return token.update(porterStemmer); + } +})(); + +lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') +/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.generateStopWordFilter builds a stopWordFilter function from the provided + * list of stop words. + * + * The built in lunr.stopWordFilter is built using this generator and can be used + * to generate custom stopWordFilters for applications or non English languages. + * + * @function + * @param {Array} token The token to pass through the filter + * @returns {lunr.PipelineFunction} + * @see lunr.Pipeline + * @see lunr.stopWordFilter + */ +lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord + return memo + }, {}) + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token + } +} + +/** + * lunr.stopWordFilter is an English language stop word list filter, any words + * contained in the list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * + * @function + * @implements {lunr.PipelineFunction} + * @params {lunr.Token} token - A token to check for being a stop word. + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ +lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' +]) + +lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') +/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.trimmer is a pipeline function for trimming non word + * characters from the beginning and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token The token to pass through the filter + * @returns {lunr.Token} + * @see lunr.Pipeline + */ +lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^\W+/, '').replace(/\W+$/, '') + }) +} + +lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') +/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A token set is used to store the unique list of all tokens + * within an index. Token sets are also used to represent an + * incoming query to the index, this query token set and index + * token set are then intersected to find which tokens to look + * up in the inverted index. + * + * A token set can hold multiple tokens, as in the case of the + * index token set, or it can hold a single token as in the + * case of a simple query token set. + * + * Additionally token sets are used to perform wildcard matching. + * Leading, contained and trailing wildcards are supported, and + * from this edit distance matching can also be provided. + * + * Token sets are implemented as a minimal finite state automata, + * where both common prefixes and suffixes are shared between tokens. + * This helps to reduce the space used for storing the token set. + * + * @constructor + */ +lunr.TokenSet = function () { + this.final = false + this.edges = {} + this.id = lunr.TokenSet._nextId + lunr.TokenSet._nextId += 1 +} + +/** + * Keeps track of the next, auto increment, identifier to assign + * to a new tokenSet. + * + * TokenSets require a unique identifier to be correctly minimised. + * + * @private + */ +lunr.TokenSet._nextId = 1 + +/** + * Creates a TokenSet instance from the given sorted array of words. + * + * @param {String[]} arr - A sorted array of strings to create the set from. + * @returns {lunr.TokenSet} + * @throws Will throw an error if the input array is not sorted. + */ +lunr.TokenSet.fromArray = function (arr) { + var builder = new lunr.TokenSet.Builder + + for (var i = 0, len = arr.length; i < len; i++) { + builder.insert(arr[i]) + } + + builder.finish() + return builder.root +} + +/** + * Creates a token set from a query clause. + * + * @private + * @param {Object} clause - A single clause from lunr.Query. + * @param {string} clause.term - The query clause term. + * @param {number} [clause.editDistance] - The optional edit distance for the term. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromClause = function (clause) { + if ('editDistance' in clause) { + return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) + } else { + return lunr.TokenSet.fromString(clause.term) + } +} + +/** + * Creates a token set representing a single string with a specified + * edit distance. + * + * Insertions, deletions, substitutions and transpositions are each + * treated as an edit distance of 1. + * + * Increasing the allowed edit distance will have a dramatic impact + * on the performance of both creating and intersecting these TokenSets. + * It is advised to keep the edit distance less than 3. + * + * @param {string} str - The string to create the token set from. + * @param {number} editDistance - The allowed edit distance to match. + * @returns {lunr.Vector} + */ +lunr.TokenSet.fromFuzzyString = function (str, editDistance) { + var root = new lunr.TokenSet + + var stack = [{ + node: root, + editsRemaining: editDistance, + str: str + }] + + while (stack.length) { + var frame = stack.pop() + + // no edit + if (frame.str.length > 0) { + var char = frame.str.charAt(0), + noEditNode + + if (char in frame.node.edges) { + noEditNode = frame.node.edges[char] + } else { + noEditNode = new lunr.TokenSet + frame.node.edges[char] = noEditNode + } + + if (frame.str.length == 1) { + noEditNode.final = true + } + + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) + } + + if (frame.editsRemaining == 0) { + continue + } + + // insertion + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } + + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + + // deletion + // can only do a deletion if we have enough edits remaining + // and if there are characters left to delete in the string + if (frame.str.length > 1) { + stack.push({ + node: frame.node, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // deletion + // just removing the last character from the str + if (frame.str.length == 1) { + frame.node.final = true + } + + // substitution + // can only do a substitution if we have enough edits remaining + // and if there are characters left to substitute + if (frame.str.length >= 1) { + if ("*" in frame.node.edges) { + var substitutionNode = frame.node.edges["*"] + } else { + var substitutionNode = new lunr.TokenSet + frame.node.edges["*"] = substitutionNode + } + + if (frame.str.length == 1) { + substitutionNode.final = true + } + + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // transposition + // can only do a transposition if there are edits remaining + // and there are enough characters to transpose + if (frame.str.length > 1) { + var charA = frame.str.charAt(0), + charB = frame.str.charAt(1), + transposeNode + + if (charB in frame.node.edges) { + transposeNode = frame.node.edges[charB] + } else { + transposeNode = new lunr.TokenSet + frame.node.edges[charB] = transposeNode + } + + if (frame.str.length == 1) { + transposeNode.final = true + } + + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) + } + } + + return root +} + +/** + * Creates a TokenSet from a string. + * + * The string may contain one or more wildcard characters (*) + * that will allow wildcard matching when intersecting with + * another TokenSet. + * + * @param {string} str - The string to create a TokenSet from. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromString = function (str) { + var node = new lunr.TokenSet, + root = node + + /* + * Iterates through all characters within the passed string + * appending a node for each character. + * + * When a wildcard character is found then a self + * referencing edge is introduced to continually match + * any number of any characters. + */ + for (var i = 0, len = str.length; i < len; i++) { + var char = str[i], + final = (i == len - 1) + + if (char == "*") { + node.edges[char] = node + node.final = final + + } else { + var next = new lunr.TokenSet + next.final = final + + node.edges[char] = next + node = next + } + } + + return root +} + +/** + * Converts this TokenSet into an array of strings + * contained within the TokenSet. + * + * This is not intended to be used on a TokenSet that + * contains wildcards, in these cases the results are + * undefined and are likely to cause an infinite loop. + * + * @returns {string[]} + */ +lunr.TokenSet.prototype.toArray = function () { + var words = [] + + var stack = [{ + prefix: "", + node: this + }] + + while (stack.length) { + var frame = stack.pop(), + edges = Object.keys(frame.node.edges), + len = edges.length + + if (frame.node.final) { + /* In Safari, at this point the prefix is sometimes corrupted, see: + * https://github.com/olivernn/lunr.js/issues/279 Calling any + * String.prototype method forces Safari to "cast" this string to what + * it's supposed to be, fixing the bug. */ + frame.prefix.charAt(0) + words.push(frame.prefix) + } + + for (var i = 0; i < len; i++) { + var edge = edges[i] + + stack.push({ + prefix: frame.prefix.concat(edge), + node: frame.node.edges[edge] + }) + } + } + + return words +} + +/** + * Generates a string representation of a TokenSet. + * + * This is intended to allow TokenSets to be used as keys + * in objects, largely to aid the construction and minimisation + * of a TokenSet. As such it is not designed to be a human + * friendly representation of the TokenSet. + * + * @returns {string} + */ +lunr.TokenSet.prototype.toString = function () { + // NOTE: Using Object.keys here as this.edges is very likely + // to enter 'hash-mode' with many keys being added + // + // avoiding a for-in loop here as it leads to the function + // being de-optimised (at least in V8). From some simple + // benchmarks the performance is comparable, but allowing + // V8 to optimize may mean easy performance wins in the future. + + if (this._str) { + return this._str + } + + var str = this.final ? '1' : '0', + labels = Object.keys(this.edges).sort(), + len = labels.length + + for (var i = 0; i < len; i++) { + var label = labels[i], + node = this.edges[label] + + str = str + label + node.id + } + + return str +} + +/** + * Returns a new TokenSet that is the intersection of + * this TokenSet and the passed TokenSet. + * + * This intersection will take into account any wildcards + * contained within the TokenSet. + * + * @param {lunr.TokenSet} b - An other TokenSet to intersect with. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.prototype.intersect = function (b) { + var output = new lunr.TokenSet, + frame = undefined + + var stack = [{ + qNode: b, + output: output, + node: this + }] + + while (stack.length) { + frame = stack.pop() + + // NOTE: As with the #toString method, we are using + // Object.keys and a for loop instead of a for-in loop + // as both of these objects enter 'hash' mode, causing + // the function to be de-optimised in V8 + var qEdges = Object.keys(frame.qNode.edges), + qLen = qEdges.length, + nEdges = Object.keys(frame.node.edges), + nLen = nEdges.length + + for (var q = 0; q < qLen; q++) { + var qEdge = qEdges[q] + + for (var n = 0; n < nLen; n++) { + var nEdge = nEdges[n] + + if (nEdge == qEdge || qEdge == '*') { + var node = frame.node.edges[nEdge], + qNode = frame.qNode.edges[qEdge], + final = node.final && qNode.final, + next = undefined + + if (nEdge in frame.output.edges) { + // an edge already exists for this character + // no need to create a new node, just set the finality + // bit unless this node is already final + next = frame.output.edges[nEdge] + next.final = next.final || final + + } else { + // no edge exists yet, must create one + // set the finality bit and insert it + // into the output + next = new lunr.TokenSet + next.final = final + frame.output.edges[nEdge] = next + } + + stack.push({ + qNode: qNode, + output: next, + node: node + }) + } + } + } + } + + return output +} +lunr.TokenSet.Builder = function () { + this.previousWord = "" + this.root = new lunr.TokenSet + this.uncheckedNodes = [] + this.minimizedNodes = {} +} + +lunr.TokenSet.Builder.prototype.insert = function (word) { + var node, + commonPrefix = 0 + + if (word < this.previousWord) { + throw new Error ("Out of order word insertion") + } + + for (var i = 0; i < word.length && i < this.previousWord.length; i++) { + if (word[i] != this.previousWord[i]) break + commonPrefix++ + } + + this.minimize(commonPrefix) + + if (this.uncheckedNodes.length == 0) { + node = this.root + } else { + node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child + } + + for (var i = commonPrefix; i < word.length; i++) { + var nextNode = new lunr.TokenSet, + char = word[i] + + node.edges[char] = nextNode + + this.uncheckedNodes.push({ + parent: node, + char: char, + child: nextNode + }) + + node = nextNode + } + + node.final = true + this.previousWord = word +} + +lunr.TokenSet.Builder.prototype.finish = function () { + this.minimize(0) +} + +lunr.TokenSet.Builder.prototype.minimize = function (downTo) { + for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { + var node = this.uncheckedNodes[i], + childKey = node.child.toString() + + if (childKey in this.minimizedNodes) { + node.parent.edges[node.char] = this.minimizedNodes[childKey] + } else { + // Cache the key for this node since + // we know it can't change anymore + node.child._str = childKey + + this.minimizedNodes[childKey] = node.child + } + + this.uncheckedNodes.pop() + } +} +/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * An index contains the built index of all documents and provides a query interface + * to the index. + * + * Usually instances of lunr.Index will not be created using this constructor, instead + * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be + * used to load previously built and serialized indexes. + * + * @constructor + * @param {Object} attrs - The attributes of the built search index. + * @param {Object} attrs.invertedIndex - An index of term/field to document reference. + * @param {Object} attrs.fieldVectors - Field vectors + * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. + * @param {string[]} attrs.fields - The names of indexed document fields. + * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. + */ +lunr.Index = function (attrs) { + this.invertedIndex = attrs.invertedIndex + this.fieldVectors = attrs.fieldVectors + this.tokenSet = attrs.tokenSet + this.fields = attrs.fields + this.pipeline = attrs.pipeline +} + +/** + * A result contains details of a document matching a search query. + * @typedef {Object} lunr.Index~Result + * @property {string} ref - The reference of the document this result represents. + * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. + * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. + */ + +/** + * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple + * query language which itself is parsed into an instance of lunr.Query. + * + * For programmatically building queries it is advised to directly use lunr.Query, the query language + * is best used for human entered text rather than program generated text. + * + * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported + * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' + * or 'world', though those that contain both will rank higher in the results. + * + * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can + * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding + * wildcards will increase the number of documents that will be found but can also have a negative + * impact on query performance, especially with wildcards at the beginning of a term. + * + * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term + * hello in the title field will match this query. Using a field not present in the index will lead + * to an error being thrown. + * + * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term + * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported + * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. + * Avoid large values for edit distance to improve query performance. + * + * Each term also supports a presence modifier. By default a term's presence in document is optional, however + * this can be changed to either required or prohibited. For a term's presence to be required in a document the + * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and + * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not + * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. + * + * To escape special characters the backslash character '\' can be used, this allows searches to include + * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead + * of attempting to apply a boost of 2 to the search term "foo". + * + * @typedef {string} lunr.Index~QueryString + * @example Simple single term query + * hello + * @example Multiple term query + * hello world + * @example term scoped to a field + * title:hello + * @example term with a boost of 10 + * hello^10 + * @example term with an edit distance of 2 + * hello~2 + * @example terms with presence modifiers + * -foo +bar baz + */ + +/** + * Performs a search against the index using lunr query syntax. + * + * Results will be returned sorted by their score, the most relevant results + * will be returned first. For details on how the score is calculated, please see + * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. + * + * For more programmatic querying use lunr.Index#query. + * + * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. + * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.search = function (queryString) { + return this.query(function (query) { + var parser = new lunr.QueryParser(queryString, query) + parser.parse() + }) +} + +/** + * A query builder callback provides a query object to be used to express + * the query to perform on the index. + * + * @callback lunr.Index~queryBuilder + * @param {lunr.Query} query - The query object to build up. + * @this lunr.Query + */ + +/** + * Performs a query against the index using the yielded lunr.Query object. + * + * If performing programmatic queries against the index, this method is preferred + * over lunr.Index#search so as to avoid the additional query parsing overhead. + * + * A query object is yielded to the supplied function which should be used to + * express the query to be run against the index. + * + * Note that although this function takes a callback parameter it is _not_ an + * asynchronous operation, the callback is just yielded a query object to be + * customized. + * + * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.query = function (fn) { + // for each query clause + // * process terms + // * expand terms from token set + // * find matching documents and metadata + // * get document vectors + // * score documents + + var query = new lunr.Query(this.fields), + matchingFields = Object.create(null), + queryVectors = Object.create(null), + termFieldCache = Object.create(null), + requiredMatches = Object.create(null), + prohibitedMatches = Object.create(null) + + /* + * To support field level boosts a query vector is created per + * field. An empty vector is eagerly created to support negated + * queries. + */ + for (var i = 0; i < this.fields.length; i++) { + queryVectors[this.fields[i]] = new lunr.Vector + } + + fn.call(query, query) + + for (var i = 0; i < query.clauses.length; i++) { + /* + * Unless the pipeline has been disabled for this term, which is + * the case for terms with wildcards, we need to pass the clause + * term through the search pipeline. A pipeline returns an array + * of processed terms. Pipeline functions may expand the passed + * term, which means we may end up performing multiple index lookups + * for a single query term. + */ + var clause = query.clauses[i], + terms = null, + clauseMatches = lunr.Set.empty + + if (clause.usePipeline) { + terms = this.pipeline.runString(clause.term, { + fields: clause.fields + }) + } else { + terms = [clause.term] + } + + for (var m = 0; m < terms.length; m++) { + var term = terms[m] + + /* + * Each term returned from the pipeline needs to use the same query + * clause object, e.g. the same boost and or edit distance. The + * simplest way to do this is to re-use the clause object but mutate + * its term property. + */ + clause.term = term + + /* + * From the term in the clause we create a token set which will then + * be used to intersect the indexes token set to get a list of terms + * to lookup in the inverted index + */ + var termTokenSet = lunr.TokenSet.fromClause(clause), + expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + + /* + * If a term marked as required does not exist in the tokenSet it is + * impossible for the search to return any matches. We set all the field + * scoped required matches set to empty and stop examining any further + * clauses. + */ + if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = lunr.Set.empty + } + + break + } + + for (var j = 0; j < expandedTerms.length; j++) { + /* + * For each term get the posting and termIndex, this is required for + * building the query vector. + */ + var expandedTerm = expandedTerms[j], + posting = this.invertedIndex[expandedTerm], + termIndex = posting._index + + for (var k = 0; k < clause.fields.length; k++) { + /* + * For each field that this query term is scoped by (by default + * all fields are in scope) we need to get all the document refs + * that have this term in that field. + * + * The posting is the entry in the invertedIndex for the matching + * term from above. + */ + var field = clause.fields[k], + fieldPosting = posting[field], + matchingDocumentRefs = Object.keys(fieldPosting), + termField = expandedTerm + "/" + field, + matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) + + /* + * if the presence of this term is required ensure that the matching + * documents are added to the set of required matches for this clause. + * + */ + if (clause.presence == lunr.Query.presence.REQUIRED) { + clauseMatches = clauseMatches.union(matchingDocumentsSet) + + if (requiredMatches[field] === undefined) { + requiredMatches[field] = lunr.Set.complete + } + } + + /* + * if the presence of this term is prohibited ensure that the matching + * documents are added to the set of prohibited matches for this field, + * creating that set if it does not yet exist. + */ + if (clause.presence == lunr.Query.presence.PROHIBITED) { + if (prohibitedMatches[field] === undefined) { + prohibitedMatches[field] = lunr.Set.empty + } + + prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) + + /* + * Prohibited matches should not be part of the query vector used for + * similarity scoring and no metadata should be extracted so we continue + * to the next field + */ + continue + } + + /* + * The query field vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. + * Using upsert because there could already be an entry in the vector + * for the term we are working with. In that case we just add the scores + * together. + */ + queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) + + /** + * If we've already seen this term, field combo then we've already collected + * the matching documents and metadata, no need to go through all that again + */ + if (termFieldCache[termField]) { + continue + } + + for (var l = 0; l < matchingDocumentRefs.length; l++) { + /* + * All metadata for this term/field/document triple + * are then extracted and collected into an instance + * of lunr.MatchData ready to be returned in the query + * results + */ + var matchingDocumentRef = matchingDocumentRefs[l], + matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), + metadata = fieldPosting[matchingDocumentRef], + fieldMatch + + if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { + matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) + } else { + fieldMatch.add(expandedTerm, field, metadata) + } + + } + + termFieldCache[termField] = true + } + } + } + + /** + * If the presence was required we need to update the requiredMatches field sets. + * We do this after all fields for the term have collected their matches because + * the clause terms presence is required in _any_ of the fields not _all_ of the + * fields. + */ + if (clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) + } + } + } + + /** + * Need to combine the field scoped required and prohibited + * matching documents into a global set of required and prohibited + * matches + */ + var allRequiredMatches = lunr.Set.complete, + allProhibitedMatches = lunr.Set.empty + + for (var i = 0; i < this.fields.length; i++) { + var field = this.fields[i] + + if (requiredMatches[field]) { + allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) + } + + if (prohibitedMatches[field]) { + allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) + } + } + + var matchingFieldRefs = Object.keys(matchingFields), + results = [], + matches = Object.create(null) + + /* + * If the query is negated (contains only prohibited terms) + * we need to get _all_ fieldRefs currently existing in the + * index. This is only done when we know that the query is + * entirely prohibited terms to avoid any cost of getting all + * fieldRefs unnecessarily. + * + * Additionally, blank MatchData must be created to correctly + * populate the results. + */ + if (query.isNegated()) { + matchingFieldRefs = Object.keys(this.fieldVectors) + + for (var i = 0; i < matchingFieldRefs.length; i++) { + var matchingFieldRef = matchingFieldRefs[i] + var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) + matchingFields[matchingFieldRef] = new lunr.MatchData + } + } + + for (var i = 0; i < matchingFieldRefs.length; i++) { + /* + * Currently we have document fields that match the query, but we + * need to return documents. The matchData and scores are combined + * from multiple fields belonging to the same document. + * + * Scores are calculated by field, using the query vectors created + * above, and combined into a final document score using addition. + */ + var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), + docRef = fieldRef.docRef + + if (!allRequiredMatches.contains(docRef)) { + continue + } + + if (allProhibitedMatches.contains(docRef)) { + continue + } + + var fieldVector = this.fieldVectors[fieldRef], + score = queryVectors[fieldRef.fieldName].similarity(fieldVector), + docMatch + + if ((docMatch = matches[docRef]) !== undefined) { + docMatch.score += score + docMatch.matchData.combine(matchingFields[fieldRef]) + } else { + var match = { + ref: docRef, + score: score, + matchData: matchingFields[fieldRef] + } + matches[docRef] = match + results.push(match) + } + } + + /* + * Sort the results objects by score, highest first. + */ + return results.sort(function (a, b) { + return b.score - a.score + }) +} + +/** + * Prepares the index for JSON serialization. + * + * The schema for this JSON blob will be described in a + * separate JSON schema file. + * + * @returns {Object} + */ +lunr.Index.prototype.toJSON = function () { + var invertedIndex = Object.keys(this.invertedIndex) + .sort() + .map(function (term) { + return [term, this.invertedIndex[term]] + }, this) + + var fieldVectors = Object.keys(this.fieldVectors) + .map(function (ref) { + return [ref, this.fieldVectors[ref].toJSON()] + }, this) + + return { + version: lunr.version, + fields: this.fields, + fieldVectors: fieldVectors, + invertedIndex: invertedIndex, + pipeline: this.pipeline.toJSON() + } +} + +/** + * Loads a previously serialized lunr.Index + * + * @param {Object} serializedIndex - A previously serialized lunr.Index + * @returns {lunr.Index} + */ +lunr.Index.load = function (serializedIndex) { + var attrs = {}, + fieldVectors = {}, + serializedVectors = serializedIndex.fieldVectors, + invertedIndex = Object.create(null), + serializedInvertedIndex = serializedIndex.invertedIndex, + tokenSetBuilder = new lunr.TokenSet.Builder, + pipeline = lunr.Pipeline.load(serializedIndex.pipeline) + + if (serializedIndex.version != lunr.version) { + lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") + } + + for (var i = 0; i < serializedVectors.length; i++) { + var tuple = serializedVectors[i], + ref = tuple[0], + elements = tuple[1] + + fieldVectors[ref] = new lunr.Vector(elements) + } + + for (var i = 0; i < serializedInvertedIndex.length; i++) { + var tuple = serializedInvertedIndex[i], + term = tuple[0], + posting = tuple[1] + + tokenSetBuilder.insert(term) + invertedIndex[term] = posting + } + + tokenSetBuilder.finish() + + attrs.fields = serializedIndex.fields + + attrs.fieldVectors = fieldVectors + attrs.invertedIndex = invertedIndex + attrs.tokenSet = tokenSetBuilder.root + attrs.pipeline = pipeline + + return new lunr.Index(attrs) +} +/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.Builder performs indexing on a set of documents and + * returns instances of lunr.Index ready for querying. + * + * All configuration of the index is done via the builder, the + * fields to index, the document reference, the text processing + * pipeline and document scoring parameters are all set on the + * builder before indexing. + * + * @constructor + * @property {string} _ref - Internal reference to the document reference field. + * @property {string[]} _fields - Internal reference to the document fields to index. + * @property {object} invertedIndex - The inverted index maps terms to document fields. + * @property {object} documentTermFrequencies - Keeps track of document term frequencies. + * @property {object} documentLengths - Keeps track of the length of documents added to the index. + * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. + * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. + * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. + * @property {number} documentCount - Keeps track of the total number of documents indexed. + * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. + * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. + * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. + * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. + */ +lunr.Builder = function () { + this._ref = "id" + this._fields = Object.create(null) + this._documents = Object.create(null) + this.invertedIndex = Object.create(null) + this.fieldTermFrequencies = {} + this.fieldLengths = {} + this.tokenizer = lunr.tokenizer + this.pipeline = new lunr.Pipeline + this.searchPipeline = new lunr.Pipeline + this.documentCount = 0 + this._b = 0.75 + this._k1 = 1.2 + this.termIndex = 0 + this.metadataWhitelist = [] +} + +/** + * Sets the document field used as the document reference. Every document must have this field. + * The type of this field in the document should be a string, if it is not a string it will be + * coerced into a string by calling toString. + * + * The default ref is 'id'. + * + * The ref should _not_ be changed during indexing, it should be set before any documents are + * added to the index. Changing it during indexing can lead to inconsistent results. + * + * @param {string} ref - The name of the reference field in the document. + */ +lunr.Builder.prototype.ref = function (ref) { + this._ref = ref +} + +/** + * A function that is used to extract a field from a document. + * + * Lunr expects a field to be at the top level of a document, if however the field + * is deeply nested within a document an extractor function can be used to extract + * the right field for indexing. + * + * @callback fieldExtractor + * @param {object} doc - The document being added to the index. + * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. + * @example Extracting a nested field + * function (doc) { return doc.nested.field } + */ + +/** + * Adds a field to the list of document fields that will be indexed. Every document being + * indexed should have this field. Null values for this field in indexed documents will + * not cause errors but will limit the chance of that document being retrieved by searches. + * + * All fields should be added before adding documents to the index. Adding fields after + * a document has been indexed will have no effect on already indexed documents. + * + * Fields can be boosted at build time. This allows terms within that field to have more + * importance when ranking search results. Use a field boost to specify that matches within + * one field are more important than other fields. + * + * @param {string} fieldName - The name of a field to index in all documents. + * @param {object} attributes - Optional attributes associated with this field. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. + * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. + * @throws {RangeError} fieldName cannot contain unsupported characters '/' + */ +lunr.Builder.prototype.field = function (fieldName, attributes) { + if (/\//.test(fieldName)) { + throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") + } + + this._fields[fieldName] = attributes || {} +} + +/** + * A parameter to tune the amount of field length normalisation that is applied when + * calculating relevance scores. A value of 0 will completely disable any normalisation + * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b + * will be clamped to the range 0 - 1. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.b = function (number) { + if (number < 0) { + this._b = 0 + } else if (number > 1) { + this._b = 1 + } else { + this._b = number + } +} + +/** + * A parameter that controls the speed at which a rise in term frequency results in term + * frequency saturation. The default value is 1.2. Setting this to a higher value will give + * slower saturation levels, a lower value will result in quicker saturation. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.k1 = function (number) { + this._k1 = number +} + +/** + * Adds a document to the index. + * + * Before adding fields to the index the index should have been fully setup, with the document + * ref and all fields to index already having been specified. + * + * The document must have a field name as specified by the ref (by default this is 'id') and + * it should have all fields defined for indexing, though null or undefined values will not + * cause errors. + * + * Entire documents can be boosted at build time. Applying a boost to a document indicates that + * this document should rank higher in search results than other documents. + * + * @param {object} doc - The document to add to the index. + * @param {object} attributes - Optional attributes associated with this document. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. + */ +lunr.Builder.prototype.add = function (doc, attributes) { + var docRef = doc[this._ref], + fields = Object.keys(this._fields) + + this._documents[docRef] = attributes || {} + this.documentCount += 1 + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i], + extractor = this._fields[fieldName].extractor, + field = extractor ? extractor(doc) : doc[fieldName], + tokens = this.tokenizer(field, { + fields: [fieldName] + }), + terms = this.pipeline.run(tokens), + fieldRef = new lunr.FieldRef (docRef, fieldName), + fieldTerms = Object.create(null) + + this.fieldTermFrequencies[fieldRef] = fieldTerms + this.fieldLengths[fieldRef] = 0 + + // store the length of this field for this document + this.fieldLengths[fieldRef] += terms.length + + // calculate term frequencies for this field + for (var j = 0; j < terms.length; j++) { + var term = terms[j] + + if (fieldTerms[term] == undefined) { + fieldTerms[term] = 0 + } + + fieldTerms[term] += 1 + + // add to inverted index + // create an initial posting if one doesn't exist + if (this.invertedIndex[term] == undefined) { + var posting = Object.create(null) + posting["_index"] = this.termIndex + this.termIndex += 1 + + for (var k = 0; k < fields.length; k++) { + posting[fields[k]] = Object.create(null) + } + + this.invertedIndex[term] = posting + } + + // add an entry for this term/fieldName/docRef to the invertedIndex + if (this.invertedIndex[term][fieldName][docRef] == undefined) { + this.invertedIndex[term][fieldName][docRef] = Object.create(null) + } + + // store all whitelisted metadata about this token in the + // inverted index + for (var l = 0; l < this.metadataWhitelist.length; l++) { + var metadataKey = this.metadataWhitelist[l], + metadata = term.metadata[metadataKey] + + if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { + this.invertedIndex[term][fieldName][docRef][metadataKey] = [] + } + + this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) + } + } + + } +} + +/** + * Calculates the average document length for this index + * + * @private + */ +lunr.Builder.prototype.calculateAverageFieldLengths = function () { + + var fieldRefs = Object.keys(this.fieldLengths), + numberOfFields = fieldRefs.length, + accumulator = {}, + documentsWithField = {} + + for (var i = 0; i < numberOfFields; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName + + documentsWithField[field] || (documentsWithField[field] = 0) + documentsWithField[field] += 1 + + accumulator[field] || (accumulator[field] = 0) + accumulator[field] += this.fieldLengths[fieldRef] + } + + var fields = Object.keys(this._fields) + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i] + accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] + } + + this.averageFieldLength = accumulator +} + +/** + * Builds a vector space model of every document using lunr.Vector + * + * @private + */ +lunr.Builder.prototype.createFieldVectors = function () { + var fieldVectors = {}, + fieldRefs = Object.keys(this.fieldTermFrequencies), + fieldRefsLength = fieldRefs.length, + termIdfCache = Object.create(null) + + for (var i = 0; i < fieldRefsLength; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + fieldName = fieldRef.fieldName, + fieldLength = this.fieldLengths[fieldRef], + fieldVector = new lunr.Vector, + termFrequencies = this.fieldTermFrequencies[fieldRef], + terms = Object.keys(termFrequencies), + termsLength = terms.length + + + var fieldBoost = this._fields[fieldName].boost || 1, + docBoost = this._documents[fieldRef.docRef].boost || 1 + + for (var j = 0; j < termsLength; j++) { + var term = terms[j], + tf = termFrequencies[term], + termIndex = this.invertedIndex[term]._index, + idf, score, scoreWithPrecision + + if (termIdfCache[term] === undefined) { + idf = lunr.idf(this.invertedIndex[term], this.documentCount) + termIdfCache[term] = idf + } else { + idf = termIdfCache[term] + } + + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) + score *= fieldBoost + score *= docBoost + scoreWithPrecision = Math.round(score * 1000) / 1000 + // Converts 1.23456789 to 1.234. + // Reducing the precision so that the vectors take up less + // space when serialised. Doing it now so that they behave + // the same before and after serialisation. Also, this is + // the fastest approach to reducing a number's precision in + // JavaScript. + + fieldVector.insert(termIndex, scoreWithPrecision) + } + + fieldVectors[fieldRef] = fieldVector + } + + this.fieldVectors = fieldVectors +} + +/** + * Creates a token set of all tokens in the index using lunr.TokenSet + * + * @private + */ +lunr.Builder.prototype.createTokenSet = function () { + this.tokenSet = lunr.TokenSet.fromArray( + Object.keys(this.invertedIndex).sort() + ) +} + +/** + * Builds the index, creating an instance of lunr.Index. + * + * This completes the indexing process and should only be called + * once all documents have been added to the index. + * + * @returns {lunr.Index} + */ +lunr.Builder.prototype.build = function () { + this.calculateAverageFieldLengths() + this.createFieldVectors() + this.createTokenSet() + + return new lunr.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) +} + +/** + * Applies a plugin to the index builder. + * + * A plugin is a function that is called with the index builder as its context. + * Plugins can be used to customise or extend the behaviour of the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied when building the index. + * + * The plugin function will be called with the index builder as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index builder as its context. + * + * @param {Function} plugin The plugin to apply. + */ +lunr.Builder.prototype.use = function (fn) { + var args = Array.prototype.slice.call(arguments, 1) + args.unshift(this) + fn.apply(this, args) +} +/** + * Contains and collects metadata about a matching document. + * A single instance of lunr.MatchData is returned as part of every + * lunr.Index~Result. + * + * @constructor + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + * @property {object} metadata - A cloned collection of metadata associated with this document. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData = function (term, field, metadata) { + var clonedMetadata = Object.create(null), + metadataKeys = Object.keys(metadata || {}) + + // Cloning the metadata to prevent the original + // being mutated during match data combination. + // Metadata is kept in an array within the inverted + // index so cloning the data can be done with + // Array#slice + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + clonedMetadata[key] = metadata[key].slice() + } + + this.metadata = Object.create(null) + + if (term !== undefined) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata + } +} + +/** + * An instance of lunr.MatchData will be created for every term that matches a + * document. However only one instance is required in a lunr.Index~Result. This + * method combines metadata from another instance of lunr.MatchData with this + * objects metadata. + * + * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData.prototype.combine = function (otherMatchData) { + var terms = Object.keys(otherMatchData.metadata) + + for (var i = 0; i < terms.length; i++) { + var term = terms[i], + fields = Object.keys(otherMatchData.metadata[term]) + + if (this.metadata[term] == undefined) { + this.metadata[term] = Object.create(null) + } + + for (var j = 0; j < fields.length; j++) { + var field = fields[j], + keys = Object.keys(otherMatchData.metadata[term][field]) + + if (this.metadata[term][field] == undefined) { + this.metadata[term][field] = Object.create(null) + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k] + + if (this.metadata[term][field][key] == undefined) { + this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] + } else { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) + } + + } + } + } +} + +/** + * Add metadata for a term/field pair to this instance of match data. + * + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + */ +lunr.MatchData.prototype.add = function (term, field, metadata) { + if (!(term in this.metadata)) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = metadata + return + } + + if (!(field in this.metadata[term])) { + this.metadata[term][field] = metadata + return + } + + var metadataKeys = Object.keys(metadata) + + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + + if (key in this.metadata[term][field]) { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) + } else { + this.metadata[term][field][key] = metadata[key] + } + } +} +/** + * A lunr.Query provides a programmatic way of defining queries to be performed + * against a {@link lunr.Index}. + * + * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method + * so the query object is pre-initialized with the right index fields. + * + * @constructor + * @property {lunr.Query~Clause[]} clauses - An array of query clauses. + * @property {string[]} allFields - An array of all available fields in a lunr.Index. + */ +lunr.Query = function (allFields) { + this.clauses = [] + this.allFields = allFields +} + +/** + * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. + * + * This allows wildcards to be added to the beginning and end of a term without having to manually do any string + * concatenation. + * + * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. + * + * @constant + * @default + * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour + * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists + * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with trailing wildcard + * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) + * @example query term with leading and trailing wildcard + * query.term('foo', { + * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING + * }) + */ + +lunr.Query.wildcard = new String ("*") +lunr.Query.wildcard.NONE = 0 +lunr.Query.wildcard.LEADING = 1 +lunr.Query.wildcard.TRAILING = 2 + +/** + * Constants for indicating what kind of presence a term must have in matching documents. + * + * @constant + * @enum {number} + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with required presence + * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) + */ +lunr.Query.presence = { + /** + * Term's presence in a document is optional, this is the default value. + */ + OPTIONAL: 1, + + /** + * Term's presence in a document is required, documents that do not contain + * this term will not be returned. + */ + REQUIRED: 2, + + /** + * Term's presence in a document is prohibited, documents that do contain + * this term will not be returned. + */ + PROHIBITED: 3 +} + +/** + * A single clause in a {@link lunr.Query} contains a term and details on how to + * match that term against a {@link lunr.Index}. + * + * @typedef {Object} lunr.Query~Clause + * @property {string[]} fields - The fields in an index this clause should be matched against. + * @property {number} [boost=1] - Any boost that should be applied when matching this clause. + * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. + * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. + * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. + * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. + */ + +/** + * Adds a {@link lunr.Query~Clause} to this query. + * + * Unless the clause contains the fields to be matched all fields will be matched. In addition + * a default boost of 1 is applied to the clause. + * + * @param {lunr.Query~Clause} clause - The clause to add to this query. + * @see lunr.Query~Clause + * @returns {lunr.Query} + */ +lunr.Query.prototype.clause = function (clause) { + if (!('fields' in clause)) { + clause.fields = this.allFields + } + + if (!('boost' in clause)) { + clause.boost = 1 + } + + if (!('usePipeline' in clause)) { + clause.usePipeline = true + } + + if (!('wildcard' in clause)) { + clause.wildcard = lunr.Query.wildcard.NONE + } + + if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { + clause.term = "*" + clause.term + } + + if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { + clause.term = "" + clause.term + "*" + } + + if (!('presence' in clause)) { + clause.presence = lunr.Query.presence.OPTIONAL + } + + this.clauses.push(clause) + + return this +} + +/** + * A negated query is one in which every clause has a presence of + * prohibited. These queries require some special processing to return + * the expected results. + * + * @returns boolean + */ +lunr.Query.prototype.isNegated = function () { + for (var i = 0; i < this.clauses.length; i++) { + if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { + return false + } + } + + return true +} + +/** + * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} + * to the list of clauses that make up this query. + * + * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion + * to a token or token-like string should be done before calling this method. + * + * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an + * array, each term in the array will share the same options. + * + * @param {object|object[]} term - The term(s) to add to the query. + * @param {object} [options] - Any additional properties to add to the query clause. + * @returns {lunr.Query} + * @see lunr.Query#clause + * @see lunr.Query~Clause + * @example adding a single term to a query + * query.term("foo") + * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard + * query.term("foo", { + * fields: ["title"], + * boost: 10, + * wildcard: lunr.Query.wildcard.TRAILING + * }) + * @example using lunr.tokenizer to convert a string to tokens before using them as terms + * query.term(lunr.tokenizer("foo bar")) + */ +lunr.Query.prototype.term = function (term, options) { + if (Array.isArray(term)) { + term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) + return this + } + + var clause = options || {} + clause.term = term.toString() + + this.clause(clause) + + return this +} +lunr.QueryParseError = function (message, start, end) { + this.name = "QueryParseError" + this.message = message + this.start = start + this.end = end +} + +lunr.QueryParseError.prototype = new Error +lunr.QueryLexer = function (str) { + this.lexemes = [] + this.str = str + this.length = str.length + this.pos = 0 + this.start = 0 + this.escapeCharPositions = [] +} + +lunr.QueryLexer.prototype.run = function () { + var state = lunr.QueryLexer.lexText + + while (state) { + state = state(this) + } +} + +lunr.QueryLexer.prototype.sliceString = function () { + var subSlices = [], + sliceStart = this.start, + sliceEnd = this.pos + + for (var i = 0; i < this.escapeCharPositions.length; i++) { + sliceEnd = this.escapeCharPositions[i] + subSlices.push(this.str.slice(sliceStart, sliceEnd)) + sliceStart = sliceEnd + 1 + } + + subSlices.push(this.str.slice(sliceStart, this.pos)) + this.escapeCharPositions.length = 0 + + return subSlices.join('') +} + +lunr.QueryLexer.prototype.emit = function (type) { + this.lexemes.push({ + type: type, + str: this.sliceString(), + start: this.start, + end: this.pos + }) + + this.start = this.pos +} + +lunr.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1) + this.pos += 1 +} + +lunr.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) { + return lunr.QueryLexer.EOS + } + + var char = this.str.charAt(this.pos) + this.pos += 1 + return char +} + +lunr.QueryLexer.prototype.width = function () { + return this.pos - this.start +} + +lunr.QueryLexer.prototype.ignore = function () { + if (this.start == this.pos) { + this.pos += 1 + } + + this.start = this.pos +} + +lunr.QueryLexer.prototype.backup = function () { + this.pos -= 1 +} + +lunr.QueryLexer.prototype.acceptDigitRun = function () { + var char, charCode + + do { + char = this.next() + charCode = char.charCodeAt(0) + } while (charCode > 47 && charCode < 58) + + if (char != lunr.QueryLexer.EOS) { + this.backup() + } +} + +lunr.QueryLexer.prototype.more = function () { + return this.pos < this.length +} + +lunr.QueryLexer.EOS = 'EOS' +lunr.QueryLexer.FIELD = 'FIELD' +lunr.QueryLexer.TERM = 'TERM' +lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' +lunr.QueryLexer.BOOST = 'BOOST' +lunr.QueryLexer.PRESENCE = 'PRESENCE' + +lunr.QueryLexer.lexField = function (lexer) { + lexer.backup() + lexer.emit(lunr.QueryLexer.FIELD) + lexer.ignore() + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexTerm = function (lexer) { + if (lexer.width() > 1) { + lexer.backup() + lexer.emit(lunr.QueryLexer.TERM) + } + + lexer.ignore() + + if (lexer.more()) { + return lunr.QueryLexer.lexText + } +} + +lunr.QueryLexer.lexEditDistance = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexBoost = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.BOOST) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexEOS = function (lexer) { + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } +} + +// This matches the separator used when tokenising fields +// within a document. These should match otherwise it is +// not possible to search for some tokens within a document. +// +// It is possible for the user to change the separator on the +// tokenizer so it _might_ clash with any other of the special +// characters already used within the search string, e.g. :. +// +// This means that it is possible to change the separator in +// such a way that makes some words unsearchable using a search +// string. +lunr.QueryLexer.termSeparator = lunr.tokenizer.separator + +lunr.QueryLexer.lexText = function (lexer) { + while (true) { + var char = lexer.next() + + if (char == lunr.QueryLexer.EOS) { + return lunr.QueryLexer.lexEOS + } + + // Escape character is '\' + if (char.charCodeAt(0) == 92) { + lexer.escapeCharacter() + continue + } + + if (char == ":") { + return lunr.QueryLexer.lexField + } + + if (char == "~") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexEditDistance + } + + if (char == "^") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexBoost + } + + // "+" indicates term presence is required + // checking for length to ensure that only + // leading "+" are considered + if (char == "+" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + // "-" indicates term presence is prohibited + // checking for length to ensure that only + // leading "-" are considered + if (char == "-" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + if (char.match(lunr.QueryLexer.termSeparator)) { + return lunr.QueryLexer.lexTerm + } + } +} + +lunr.QueryParser = function (str, query) { + this.lexer = new lunr.QueryLexer (str) + this.query = query + this.currentClause = {} + this.lexemeIdx = 0 +} + +lunr.QueryParser.prototype.parse = function () { + this.lexer.run() + this.lexemes = this.lexer.lexemes + + var state = lunr.QueryParser.parseClause + + while (state) { + state = state(this) + } + + return this.query +} + +lunr.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx] +} + +lunr.QueryParser.prototype.consumeLexeme = function () { + var lexeme = this.peekLexeme() + this.lexemeIdx += 1 + return lexeme +} + +lunr.QueryParser.prototype.nextClause = function () { + var completedClause = this.currentClause + this.query.clause(completedClause) + this.currentClause = {} +} + +lunr.QueryParser.parseClause = function (parser) { + var lexeme = parser.peekLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.type) { + case lunr.QueryLexer.PRESENCE: + return lunr.QueryParser.parsePresence + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expected either a field or a term, found " + lexeme.type + + if (lexeme.str.length >= 1) { + errorMessage += " with value '" + lexeme.str + "'" + } + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } +} + +lunr.QueryParser.parsePresence = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.str) { + case "-": + parser.currentClause.presence = lunr.Query.presence.PROHIBITED + break + case "+": + parser.currentClause.presence = lunr.Query.presence.REQUIRED + break + default: + var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term or field, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseField = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + if (parser.query.allFields.indexOf(lexeme.str) == -1) { + var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), + errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.fields = [lexeme.str] + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseTerm = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + parser.currentClause.term = lexeme.str.toLowerCase() + + if (lexeme.str.indexOf("*") != -1) { + parser.currentClause.usePipeline = false + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseEditDistance = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var editDistance = parseInt(lexeme.str, 10) + + if (isNaN(editDistance)) { + var errorMessage = "edit distance must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.editDistance = editDistance + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseBoost = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var boost = parseInt(lexeme.str, 10) + + if (isNaN(boost)) { + var errorMessage = "boost must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.boost = boost + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + ;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like enviroments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + root.lunr = factory() + } + }(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return lunr + })) +})(); diff --git a/js/lunr/lunr.min.js b/js/lunr/lunr.min.js new file mode 100644 index 0000000000..cdc94cd390 --- /dev/null +++ b/js/lunr/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/js/site.js b/js/site.js new file mode 100644 index 0000000000..b4ea6441fe --- /dev/null +++ b/js/site.js @@ -0,0 +1,121 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/* global Search, SpectrumSwitcher */ +const COLOR_FALLBACK = matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; +const SCALE_FALLBACK = matchMedia("(max-width: 700px) and (hover: none) and (pointer: coarse), (max-height: 700px) and (hover: none) and (pointer: coarse)").matches ? "large" : "medium"; + +// Switcher +if (typeof SpectrumSwitcher !== "undefined" && !window.switcher) { + window.switcher = new SpectrumSwitcher({ + theme: window.localStorage ? localStorage.getItem("swc-docs:theme:color") ?? COLOR_FALLBACK : COLOR_FALLBACK, + varsVersion: window.localStorage ? localStorage.getItem("swc-docs:theme:theme") ?? "default" : "default", + scale: window.localStorage ? localStorage.getItem("swc-docs:theme:scale") ?? SCALE_FALLBACK : SCALE_FALLBACK, + direction: window.localStorage ? localStorage.getItem("swc-docs:theme:dir") ?? "ltr" : "ltr", + callback: function (event) { + const key = event.property === "vars" ? "vars-version" : event.property; + const picker = document.querySelector(`#switcher-${key}`); + if (!picker) return; + + picker.setAttribute("value", event.value); + + const menu = picker.nextElementSibling.querySelector(".spectrum-Menu"); + if (!menu) return; + + const menuItem = menu.querySelector( + ".spectrum-Menu-item[value=\"" + event.value + "\"]" + ); + + let label; + if (menuItem) { + const selectedMenuItem = menu.querySelector( + ".spectrum-Menu-item.is-selected" + ); + + if (selectedMenuItem) { + selectedMenuItem.classList.remove("is-selected"); + selectedMenuItem.removeAttribute("aria-selected"); + } + + menuItem.classList.add("is-selected"); + menuItem.setAttribute("aria-selected", "true"); + + const menuLabel = menuItem.querySelector(".spectrum-Menu-itemLabel"); + if (menuLabel) { + label = menuLabel.innerHTML; + } + } + + if (picker && label) { + const pickerLabel = picker.querySelector(".spectrum-Picker-label"); + if (pickerLabel) pickerLabel.innerHTML = label; + } + }, + }); +} + +// Sidebar +function hideSideBar() { + const overlay = document.querySelector("#site-overlay"); + overlay.removeEventListener("click", hideSideBar); + overlay.classList.remove("is-open"); + + const sideBar = document.querySelector("#site-sidebar"); + if (sideBar) sideBar.classList.remove("is-open"); + if (window.siteSearch) window.siteSearch.hideResults(); +} + +function showSideBar() { + const overlay = document.querySelector("#site-overlay"); + const sideBar = document.querySelector("#site-sidebar"); + + overlay.addEventListener("click", hideSideBar); + sideBar.classList.add("is-open"); + overlay.classList.add("is-open"); +} + +window.addEventListener("SearchFocused", () => { + showSideBar(); + + // Immediately hide results, otherwise they show up in the wrong position since we're in the middle of animation + if (window.siteSearch) window.siteSearch.hideResults(); +}); + +window.addEventListener("resize", () => { + if (!window.matchMedia("(max-width: 960px)").matches) { + hideSideBar(); + } +}); + +window.addEventListener("DOMContentLoaded", () => { + const siteSearch = document.querySelector("#site-search"); + + // Search isn't supported on IE 11 and sideBar will not be exist in test mode + if (typeof Search !== "undefined" && siteSearch && !window.siteSearch) { + window.siteSearch = new Search(siteSearch); + } + + if (!window.matchMedia("(max-width: 960px)").matches) hideSideBar(); + else showSideBar(); + + const siteMenu = document.querySelector("#site-menu"); + if (siteMenu) { + siteMenu.addEventListener("click", function () { + const sideBar = document.querySelector("#site-sidebar"); + if (!sideBar) return; + + if (sideBar.classList.contains("is-open")) hideSideBar(); + else showSideBar(); + }); + } +}); diff --git a/js/typekit.js b/js/typekit.js new file mode 100644 index 0000000000..236d669ad8 --- /dev/null +++ b/js/typekit.js @@ -0,0 +1,70 @@ +/*! + * Copyright 2024 Adobe. All rights reserved. + * + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +/* global Typekit */ +/* jshint -W033,-W116 */ +window.addEventListener("DOMContentLoaded", function () { + "use strict"; + + var config = { + /* Do not use this in production; see https://wiki.corp.adobe.com/display/devrel/Using+Typekit+at+Adobe to get set up. */ + + // On pageload, determine to current pages language setting. + // If it is US-language or unset use the 1st Adobe font web project id (smaller size), + // otherwise use the 2nd kit with all the language settings (larger size) + kitId: + document.querySelector("[lang]:not([lang=\"en-US\"])") === null + ? "mge7bvf" + : "rok6rmo", + scriptTimeout: 3000, + active: function () { + var loader = document.getElementById("loader"); + if (loader) { + setTimeout(function () { + // Hide the loader + loader.style.display = "none"; + }, 125); + } + }, + }; + + if (!window.Typekit) { + // we load the typescript only once + var h = document.getElementsByTagName("html")[0]; + h.className += " wf-loading"; + var t = setTimeout(function () { + h.className = h.className.replace(/(\s|^)wf-loading(\s|$)/g, " "); + h.className += " wf-inactive"; + }, config.scriptTimeout); + var tk = document.createElement("script"), + d = false; + + // Always load over https + tk.src = "https://use.typekit.net/" + config.kitId + ".js"; + tk.type = "text/javascript"; + tk.async = "true"; + tk.onload = tk.onreadystatechange = function () { + var a = this.readyState; + if (d || (a && a !== "complete" && a !== "loaded")) { + return; + } + d = true; + clearTimeout(t); + try { + Typekit.load(config); + } + catch (b) { /* empty */ } + }; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(tk, s); + } +}); diff --git a/link.html b/link.html new file mode 100644 index 0000000000..61a35cbfd3 --- /dev/null +++ b/link.html @@ -0,0 +1,53 @@ +Link - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express
    Component status
    Contribution
    Current version@spectrum-css/link@5.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/link@6.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Static White
    Contribution

    +

    + Hello, this is my spectrum-Link--staticWhite. This is just filler text, but if you keep reading maybe something good will happen. +

    +
    +
    Show markup
    <div style="background-color: rgb(15, 121, 125); padding: 15px 20px; display: inline-block;">
    +  <p class="spectrum-Body" style="color: rgb(255, 255, 255);">
    +    Hello, this is my <a href="#" class="spectrum-Link spectrum-Link--staticWhite"> spectrum-Link--staticWhite</a>. This is just filler text, but if you keep reading maybe something good will happen.
    +  </p>
    +</div>
    +

    Static Black
    Contribution

    +

    + Hello, this is my spectrum-Link--staticBlack. This is just filler text, but if you keep reading maybe something good will happen. +

    +
    +
    Show markup
    <div style="background-color: rgb(181, 209, 211); color: rgb(181, 209, 211); padding: 15px 20px; display: inline-block;">
    +  <p class="spectrum-Body">
    +    Hello, this is my <a href="#" class="spectrum-Link spectrum-Link--staticBlack"> spectrum-Link--staticBlack</a>. This is just filler text, but if you keep reading maybe something good will happen.
    +  </p>
    +</div>
    +

    Quiet (Static White)
    Contribution

    +

    + Hello, this is my spectrum-Link--staticWhite and spectrum-Link--quiet. This is just filler text, but if you keep reading maybe something good will happen. +

    +
    +
    Show markup
    <div style="background-color: rgb(15, 121, 125); padding: 15px 20px; display: inline-block;">
    +  <p class="spectrum-Body" style="color: rgb(255, 255, 255);">
    +    Hello, this is my <a href="#" class="spectrum-Link spectrum-Link--staticWhite spectrum-Link--quiet"> spectrum-Link--staticWhite and spectrum-Link--quiet</a>. This is just filler text, but if you keep reading maybe something good will happen.
    +  </p>
    +</div>
    +

    Quiet (Static Black)
    Contribution

    +

    + Hello, this is my spectrum-Link--staticBlack and spectrum-Link--quiet. This is just filler text, but if you keep reading maybe something good will happen. +

    +
    +
    Show markup
    <div style="background-color: rgb(181, 209, 211); padding: 15px 20px; display: inline-block;">
    +  <p class="spectrum-Body" style=" color: rgb(34, 34, 34);">
    +    Hello, this is my <a href="#" class="spectrum-Link spectrum-Link--staticBlack spectrum-Link--quiet"> spectrum-Link--staticBlack and spectrum-Link--quiet</a>. This is just filler text, but if you keep reading maybe something good will happen.
    +  </p>
    +</div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    Migration Guide


    Subtle variant

    +

    Subtle variant was removed. Please use Quiet.

    +

    \ No newline at end of file diff --git a/logicbutton.html b/logicbutton.html new file mode 100644 index 0000000000..ccd9656eb6 --- /dev/null +++ b/logicbutton.html @@ -0,0 +1,13 @@ +Logic button - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Logic button

    Component status
    Contribution
    Current version@spectrum-css/logicbutton@4.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/logicbutton@5.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Usage notes


    A LogicButton displays an operator within a boolean logic sequence.

    +

    Variants


    And
    Contribution

    + +
    Show markup
    <button type="button" class="spectrum-LogicButton spectrum-LogicButton--and" style="margin-inline-end: 4px;">And</button>
    +<button type="button" class="spectrum-LogicButton spectrum-LogicButton--and" disabled>And</button>
    +

    Or
    Contribution

    + +
    Show markup
    <button type="button" class="spectrum-LogicButton spectrum-LogicButton--or" style="margin-inline-end: 4px;">Or</button>
    +<button type="button" class="spectrum-LogicButton spectrum-LogicButton--or" disabled>Or</button>
    +

    Migration Guide


    Remove focus-ring class

    +

    We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

    +

    \ No newline at end of file diff --git a/menu.html b/menu.html new file mode 100644 index 0000000000..b8a3499a3f --- /dev/null +++ b/menu.html @@ -0,0 +1,2692 @@ +Menu - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express
    Component status
    Contribution
    Current version@spectrum-css/menu@7.1.4
    ReleasedJune 13, 2024
    S2-foundations@spectrum-css/menu@8.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Sizing
    Contribution

    +
    +

    S

    +
    + +
    +
    +
    +

    M

    +
    + +
    +
    +
    +

    L

    +
    + +
    +
    +
    +

    XL

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeS" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Small Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Small Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Small Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Small Menu</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Medium Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Medium Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Medium Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Medium Menu</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Large Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Large Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Large Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Large Menu</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeXL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">XL Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">XL Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">XL Menu</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">XL Menu</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Sizing with Icons
    Contribution

    +
    +

    S

    +
    + +
    +
    +
    +

    M

    +
    + +
    +
    +
    +

    L

    +
    + +
    +
    +
    +

    XL

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeS" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Cut Icon">
    +            <use xlink:href="#spectrum-icon-18-Cut"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Cut</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Copy Icon">
    +            <use xlink:href="#spectrum-icon-18-Copy"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Copy</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Paste Icon">
    +            <use xlink:href="#spectrum-icon-18-Paste"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Paste</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Cut Icon">
    +            <use xlink:href="#spectrum-icon-18-Cut"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Cut</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Copy Icon">
    +            <use xlink:href="#spectrum-icon-18-Copy"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Copy</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Paste Icon">
    +            <use xlink:href="#spectrum-icon-18-Paste"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Paste</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Cut Icon">
    +            <use xlink:href="#spectrum-icon-18-Cut"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Cut</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Copy Icon">
    +            <use xlink:href="#spectrum-icon-18-Copy"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Copy</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Paste Icon">
    +            <use xlink:href="#spectrum-icon-18-Paste"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Paste</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeXL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Cut Icon">
    +            <use xlink:href="#spectrum-icon-18-Cut"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Cut</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Copy Icon">
    +            <use xlink:href="#spectrum-icon-18-Copy"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Copy</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Paste Icon">
    +            <use xlink:href="#spectrum-icon-18-Paste"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Paste</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    With disabled item(s)
    Contribution

    +
    +

    Menu with icons

    +
    + +
    +
    +
    +

    Menu with descriptions

    +
    + +
    +
    +
    +

    Menu with icons & descriptions

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Menu with icons</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Cut Icon">
    +            <use xlink:href="#spectrum-icon-18-Cut"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Cut</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Copy Icon">
    +            <use xlink:href="#spectrum-icon-18-Copy"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Copy</span>
    +        </li>
    +        <li class="spectrum-Menu-item is-disabled" role="menuitem" aria-disabled="true">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Paste Icon">
    +            <use xlink:href="#spectrum-icon-18-Paste"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Paste</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Menu with descriptions</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item is-disabled" role="menuitem" aria-disabled="true">
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Menu with icons & descriptions</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Export Icon">
    +            <use xlink:href="#spectrum-icon-18-Export"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Folder Open Icon">
    +            <use xlink:href="#spectrum-icon-18-FolderOpen"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item is-disabled" role="menuitem" aria-disabled="true">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-Share"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Text overflow
    Contribution

    +
    +

    Menu without descriptions

    +
    + +
    +
    +
    +

    Menu with descriptions

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="justify-content: flex-start; gap: 25%;">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Menu without descriptions</h4>
    +    <div class="spectrum-Examples-itemGroup" style="max-width: 150px;">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Small (works best for mobile phones)</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Medium (all purpose)</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Large (works best for printing)</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Menu with descriptions</h4>
    +    <div class="spectrum-Examples-itemGroup" style="max-width: 150px;">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Small (works best for mobile phones)</span>
    +          <span class="spectrum-Menu-itemDescription">A lengthy description about small is here</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Medium (all purpose)</span>
    +          <span class="spectrum-Menu-itemDescription">A lengthy description about medium is here</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Large (works best for printing)</span>
    +          <span class="spectrum-Menu-itemDescription">A lengthy description about large is here</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Sizing with descriptions
    Contribution

    +
    +

    S

    +
    + +
    +
    +
    +

    M

    +
    + +
    +
    +
    +

    L

    +
    + +
    +
    +
    +

    XL

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeS" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeXL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Sizing with descriptions and icons
    Contribution

    +
    +

    S

    +
    + +
    +
    +
    +

    M

    +
    + +
    +
    +
    +

    L

    +
    + +
    +
    +
    +

    XL

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeS" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Export Icon">
    +            <use xlink:href="#spectrum-icon-18-Export"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Folder Open Icon">
    +            <use xlink:href="#spectrum-icon-18-FolderOpen"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-Share"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Export Icon">
    +            <use xlink:href="#spectrum-icon-18-Export"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Folder Open Icon">
    +            <use xlink:href="#spectrum-icon-18-FolderOpen"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-Share"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Export Icon">
    +            <use xlink:href="#spectrum-icon-18-Export"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Folder Open Icon">
    +            <use xlink:href="#spectrum-icon-18-FolderOpen"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-Share"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeXL" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Export Icon">
    +            <use xlink:href="#spectrum-icon-18-Export"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Quick export</span>
    +          <span class="spectrum-Menu-itemDescription">Share a snapshot</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Folder Open Icon">
    +            <use xlink:href="#spectrum-icon-18-FolderOpen"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Open a copy</span>
    +          <span class="spectrum-Menu-itemDescription">Illustrator for iPad</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-Share"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Share link</span>
    +          <span class="spectrum-Menu-itemDescription">Enable comments and download</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Collapsible
    Contribution

    +
    +

    S

    +
    + +
    +
    +
    +

    M

    +
    + +
    +
    +
    +

    L

    +
    + +
    +
    +
    +

    XL

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeS" role="menu">
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-UIIcon-ChevronRight75 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron75" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Desktop & Mobile Icon">
    +            <use xlink:href="#spectrum-icon-18-DesktopAndMobile"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex1-menu-heading-1" aria-hidden="true">Web Design</span>
    +          <ul id="spectrum-menu-item-0-submenu" class="spectrum-Menu spectrum-Menu--sizeS is-open" aria-labelledby="ex1-menu-heading-2" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-UIIcon-ChevronRight75 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron75" />
    +          </svg>
    +
    +          <span class="spectrum-Menu-sectionHeading" id="ex1-menu-heading-2" aria-hidden="true">Mobile</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeS is-open" aria-labelledby="ex1-menu-heading-2" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-UIIcon-ChevronRight75 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron75" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Tablet Icon" style="transform: rotate(90deg);">
    +            <use xlink:href="#spectrum-icon-18-DeviceTablet"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex1-menu-heading-3" aria-hidden="true">Tablet</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeS" aria-labelledby="ex1-menu-heading-3" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-UIIcon-ChevronRight75 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron75" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-ShareAndroid"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex1-menu-heading-4" aria-hidden="true">Social Media</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeS" aria-labelledby="ex1-menu-heading-4" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-UIIcon-ChevronRight75 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron75" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeS spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Watch Icon">
    +            <use xlink:href="#spectrum-icon-18-Watch"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex1-menu-heading-5" aria-hidden="true">Watches</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeS" aria-labelledby="ex1-menu-heading-5" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-ChevronRight100 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron100" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Desktop & Mobile Icon">
    +            <use xlink:href="#spectrum-icon-18-DesktopAndMobile"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex2-menu-heading-1" aria-hidden="true">Web Design</span>
    +          <ul id="spectrum-menu-item-0-submenu" class="spectrum-Menu is-open" aria-labelledby="ex2-menu-heading-1" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-ChevronRight100 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron100" />
    +          </svg>
    +
    +          <span class="spectrum-Menu-sectionHeading" id="ex2-menu-heading-2" aria-hidden="true">Mobile</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu is-open" aria-labelledby="ex2-menu-heading-2" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-ChevronRight100 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron100" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Tablet Icon" style="transform: rotate(90deg);">
    +            <use xlink:href="#spectrum-icon-18-DeviceTablet"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex2-menu-heading-3" aria-hidden="true">Tablet</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu" aria-labelledby="ex2-menu-heading-3" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-ChevronRight100 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron100" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-ShareAndroid"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex2-menu-heading-4" aria-hidden="true">Social Media</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu" aria-labelledby="ex2-menu-heading-4" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-ChevronRight100 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron100" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Watch Icon">
    +            <use xlink:href="#spectrum-icon-18-Watch"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex2-menu-heading-5" aria-hidden="true">Watches</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu" aria-labelledby="ex2-menu-heading-5" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeL" role="menu">
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-UIIcon-ChevronRight200 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron200" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Desktop & Mobile Icon">
    +            <use xlink:href="#spectrum-icon-18-DesktopAndMobile"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex3-menu-heading-1" aria-hidden="true">Web Design</span>
    +          <ul id="spectrum-menu-item-0-submenu" class="spectrum-Menu spectrum-Menu--sizeL is-open" aria-labelledby="ex3-menu-heading-1" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-UIIcon-ChevronRight200 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron200" />
    +          </svg>
    +
    +          <span class="spectrum-Menu-sectionHeading" id="ex3-menu-heading-2" aria-hidden="true">Mobile</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeL is-open" aria-labelledby="ex3-menu-heading-2" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-UIIcon-ChevronRight200 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron200" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Tablet Icon" style="transform: rotate(90deg);">
    +            <use xlink:href="#spectrum-icon-18-DeviceTablet"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex3-menu-heading-3" aria-hidden="true">Tablet</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeL" aria-labelledby="ex3-menu-heading-3" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-UIIcon-ChevronRight200 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron200" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-ShareAndroid"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex3-menu-heading-4" aria-hidden="true">Social Media</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeL" aria-labelledby="ex3-menu-heading-4" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-UIIcon-ChevronRight200 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron200" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Watch Icon">
    +            <use xlink:href="#spectrum-icon-18-Watch"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex3-menu-heading-5" aria-hidden="true">Watches</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeL" aria-labelledby="ex3-menu-heading-5" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu spectrum-Menu--sizeXL" role="menu">
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-UIIcon-Chevron300 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron300" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Desktop & Mobile Icon">
    +            <use xlink:href="#spectrum-icon-18-DesktopAndMobile"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex4-menu-heading-1" aria-hidden="true">Web Design</span>
    +          <ul id="spectrum-menu-item-0-submenu" class="spectrum-Menu spectrum-Menu--sizeXL is-open" aria-labelledby="ex4-menu-heading-1" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Web Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible is-open" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-UIIcon-Chevron300 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron300" />
    +          </svg>
    +
    +          <span class="spectrum-Menu-sectionHeading" id="ex4-menu-heading-2" aria-hidden="true">Mobile</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeXL is-open" aria-labelledby="ex4-menu-heading-2" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Mobile Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-UIIcon-Chevron300 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron300" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Tablet Icon" style="transform: rotate(90deg);">
    +            <use xlink:href="#spectrum-icon-18-DeviceTablet"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex4-menu-heading-3" aria-hidden="true">Tablet</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeXL" aria-labelledby="ex4-menu-heading-3" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Tablet Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-UIIcon-Chevron300 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron300" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Share Icon">
    +            <use xlink:href="#spectrum-icon-18-ShareAndroid"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex4-menu-heading-4" aria-hidden="true">Social Media</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu spectrum-Menu--sizeXL" aria-labelledby="ex4-menu-heading-4" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Social Media Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +        <li class="spectrum-Menu-item spectrum-Menu-item--collapsible spectrum-Menu-item--collapsible-withWorkflowIcon" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-UIIcon-Chevron300 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +            <use xlink:href="#spectrum-css-icon-Chevron300" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeXL spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Watch Icon">
    +            <use xlink:href="#spectrum-icon-18-Watch"></use>
    +          </svg>
    +          <span class="spectrum-Menu-sectionHeading" id="ex4-menu-heading-5" aria-hidden="true">Watches</span>
    +          <ul id="spectrum-menu-item-1-submenu" class="spectrum-Menu" aria-labelledby="ex4-menu-heading-5" role="menu">
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Large</span>
    +              <span class="spectrum-Menu-itemValue">1920 x 1080</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Medium</span>
    +              <span class="spectrum-Menu-itemValue">1366 x 768</span>
    +            </li>
    +            <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +              <span class="spectrum-Menu-itemLabel">Watch Small</span>
    +              <span class="spectrum-Menu-itemValue">1280 x 800</span>
    +            </li>
    +          </ul>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Standard with dividers
    Contribution

    +
    + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <ul class="spectrum-Menu" role="menu">
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Deselect</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Select Inverse</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Feather Effect</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Select and Mask</span>
    +      </li>
    +      <li class="spectrum-Divider spectrum-Divider--sizeS spectrum-Menu-divider" role="separator"></li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Save Selection</span>
    +      </li>
    +      <li class="spectrum-Menu-item is-disabled" role="menuitem" aria-disabled="true">
    +        <span class="spectrum-Menu-itemLabel">Make Work Path</span>
    +      </li>
    +    </ul>
    +  </div>
    +</div>
    +

    Standard with section headers and dividers
    Contribution

    +
    + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <ul class="spectrum-Menu" role="menu">
    +      <li role="presentation">
    +        <span class="spectrum-Menu-sectionHeading" id="menu-sections-heading-1" aria-hidden="true">Tools</span>
    +        <ul class="spectrum-Menu is-selectable" role="group" aria-labelledby="menu-sections-heading-1">
    +          <li class="spectrum-Menu-item is-selected" role="menuitem" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-Checkmark100 spectrum-Menu-itemIcon spectrum-Menu-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Selection Icon">
    +              <use xlink:href="#spectrum-icon-18-Selection"></use>
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Marquee</span>
    +          </li>
    +          <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Add Icon">
    +              <use xlink:href="#spectrum-icon-18-SelectAdd"></use>
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Add</span>
    +          </li>
    +          <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Subtract Icon">
    +              <use xlink:href="#spectrum-icon-18-SelectSubtract"></use>
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Subtract</span>
    +          </li>
    +        </ul>
    +      </li>
    +      <li class="spectrum-Divider spectrum-Divider--sizeS spectrum-Menu-divider" role="separator"></li>
    +      <li role="presentation">
    +        <span class="spectrum-Menu-sectionHeading" id="menu-sections-heading-2"  aria-hidden="true">Actions</span>
    +        <ul class="spectrum-Menu is-selectable" role="group" aria-labelledby="menu-sections-heading-2" aria-disabled="true">
    +          <li class="spectrum-Menu-item spectrum-Menu-item--is-selectable is-disabled" role="menuitem" aria-disabled="true">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Deselect Icon">
    +              <use xlink:href="#spectrum-icon-18-Deselect"></use>
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Deselect</span>
    +          </li>
    +        </ul>
    +      </li>
    +    </ul>
    +  </div>
    +</div>
    +

    Single Selection
    Contribution

    +
    +

    Without icons

    +
    + +
    +
    +
    +

    With icons

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="justify-content: flex-start; gap: 25%;">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Without icons</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu is-selectable" role="menu">
    +        <li class="spectrum-Menu-item is-selected" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-Checkmark100 spectrum-Menu-itemIcon spectrum-Menu-checkmark" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Marquee</span>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Add</span>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Subtract</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">With icons</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu is-selectable" role="menu">
    +        <li class="spectrum-Menu-item is-selected" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-Checkmark100 spectrum-Menu-itemIcon spectrum-Menu-checkmark" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Selection Icon">
    +            <use xlink:href="#spectrum-icon-18-Selection"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Marquee</span>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Add Icon">
    +            <use xlink:href="#spectrum-icon-18-SelectAdd"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Add</span>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Subtract Icon">
    +            <use xlink:href="#spectrum-icon-18-SelectSubtract"></use>
    +          </svg>
    +          <span class="spectrum-Menu-itemLabel">Subtract</span>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Multi-Selection
    Contribution

    +
    +

    Without icons

    +
    + +
    +
    +
    +

    With icons

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="justify-content: flex-start; gap: 25%;">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Without icons</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu is-selectableMultiple" role="menu">
    +        <li class="spectrum-Menu-item is-selected" role="menuitem" tabindex="0">
    +          <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-Menu-itemCheckbox">
    +            <input type="checkbox" class="spectrum-Checkbox-input" checked>
    +            <span class="spectrum-Checkbox-box">
    +              <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +              </svg>
    +            </span>
    +            <span class="spectrum-Checkbox-label spectrum-Menu-itemLabel">Marquee</span>
    +          </label>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-Menu-itemCheckbox">
    +            <input type="checkbox" class="spectrum-Checkbox-input">
    +            <span class="spectrum-Checkbox-box">
    +              <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +              </svg>
    +            </span>
    +            <span class="spectrum-Checkbox-label spectrum-Menu-itemLabel">Add</span>
    +          </label>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-Menu-itemCheckbox">
    +            <input type="checkbox" class="spectrum-Checkbox-input">
    +            <span class="spectrum-Checkbox-box">
    +              <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +              </svg>
    +            </span>
    +            <span class="spectrum-Checkbox-label spectrum-Menu-itemLabel">Subtract</span>
    +          </label>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">With icons</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu is-selectableMultiple" role="menu">
    +        <li class="spectrum-Menu-item is-selected" role="menuitem" tabindex="0">
    +          <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-Menu-itemCheckbox">
    +            <input type="checkbox" class="spectrum-Checkbox-input" checked>
    +            <span class="spectrum-Checkbox-box">
    +              <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +              </svg>
    +            </span>
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Selection Icon">
    +              <use xlink:href="#spectrum-icon-18-Selection"></use>
    +            </svg>
    +            <span class="spectrum-Checkbox-label spectrum-Menu-itemLabel">Marquee</span>
    +          </label>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-Menu-itemCheckbox">
    +            <input type="checkbox" class="spectrum-Checkbox-input">
    +            <span class="spectrum-Checkbox-box">
    +              <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +              </svg>
    +            </span>
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Add Icon">
    +              <use xlink:href="#spectrum-icon-18-SelectAdd"></use>
    +            </svg>
    +            <span class="spectrum-Checkbox-label spectrum-Menu-itemLabel">Add</span>
    +          </label>
    +        </li>
    +        <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +          <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-Checkbox--emphasized spectrum-Menu-itemCheckbox">
    +            <input type="checkbox" class="spectrum-Checkbox-input">
    +            <span class="spectrum-Checkbox-box">
    +              <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +                <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +              </svg>
    +            </span>
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Subtract Icon">
    +              <use xlink:href="#spectrum-icon-18-SelectSubtract"></use>
    +            </svg>
    +            <span class="spectrum-Checkbox-label spectrum-Menu-itemLabel">Subtract</span>
    +          </label>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    With Switch
    Contribution

    +
    +

    Without icons

    +
    + +
    +
    +
    +

    With icons

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="justify-content: flex-start; gap: 25%;">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">Without icons</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <label class="spectrum-Switch-label spectrum-Menu-itemLabel" for="switch-onoff-0">Marquee</label>
    +          <div class="spectrum-Menu-itemActions">
    +            <div class="spectrum-Switch spectrum-Switch--sizeM spectrum-Switch--emphasized spectrum-Menu-itemSwitch">
    +              <input type="checkbox" class="spectrum-Switch-input" id="switch-onoff-0" checked>
    +              <span class="spectrum-Switch-switch"></span>
    +            </div>
    +          </div>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <label class="spectrum-Switch-label spectrum-Menu-itemLabel" for="switch-onoff-1">Add</label>
    +          <div class="spectrum-Menu-itemActions">
    +            <div class="spectrum-Switch spectrum-Switch--sizeM spectrum-Switch--emphasized spectrum-Menu-itemSwitch">
    +              <input type="checkbox" class="spectrum-Switch-input" id="switch-onoff-1">
    +              <span class="spectrum-Switch-switch"></span>
    +            </div>
    +          </div>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <label class="spectrum-Switch-label spectrum-Menu-itemLabel" for="switch-onoff-2">Subtract</label>
    +          <div class="spectrum-Menu-itemActions">
    +            <div class="spectrum-Switch spectrum-Switch--sizeM spectrum-Switch--emphasized spectrum-Menu-itemSwitch">
    +              <input type="checkbox" class="spectrum-Switch-input" id="switch-onoff-2">
    +              <span class="spectrum-Switch-switch"></span>
    +            </div>
    +          </div>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">With icons</h4>
    +    <div class="spectrum-Examples-itemGroup">
    +      <ul class="spectrum-Menu" role="menu">
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Selection Icon">
    +              <use xlink:href="#spectrum-icon-18-Selection"></use>
    +            </svg>
    +          <label class="spectrum-Switch-label spectrum-Menu-itemLabel" for="switch-onoff-3">
    +            Marquee
    +          </label>
    +          <div class="spectrum-Menu-itemActions">
    +            <div class="spectrum-Switch spectrum-Switch--sizeM spectrum-Switch--emphasized spectrum-Menu-itemSwitch">
    +              <input type="checkbox" class="spectrum-Switch-input" aria-labelledby="label4" id="switch-onoff-3" checked>
    +              <span class="spectrum-Switch-switch"></span>
    +            </div>
    +          </div>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Add Icon">
    +            <use xlink:href="#spectrum-icon-18-SelectAdd"></use>
    +          </svg>
    +          <label class="spectrum-Switch-label spectrum-Menu-itemLabel" for="switch-onoff-4">
    +            Add
    +          </label>
    +          <div class="spectrum-Menu-itemActions">
    +            <div class="spectrum-Switch spectrum-Switch--sizeM spectrum-Switch--emphasized spectrum-Menu-itemSwitch">
    +              <input type="checkbox" class="spectrum-Switch-input" aria-labelledby="label5" id="switch-onoff-4">
    +              <span class="spectrum-Switch-switch"></span>
    +            </div>
    +          </div>
    +        </li>
    +        <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +          <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Subtract Icon">
    +            <use xlink:href="#spectrum-icon-18-SelectSubtract"></use>
    +          </svg>
    +          <label class="spectrum-Switch-label spectrum-Menu-itemLabel" for="switch-onoff-5">
    +            Subtract
    +          </label>
    +          <div class="spectrum-Menu-itemActions">
    +            <div class="spectrum-Switch spectrum-Switch--sizeM spectrum-Switch--emphasized spectrum-Menu-itemSwitch">
    +              <input type="checkbox" class="spectrum-Switch-input" aria-labelledby="label6" id="switch-onoff-5">
    +              <span class="spectrum-Switch-switch"></span>
    +            </div>
    +          </div>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +</div>
    +

    Drill-in for submenu
    Contribution

    Use the class spectrum-Menu-itemLabel--truncate on the item label or section heading that should truncate within a menu. When text would typically overflow beyond the available horizontal space and wrap (default behavior), ellipsis will appear instead. This is demonstrated here by setting an inline-size on the menu.

    +
    +
    + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <ul class="spectrum-Menu" role="menu">
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Deselect</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Select Inverse</span>
    +      </li>
    +      <li class="spectrum-Menu-item spectrum-Menu-item--drillIn is-open" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Feather really long item</span>
    +        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-ChevronRight100 spectrum-Menu-chevron spectrum-Menu-itemIcon" focusable="false" aria-hidden="true" aria-label="Next">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Select and Mask</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Save Selection</span>
    +      </li>
    +    </ul>
    +  </div>
    +</div>
    +

    Tray submenus
    Contribution

    When a menu is displayed within a tray, a submenu will replace the tray content when the parent menu item is selected. A submenu displays a back button (labeled by the title of the parent item) at the top of the tray to return the user to the previous level of the menu. The back arrow size scale used with the various menu sizes are small: 200, medium: 300, large: 400, and extra large: 500.

    +
    +
    +
    +
    +
    Show markup
    <div class="spectrum-Tray-wrapper spectrum-CSSExample-dialog" style="background: rgba(0,0,0,0.4);">
    +  <div class="spectrum-Modal spectrum-Tray is-open">
    +    <ul class="spectrum-Menu is-selectableMultiple" role="menu" style="--mod-menu-inline-size: 100%;">
    +      <li role="presentation">
    +        <div class="spectrum-Menu-back">
    +          <button aria-label="Back to previous menu" class="spectrum-Menu-backButton" type="button" role="menuitem">
    +            <svg
    +              class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-ArrowLeft200 spectrum-Menu-backIcon"
    +              aria-hidden="true"
    +            ><use xlink:href="#spectrum-css-icon-Arrow200" /></svg>
    +          </button>
    +          <span class="spectrum-Menu-backHeading" id="back-menu-heading" aria-hidden="true">Snap to</span>
    +        </div>
    +        <ul class="spectrum-Menu is-selectable" role="group" aria-labelledby="back-menu-heading">
    +          <li class="spectrum-Menu-item is-selected" role="menuitem" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-UIIcon-Checkmark100 spectrum-Menu-itemIcon spectrum-Menu-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Selection Icon">
    +              <use xlink:href="#spectrum-icon-18-Selection"></use>
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Marquee</span>
    +          </li>
    +          <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Add Icon">
    +              <use xlink:href="#spectrum-icon-18-SelectAdd"></use>
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Add</span>
    +          </li>
    +          <li class="spectrum-Menu-item is-selectable" role="menuitem" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Select Subtract Icon">
    +              <use xlink:href="#spectrum-icon-18-SelectSubtract"></use>
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Subtract</span>
    +          </li>
    +        </ul>
    +    </div>
    +  </div>
    +

    Menu with truncating text
    Contribution

    Use the class spectrum-Menu-itemLabel--truncate on the item label or section heading that should truncate with in a menu with a set inline-size or max-inline-size

    +
    +
    + +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="justify-content: flex-start; gap: 25%;">
    +  <div class="spectrum-Examples-item">
    +    <ul class="spectrum-Menu spectrum-Menu--sizeM" role="menu" style="inline-size: 100px;">
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Deselect</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Select Inverse</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel spectrum-Menu-itemLabel--truncate">Truncate this menu item</span>
    +      </li>
    +      <li class="spectrum-Menu-item" role="menuitem" tabindex="0">
    +        <span class="spectrum-Menu-itemLabel">Save Selection</span>
    +      </li>
    +    </ul>
    +  </div>
    +</div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    Migration Guide


    T-shirt sizing

    +

    Menu now supports t-shirt sizing and requires that you specify the size by adding a .spectrum-Menu--size* class.

    +

    Use small divider classes

    +

    When using a section divider, add .spectrum-Divider and spectrum-Divider--sizeS classes to spectrum-Menu-divider. The divider has also changed from medium to small.

    +

    Change workflow icon size to medium

    +

    Please replace .spectrum-Icon--sizeS with .spectrum-Icon--sizeM.

    +

    Menu item with switch mark up

    +

    In the case of a menu item that includes an icon and a switch, the label and icon should be seperate elements. As opposed to the icon SVG being with in the label. This matches the pattern of other variants with icons within the menu item.

    +

    \ No newline at end of file diff --git a/meter.html b/meter.html new file mode 100644 index 0000000000..fada49ed24 --- /dev/null +++ b/meter.html @@ -0,0 +1,185 @@ +Meter - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Meter

    Component status
    Contribution
    Current version@spectrum-css/progressbar@4.1.3
    ReleasedJune 13, 2024
    S2-foundations@spectrum-css/progressbar@5.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Usage notes


    Meter is implemented using the Progress bar component. Refer to the Progress bar API docs for API details.
    +Meter should be only used with S or L t-shirt sizes. The Meter table of options provides further details on which variants are available.

    + + + + + + + + + + + + + + + + + +
    Previous size classnameNew size classname
    .spectrum-ProgressBar--sizeS.spectrum-Meter--sizeS
    .spectrum-ProgressBar--sizeL.spectrum-Meter--sizeL
    +

    Variants


    Sizing
    Contribution

    +
    +
    +
    Storage Space
    +
    50%
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Storage Space
    +
    80%
    +
    +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="flex-direction: column;">
    +  <div class="spectrum-Examples-item">
    +    <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeS is-positive" value="50" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
    +      <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeS spectrum-ProgressBar-label">Storage Space</div>
    +      <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeS spectrum-ProgressBar-percentage">50%</div>
    +      <div class="spectrum-ProgressBar-track">
    +        <div class="spectrum-ProgressBar-fill" style="width: 50%;"></div>
    +      </div>
    +  </div>
    +</div>
    +</br>
    +<div class="spectrum-Examples-item"  style="margin-bottom: 20px;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL is-notice" value="80" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">80%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 80%;"></div>
    +  </div>
    +</div>
    +

    Colors
    Contribution

    +
    +
    Storage Space
    +
    50%
    +
    +
    +
    +
    +
    +
    +
    +
    Storage Space
    +
    80%
    +
    +
    +
    +
    +
    +
    +
    +
    Storage Space
    +
    90%
    +
    +
    +
    +
    +
    +
    +
    Storage Space
    +
    40%
    +
    +
    +
    +
    +
    +
    Show markup
    <div style="margin: 20px 0;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL is-positive" value="50" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">50%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 50%;"></div>
    +    </div>
    +  </div>
    +</div>
    +<div style="margin: 20px 0;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL is-notice" value="80" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">80%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 80%;"></div>
    +    </div>
    +  </div>
    +</div>
    +<div style="margin: 20px 0;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL is-negative" value="90" role="progressbar" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">90%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 90%;"></div>
    +    </div>
    +  </div>
    +<div style="margin: 20px 0;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL" value="40" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">40%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 40%;"></div>
    +    </div>
    +  </div>
    +</div>
    +

    Neutral
    Contribution

    +
    +
    Storage Space
    +
    50%
    +
    +
    +
    +
    +
    +
    Show markup
    <div style="margin: 20px 0;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL is-positive" value="50" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">50%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 50%;"></div>
    +    </div>
    +  </div>
    +</div>
    +

    Notice
    Contribution

    +
    +
    Storage Space
    +
    80%
    +
    +
    +
    +
    +
    +
    Show markup
    <div style="margin: 20px 0;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL is-notice" value="80" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">80%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 80%;"></div>
    +    </div>
    +  </div>
    +</div>
    +

    Negative
    Contribution

    +
    +
    Storage Space
    +
    90%
    +
    +
    +
    +
    +
    Show markup
    <div style="margin: 20px 0;">
    +  <div class="spectrum-ProgressBar spectrum-Meter spectrum-Meter--sizeL is-negative" value="90" role="progressbar" aria-valuenow="90" aria-valuemin="0" aria-valuemax="100">
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-label">Storage Space</div>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeL spectrum-ProgressBar-percentage">90%</div>
    +    <div class="spectrum-ProgressBar-track">
    +      <div class="spectrum-ProgressBar-fill" style="width: 90%;"></div>
    +    </div>
    +  </div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    Migration Guide


    spectrum-Meter class

    +

    Meter now uses the class spectrum-Meter on the parent div

    +

    \ No newline at end of file diff --git a/miller.html b/miller.html new file mode 100644 index 0000000000..b02bd32874 --- /dev/null +++ b/miller.html @@ -0,0 +1,344 @@ +Miller columns - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Miller columns

    Component status
    Contribution
    Current version@spectrum-css/miller@6.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/miller@7.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Miller Columns (Branches Selectable)
    Contribution

    Miller columns that allow both files and folders to be selected.

    +
    +
    +
      +
    • + + File 1 + +
    • +
    • + + File 2 + +
    • +
    • + + asset item thumbnail + File 3 + +
    • +
    +
    +
    +
      +
    • + + File 1 + +
    • +
    • + + File 2 + +
    • +
    • + + asset item thumbnail + File 3 + +
    • +
    +
    +
    +
    Show markup
    <div class="spectrum-MillerColumns">
    +  <div class="spectrum-MillerColumns-item">
    +    <ul class="spectrum-AssetList">
    +      <li class="spectrum-AssetList-item is-branch is-selectable" tabindex="0">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" aria-labelledby="assetitemlabel-1">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-1">File 1</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item is-branch is-selectable is-selected" tabindex="0">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" aria-labelledby="assetitemlabel-2" checked>
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-2">File 2</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item is-branch is-selectable" tabindex="0">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2" aria-labelledby="assetitemlabel-3">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <img src="img/example-ava.jpg" alt="asset item thumbnail" class="spectrum-AssetList-itemThumbnail">
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-3">File 3</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +    </ul>
    +  </div>
    +  <div class="spectrum-MillerColumns-item">
    +    <ul class="spectrum-AssetList">
    +      <li class="spectrum-AssetList-item is-branch is-selectable" tabindex="0">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-0" aria-labelledby="assetitemlabel-4">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-4">File 1</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item is-selectable is-selected" tabindex="0">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" aria-labelledby="assetitemlabel-5" checked>
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-5">File 2</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item is-selectable is-selected" tabindex="0">
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2" aria-labelledby="assetitemlabel-6" checked>
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <img src="img/example-ava.jpg" alt="asset item thumbnail" class="spectrum-AssetList-itemThumbnail">
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-6">File 3</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +    </ul>
    +  </div>
    +</div>
    +

    Miller Columns (Files Selectable)
    Contribution

    Miller columns that only allow files to be selected.

    +
    +
    +
      +
    • + File 1 + +
    • +
    • + File 2 + + +
    • +
    • + asset item thumbnail + File 3 + + +
    • +
    +
    + +
    +
      +
    • + File 1 + +
    • +
    • + File 2 + + +
    • +
    • + asset item thumbnail + File 3 + + +
    • +
    +
    +
    +
    Show markup
    <div class="spectrum-MillerColumns">
    +  <div class="spectrum-MillerColumns-item">
    +    <ul class="spectrum-AssetList">
    +      <li class="spectrum-AssetList-item is-branch" tabindex="0">
    +        <span class="spectrum-AssetList-itemLabel">File 1</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item" tabindex="0">
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-7">File 2</span>
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" aria-labelledby="assetitemlabel-7">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item is-navigated is-branch" tabindex="0">
    +        <img src="img/example-ava.jpg" alt="asset item thumbnail" class="spectrum-AssetList-itemThumbnail">
    +        <span class="spectrum-AssetList-itemLabel">File 3</span></span>
    +
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +    </ul>
    +  </div>
    +
    +  <div class="spectrum-MillerColumns-item">
    +    <ul class="spectrum-AssetList">
    +      <li class="spectrum-AssetList-item is-branch" tabindex="0">
    +        <span class="spectrum-AssetList-itemLabel">File 1</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item" tabindex="0">
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-8">File 2</span>
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-1" aria-labelledby="assetitemlabel-8">
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +      <li class="spectrum-AssetList-item is-selected" tabindex="0">
    +        <img src="img/example-ava.jpg" alt="asset item thumbnail" class="spectrum-AssetList-itemThumbnail">
    +        <span class="spectrum-AssetList-itemLabel" id="assetitemlabel-9">File 3</span>
    +        <label class="spectrum-Checkbox spectrum-Checkbox--sizeM spectrum-AssetList-itemSelector">
    +          <input type="checkbox" class="spectrum-Checkbox-input" id="checkbox-2" aria-labelledby="assetitemlabel-9" checked>
    +          <span class="spectrum-Checkbox-box">
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Checkbox-checkmark" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100"/>
    +            </svg>
    +          </span>
    +        </label>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100 spectrum-AssetList-itemChildIndicator" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100"/>
    +        </svg>
    +      </li>
    +    </ul>
    +  </div>
    +</div>
    +

    \ No newline at end of file diff --git a/modal.html b/modal.html new file mode 100644 index 0000000000..eee1fa3ec1 --- /dev/null +++ b/modal.html @@ -0,0 +1,11 @@ +Modal - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express
    Component status
    Contribution
    Current version@spectrum-css/modal@5.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/modal@6.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Usage notes


    A modal component that is used primarily by Dialog.

    +

    Variants


    Modal
    Contribution

    This is a base component used by other components, and should not be used on its own like the following example. If you need a full-featured modal for displaying content, take a look at the Dialog component instead.

    +
    +
    A basic example of the Modal markup.
    +
    +
    Show markup
    <div class="spectrum-Modal-wrapper spectrum-CSSExample-dialog">
    +  <div class="spectrum-Modal is-open">A basic example of the Modal markup.</div>
    +</div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    \ No newline at end of file diff --git a/opacitycheckerboard.html b/opacitycheckerboard.html new file mode 100644 index 0000000000..4a49ab2796 --- /dev/null +++ b/opacitycheckerboard.html @@ -0,0 +1,19 @@ +Opacity checkerboard - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Opacity checkerboard

    Component status
    Contribution
    Current version@spectrum-css/opacitycheckerboard@2.1.1
    ReleasedMay 22, 2024
    Alpha@spectrum-css/opacitycheckerboard@1.0.0-alpha.0
    ReleasedJune 23, 2023
    S2-foundations@spectrum-css/opacitycheckerboard@3.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Usage notes


    Opacity checkerboard is a class used to highlight background color opacity.

    +

    Variants


    Opacity checkerboard
    Contribution

    +
    +
    +
    +
    Show markup
    <div style="inline-size: 100px; block-size: 100px;">
    +  <div class="spectrum-OpacityCheckerboard" style="inline-size: 100%; block-size: 100%;">
    +  </div>
    +</div>
    +

    Opacity checkerboard with color overlay
    Contribution

    +
    +
    +
    +
    Show markup
    <div style="inline-size: 100px; block-size: 100px;">
    +  <div class="spectrum-OpacityCheckerboard" style="inline-size: 100%; block-size: 100%;"></div>
    +  <div style="background-color: rgba(255, 0, 0, 0.5); inline-size: 100%; block-size: 100%; position: relative; inset-block: -100%"></div>
    +</div>
    +

    \ No newline at end of file diff --git a/page.html b/page.html new file mode 100644 index 0000000000..c90202254e --- /dev/null +++ b/page.html @@ -0,0 +1,31 @@ +Page - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Page

    Component status
    Contribution
    Current version@spectrum-css/page@8.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/page@9.0.0-s2-foundations.1
    ReleasedJune 18, 2024

    Usage notes


    The outer page container. A parent tag should only have the .spectrum class if using a standalone CSS file.
    +If using multistops, a parent tag should have both the .spectrum class and the corresponding colorstop variant class, i.e. .spectrum--light.
    +Finally, if scaling to large with the diff strategy, a parent tag should have the .spectrum--large class.

    +

    Variants


    Standard
    Contribution

    Text here!
    +

    +
    + Text here!
    +
    +

    + + +

    +
    + +
    +

    +
    Show markup
    Text here!<br>
    +<br><br>
    +<div class="spectrum--large spectrum">
    +  Text here!<br>
    +</div>
    +<br><br>
    +
    +<button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent"><span class="spectrum-Button-label">Button</span></button>
    +<br><br>
    +<div class="spectrum--large">
    +  <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent"><span class="spectrum-Button-label">Button</span></button>
    +</div>
    +<br><br>
    +

    \ No newline at end of file diff --git a/pagination-button-style.html b/pagination-button-style.html new file mode 100644 index 0000000000..95d08e661a --- /dev/null +++ b/pagination-button-style.html @@ -0,0 +1,80 @@ +Pagination - button style - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Pagination - button style

    Component status
    Contribution
    Current version@spectrum-css/pagination@8.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/pagination@9.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    CTA
    Contribution

    Show markup
    <nav class="spectrum-SplitButton spectrum-SplitButton--left">
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent spectrum-SplitButton-trigger spectrum-Pagination-prevButton">
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--fill spectrum-Button--accent spectrum-SplitButton-action spectrum-Pagination-nextButton">
    +    <span class="spectrum-Button-label">Next</span>
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +</nav>
    +

    Primary
    Contribution

    Show markup
    <nav class="spectrum-SplitButton spectrum-SplitButton--left">
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-SplitButton-trigger spectrum-Pagination-prevButton">
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-SplitButton-action spectrum-Pagination-nextButton">
    +    <span class="spectrum-Button-label">Next</span>
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +</nav>
    +

    Secondary
    Contribution

    Show markup
    <nav class="spectrum-SplitButton spectrum-SplitButton--left">
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-SplitButton-trigger spectrum-Pagination-prevButton">
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-SplitButton-action spectrum-Pagination-nextButton">
    +    <span class="spectrum-Button-label">Next</span>
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +</nav>
    +

    \ No newline at end of file diff --git a/pagination-explicit.html b/pagination-explicit.html new file mode 100644 index 0000000000..4026aaa9ee --- /dev/null +++ b/pagination-explicit.html @@ -0,0 +1,36 @@ +Pagination - explicit - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Pagination - explicit

    Component status
    Contribution
    Current version@spectrum-css/pagination@8.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/pagination@9.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Standard
    Contribution

    +
    Show markup
    <nav class="spectrum-Pagination spectrum-Pagination--explicit">
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-Pagination-prevButton">
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronLeft100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +  <div class="spectrum-Textfield spectrum-Pagination-textfield">
    +    <input type="text" name="field" value="2" class="spectrum-Textfield-input">
    +  </div>
    +  <span class="spectrum-Pagination-counter">of 89 pages</span>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet spectrum-Pagination-nextButton">
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronRight100" focusable="false" aria-hidden="true" aria-label="ChevronLeft">
    +      <use xlink:href="#spectrum-css-icon-Chevron100"></use>
    +    </svg>
    +  </a>
    +</nav>
    +

    Migration Guide


    New Textfield markup

    +

    Pagination(Explicit) now uses the new Textfield markup. See the Textfield migration guide for more information. You must add .spectrum-Pagination-textfield modifier to the outer element div.spectrum-Textfield.

    +

    \ No newline at end of file diff --git a/pagination-listing.html b/pagination-listing.html new file mode 100644 index 0000000000..ad586833e7 --- /dev/null +++ b/pagination-listing.html @@ -0,0 +1,26 @@ +Pagination - page - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Pagination - page

    Component status
    Contribution
    Current version@spectrum-css/pagination@8.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/pagination@9.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Standard
    Contribution

    +
    Show markup
    <nav class="spectrum-Pagination spectrum-Pagination--listing">
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-Pagination-prevButton"><span class="spectrum-Button-label">Prev</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet"><span class="spectrum-ActionButton-label">1</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet is-selected"><span class="spectrum-ActionButton-label">2</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet"><span class="spectrum-ActionButton-label">3</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet"><span class="spectrum-ActionButton-label">4</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet"><span class="spectrum-ActionButton-label">5</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet"><span class="spectrum-ActionButton-label">6</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet"><span class="spectrum-ActionButton-label">...</span></a>
    +  <a href="#" class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-ActionButton--quiet"><span class="spectrum-ActionButton-label">24</span></a>
    +  <a href="#" class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-Pagination-nextButton"><span class="spectrum-Button-label">Next</span></a>
    +</nav>
    +

    \ No newline at end of file diff --git a/picker.html b/picker.html new file mode 100644 index 0000000000..121791a3dd --- /dev/null +++ b/picker.html @@ -0,0 +1,1023 @@ +Picker - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Picker

    Component status
    Contribution
    Current version@spectrum-css/picker@8.1.4
    ReleasedJuly 19, 2024
    S2-foundations@spectrum-css/picker@9.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Standard
    Contribution

    + + +
    +

    Closed

    +
    Country
    + +
    + + +
    +

    Open

    + +
    +
      +
    • + Donaudampfschifffahrtsgesellschaftskapitän + +
    • +
    • + Some long value that should be cut off + +
    • +
    • + Very long text with hyphens-between-words + +
    • + +
    • + United States of America + +
    • +
    +
    +
    + +
    + + +
    +

    Side Label

    +
    Country
    + +
    + + +
    + +

    Open with Thumbnails

    +
    Country
    + +
    +
      +
    • + + Donaudampfschifffahrtsgesellschaftskapitän + +
    • +
    • + + Some long value that should be cut off + +
    • +
    • + + Very long text with hyphens-between-words + +
    • + +
    • + + United States of America + +
    • +
    +
    +
    + +
    + + +
    +

    Disabled

    + +
    + + +
    +

    Closed and Loading

    + + +
    + + +
    +

    Closed and Invalid

    + +
    + + +
    +

    Closed and Invalid with Help Text

    +
    + Preferred contact method + +
    + +
    +
    Select a contact method.
    +
    +
    + + + +
    +

    Open and Invalid

    + +
    +
      +
    • + Ballard + +
    • +
    • + Fremont + +
    • +
    • + Greenwood + +
    • + +
    • + United States of America + +
    • +
    +
    +
    + +
    + +
    +

    Closed and Disabled with Thumbnails

    +
    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples" style="flex-direction: column;">
    +
    +  <!-- Closed -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Closed</h4>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">Country</div>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM" aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label is-placeholder">Select a Country with a very long label, too long in fact</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +  </div>
    +
    +  <!-- Open -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Open</h4>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM is-open" aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label">Donaudampfschifffahrtsgesellschaftskapitän</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +    <div class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open" style="width: 240px;">
    +      <ul class="spectrum-Menu is-selectable" role="listbox">
    +        <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Donaudampfschifffahrtsgesellschaftskapitän</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Some long value that should be cut off</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Very long text with hyphens-between-words</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +        <li class="spectrum-Menu-divider" role="separator"></li>
    +        <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +          <span class="spectrum-Menu-itemLabel">United States of America</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +
    +  <div class="dummy-spacing" style="block-size: 15rem;"></div>
    +
    +  <!-- Side Label -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Side Label</h4>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-FieldLabel--left">Country</div>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--sideLabel" aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label is-placeholder">Select a Country with a very long label, too long in fact</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +  </div>
    +
    +  <!-- Open with Thumbnails -->
    +  <div class="spectrum-Examples-item">
    +
    +    <h4>Open with Thumbnails</h4>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">Country</div>
    +      <button type="button" class="spectrum-Picker spectrum-Picker--sizeM is-open" aria-haspopup="listbox" style="width: 240px">
    +        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-icon" focusable="false" aria-hidden="true" aria-label="Image">
    +          <use xlink:href="#spectrum-icon-18-Image" />
    +        </svg>
    +        <span class="spectrum-Picker-label">Donaudampfschifffahrtsgesellschaftskapitän</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </button>
    +      <div class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open" style="width: 240px">
    +        <ul class="spectrum-Menu is-selectable" role="listbox">
    +          <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Image">
    +              <use xlink:href="#spectrum-icon-18-Image" />
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Donaudampfschifffahrtsgesellschaftskapitän</span>
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </li>
    +          <li class="spectrum-Menu-item" role="option" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Image">
    +              <use xlink:href="#spectrum-icon-18-Image" />
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Some long value that should be cut off</span>
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </li>
    +          <li class="spectrum-Menu-item" role="option" tabindex="0">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Image">
    +              <use xlink:href="#spectrum-icon-18-Image" />
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">Very long text with hyphens-between-words</span>
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </li>
    +          <li class="spectrum-Menu-divider" role="separator"></li>
    +          <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +            <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Image">
    +              <use xlink:href="#spectrum-icon-18-Image" />
    +            </svg>
    +            <span class="spectrum-Menu-itemLabel">United States of America</span>
    +            <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +              <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +            </svg>
    +          </li>
    +        </ul>
    +      </div>
    +  </div>
    +
    +  <div class="dummy-spacing" style="block-size: 15rem;"></div>
    +
    +  <!-- Disabled -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Disabled</h4>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM" disabled aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +  </div>
    +
    +  <!-- Closed and Loading -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Closed and Loading</h4>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM is-loading" aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label is-placeholder">Loading...</span>
    +      <div class="spectrum-ProgressCircle spectrum-ProgressCircle--indeterminate spectrum-ProgressCircle--small">
    +          <div class="spectrum-ProgressCircle-track"></div>
    +          <div class="spectrum-ProgressCircle-fills">
    +            <div class="spectrum-ProgressCircle-fillMask1">
    +              <div class="spectrum-ProgressCircle-fillSubMask1">
    +              <div class="spectrum-ProgressCircle-fill"></div>
    +            </div>
    +          </div>
    +          <div class="spectrum-ProgressCircle-fillMask2">
    +            <div class="spectrum-ProgressCircle-fillSubMask2">
    +              <div class="spectrum-ProgressCircle-fill"></div>
    +            </div>
    +          </div>
    +        </div>
    +      </div>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +
    +  </div>
    +
    +  <!-- Close and Invalid -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Closed and Invalid</h4>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM is-invalid" aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-validationIcon" focusable="false" aria-hidden="true" aria-label="Folder">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +  </div>
    +
    +    <!-- Close and Invalid with Help Text -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Closed and Invalid with Help Text</h4>
    +    <div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">
    +      Preferred contact method
    +      <svg class="spectrum-Icon spectrum-UIIcon-Asterisk100 spectrum-FieldLabel-requiredIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Asterisk100" />
    +      </svg>
    +    </div>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM is-invalid" aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label is-placeholder">Select a contact method</span>
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-validationIcon" focusable="false" aria-hidden="true" aria-label="Folder">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +    <div class="spectrum-HelpText spectrum-HelpText--sizeM spectrum-HelpText--negative">
    +      <div class="spectrum-HelpText-text">Select a contact method.</div>
    +    </div>
    +  </div>
    +
    +
    +  <!-- Open and Invalid -->
    +  <div class="spectrum-Examples-item">
    +    <h4>Open and Invalid </h4>
    +    <button type="button" class="spectrum-Picker spectrum-Picker--sizeM is-invalid is-open" aria-haspopup="listbox" style="width: 240px">
    +      <span class="spectrum-Picker-label">Ballard</span>
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-validationIcon" focusable="false" aria-hidden="true" aria-label="Alert">
    +        <use xlink:href="#spectrum-icon-18-Alert" />
    +      </svg>
    +      <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Chevron100" />
    +      </svg>
    +    </button>
    +    <div class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open" style="width: 240px">
    +      <ul class="spectrum-Menu is-selectable" role="listbox">
    +        <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Ballard</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Fremont</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Greenwood</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +        <li class="spectrum-Menu-divider" role="separator"></li>
    +        <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +          <span class="spectrum-Menu-itemLabel">United States of America</span>
    +          <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +            <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +          </svg>
    +        </li>
    +      </ul>
    +    </div>
    +  </div>
    +
    +  <div class="dummy-spacing" style="block-size: 10rem;"></div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4>Closed and Disabled with Thumbnails</h4>
    +    <div style="position: relative; width: 240px;">
    +      <button type="button" class="spectrum-Picker spectrum-Picker--sizeM is-invalid" disabled aria-haspopup="listbox" style="width: 240px">
    +        <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +        <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-validationIcon" focusable="false" aria-hidden="true" aria-label="Alert">
    +          <use xlink:href="#spectrum-icon-18-Alert" />
    +        </svg>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </button>
    +    </div>
    +  </div>
    +</div>
    +

    Sizing
    Contribution

    S

    + + +

    M

    + + +

    L

    + + +

    XL

    + +
    Show markup
    <h4>S</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeS" aria-haspopup="listbox" style="width: 240px">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown75 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron75" />
    +  </svg>
    +</button>
    +
    +<h4>M</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM" aria-haspopup="listbox" style="width: 240px">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +
    +<h4>L</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeL" aria-haspopup="listbox" style="width: 240px">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown200 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron200" />
    +  </svg>
    +</button>
    +
    +<h4>XL</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeXL" aria-haspopup="listbox" style="width: 240px">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown300 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron300" />
    +  </svg>
    +</button>
    +

    Quiet
    Contribution

    Closed

    +
    Country
    + + +

    Open

    + +
    +
      +
    • + Ballard + +
    • +
    • + Fremont + +
    • +
    • + Greenwood + +
    • + +
    • + United States of America + +
    • +
    +
    + +
    + +

    Open - With Thumbnails

    + +
    +
      +
    • + + Ballard + +
    • +
    • + + Fremont + +
    • +
    • + + Greenwood + +
    • + +
    • + + United States of America + +
    • +
    +
    + +
    + +

    Side Label

    +
    Country
    + + +

    Disabled

    + + +

    Closed and Invalid

    + + +

    Open and Invalid

    + +
    +
      +
    • + Ballard + +
    • +
    • + Fremont + +
    • +
    • + Greenwood + +
    • + +
    • + United States of America + +
    • +
    +
    + +
    + +

    Disabled and Invalid

    + +
    Show markup
    <h4>Closed</h4>
    +<div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM">Country</div>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--quiet" aria-haspopup="listbox">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +
    +<h4>Open</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--quiet is-open" aria-haspopup="listbox">
    +  <span class="spectrum-Picker-label">Ballard</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +<div class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open">
    +  <ul class="spectrum-Menu is-selectable" role="listbox">
    +    <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +      <span class="spectrum-Menu-itemLabel">Ballard</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-item" role="option" tabindex="0">
    +      <span class="spectrum-Menu-itemLabel">Fremont</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-item" role="option" tabindex="0">
    +      <span class="spectrum-Menu-itemLabel">Greenwood</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-divider" role="separator"></li>
    +    <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +      <span class="spectrum-Menu-itemLabel">United States of America</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +  </ul>
    +</div>
    +
    +<div class="dummy-spacing"></div>
    +
    +<h4>Open - With Thumbnails</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--quiet is-open" aria-haspopup="listbox">
    +  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-icon" focusable="false" aria-hidden="true" aria-label="Image">
    +    <use xlink:href="#spectrum-icon-18-Image" />
    +  </svg>
    +  <span class="spectrum-Picker-label">Ballard</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +<div class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open">
    +  <ul class="spectrum-Menu is-selectable" role="listbox">
    +    <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon" focusable="false" aria-hidden="true" aria-label="Image">
    +        <use xlink:href="#spectrum-icon-18-Image" />
    +      </svg>
    +      <span class="spectrum-Menu-itemLabel">Ballard</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-item" role="option" tabindex="0">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon"" focusable="false" aria-hidden="true" aria-label="Image">
    +        <use xlink:href="#spectrum-icon-18-Image" />
    +      </svg>
    +      <span class="spectrum-Menu-itemLabel">Fremont</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-item" role="option" tabindex="0">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon"" focusable="false" aria-hidden="true" aria-label="Image">
    +        <use xlink:href="#spectrum-icon-18-Image" />
    +      </svg>
    +      <span class="spectrum-Menu-itemLabel">Greenwood</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-divider" role="separator"></li>
    +    <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +      <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Menu-itemIcon spectrum-Menu-itemIcon--workflowIcon"" focusable="false" aria-hidden="true" aria-label="Image">
    +        <use xlink:href="#spectrum-icon-18-Image" />
    +      </svg>
    +      <span class="spectrum-Menu-itemLabel">United States of America</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +  </ul>
    +</div>
    +
    +<div class="dummy-spacing"></div>
    +
    +<h4>Side Label</h4>
    +<div class="spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-FieldLabel--left">Country</div>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--quiet spectrum-Picker--sideLabel is-open" aria-haspopup="listbox">
    +  <span class="spectrum-Picker-label">Ballard</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +
    +<h4>Disabled</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--quiet" disabled aria-haspopup="listbox">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +
    +<h4>Closed and Invalid</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--quiet is-invalid" aria-haspopup="listbox">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-validationIcon" focusable="false" aria-hidden="true" aria-label="Folder">
    +    <use xlink:href="#spectrum-icon-18-Alert" />
    +  </svg>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +
    +<h4>Open and Invalid</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM
    +spectrum-Picker--quiet is-invalid is-open" aria-haspopup="listbox">
    +  <span class="spectrum-Picker-label">Ballard</span>
    +  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-validationIcon" focusable="false" aria-hidden="true" aria-label="Alert">
    +    <use xlink:href="#spectrum-icon-18-Alert" />
    +  </svg>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +<div class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open">
    +  <ul class="spectrum-Menu is-selectable" role="listbox">
    +    <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +      <span class="spectrum-Menu-itemLabel">Ballard</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-item" role="option" tabindex="0">
    +      <span class="spectrum-Menu-itemLabel">Fremont</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-item" role="option" tabindex="0">
    +      <span class="spectrum-Menu-itemLabel">Greenwood</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +    <li class="spectrum-Menu-divider" role="separator"></li>
    +    <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +      <span class="spectrum-Menu-itemLabel">United States of America</span>
    +      <svg class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" focusable="false" aria-hidden="true">
    +        <use xlink:href="#spectrum-css-icon-Checkmark100" />
    +      </svg>
    +    </li>
    +  </ul>
    +</div>
    +
    +<div class="dummy-spacing"></div>
    +
    +<h4>Disabled and Invalid</h4>
    +<button type="button" class="spectrum-Picker spectrum-Picker--sizeM spectrum-Picker--quiet is-invalid" disabled aria-haspopup="listbox">
    +  <span class="spectrum-Picker-label is-placeholder">Select a Country</span>
    +  <svg class="spectrum-Icon spectrum-Icon--sizeM spectrum-Picker-validationIcon" focusable="false" aria-hidden="true" aria-label="Alert">
    +    <use xlink:href="#spectrum-icon-18-Alert" />
    +  </svg>
    +  <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-Picker-menuIcon" focusable="false" aria-hidden="true">
    +    <use xlink:href="#spectrum-css-icon-Chevron100" />
    +  </svg>
    +</button>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    Migration Guide


    Component renamed

    +

    Dropdown is now known as Picker. Replace all .spectrum-Dropdown* classnames with .spectrum-Picker*.

    +

    Markup change

    +

    The outer <div> is now gone and .spectrum-FieldButton is no longer used. Instead, the outer tag is now <button> with the .spectrum-Picker classname.

    +

    Additionally, .spectrum-Picker should not contain the .spectrum-Popover that it opens.

    +

    In order to use a side label with a Picker, add the spectrum-Picker--sideLabel class to the Picker.

    +

    Icon classname changes

    +

    Each of the 3 possible icons now has its own specific classname:

    + + + + + + + + + + + + + + + + + + + + + +
    Previous icon classnameWorkflow icon classname
    .spectrum-Picker-icon.spectrum-Picker-menuIcon
    .spectrum-Icon (workflow).spectrum-Picker-icon
    .spectrum-Icon (validation).spectrum-Picker-validationIcon
    +

    .is-selected is now .is-open

    +

    In order to more accurately reflect what’s going on, you should add .is-open to .spectrum-Picker when the menu is shown.

    +

    Change workflow icon size to medium

    +

    If you use a .spectrum-Picker-icon in your markup, please replace .spectrum-Icon--sizeS with .spectrum-Icon--sizeM.

    +

    T-shirt sizing

    +

    Picker now supports t-shirt sizing and requires that you specify the size by adding a .spectrum-Picker--size* class.
    +Using the classes .spectrum-Picker .spectrum-Picker--sizeM will get result in the previous default picker size.

    +

    Also, use the correct icon size for chevron icons:

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    T-shirt SizeIcon Size
    spectrum-Picker--sizeSspectrum-css-icon-Chevron75
    spectrum-Picker--sizeMspectrum-css-icon-Chevron100
    spectrum-Picker--sizeLspectrum-css-icon-Chevron200
    spectrum-Picker--sizeXLspectrum-css-icon-Chevron300
    +

    Remove focus-ring class

    +

    We’ve migrated away from the focus-ring class in favor of the native :focus-visible pseudo-class due to changes in browser support.

    +

    \ No newline at end of file diff --git a/pickerbutton.html b/pickerbutton.html new file mode 100644 index 0000000000..89c9e1c76d --- /dev/null +++ b/pickerbutton.html @@ -0,0 +1,217 @@ +Picker button - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Picker button

    Component status
    Contribution
    Current version@spectrum-css/pickerbutton@5.1.1
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/pickerbutton@6.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Sizing
    Contribution

    +
    +

    S

    + +
    + +
    +

    M

    + +
    + +
    +

    L

    + +
    + +
    +

    XL

    + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">S</h4>
    +    <button class="spectrum-PickerButton spectrum-PickerButton--sizeS spectrum-PickerButton--textuiicon spectrum-PickerButton--right" aria-haspopup="listbox">
    +      <div class="spectrum-PickerButton-fill">
    +        <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown75 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron75" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">M</h4>
    +    <button class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--textuiicon spectrum-PickerButton--right" aria-haspopup="listbox">
    +      <div class="spectrum-PickerButton-fill">
    +        <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron100" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">L</h4>
    +    <button class="spectrum-PickerButton spectrum-PickerButton--sizeL spectrum-PickerButton--textuiicon spectrum-PickerButton--right" aria-haspopup="listbox">
    +      <div class="spectrum-PickerButton-fill">
    +        <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown200 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron200" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">XL</h4>
    +    <button class="spectrum-PickerButton spectrum-PickerButton--sizeXL spectrum-PickerButton--textuiicon spectrum-PickerButton--right" aria-haspopup="listbox">
    +      <div class="spectrum-PickerButton-fill">
    +        <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +        <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown300 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +          <use xlink:href="#spectrum-css-icon-Chevron300" />
    +        </svg>
    +      </div>
    +    </button>
    +  </div>
    +</div>
    +

    Quiet
    Contribution

    +
    Show markup
    <button class="spectrum-PickerButton spectrum-PickerButton--quiet spectrum-PickerButton--sizeM spectrum-PickerButton--textuiicon spectrum-PickerButton--right" aria-haspopup="listbox">
    +   <div class="spectrum-PickerButton-fill">
    +     <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +     <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +       <use xlink:href="#spectrum-css-icon-Chevron100" />
    +     </svg>
    +   </div>
    + </button>
    +

    Text icon
    Contribution

    +
    Show markup
    <button class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--textuiicon spectrum-PickerButton--right" aria-haspopup="listbox">
    +  <div class="spectrum-PickerButton-fill">
    +    <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-css-icon-Chevron100" />
    +    </svg>
    +  </div>
    +</button>
    +

    UI icon only
    Contribution

    +
    Show markup
    <button class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right" aria-haspopup="listbox" aria-label="Open">
    +  <div class="spectrum-PickerButton-fill">
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-css-icon-Chevron100" />
    +    </svg>
    +  </div>
    +</button>
    +

    Custom icon only
    Contribution

    +
    Show markup
    <button class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--uiicononly spectrum-PickerButton--right" aria-haspopup="listbox" aria-label="Add">
    +  <div class="spectrum-PickerButton-fill">
    +    <svg xmlns="http://www.w3.org/2000/svg" class="spectrum-Icon spectrum-Icon--sizeM spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +      <use href="#spectrum-icon-18-Add"></use>
    +    </svg>
    +  </div>
    +</button>
    +

    Rounded
    Contribution

    +
    Show markup
    <button class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--textuiicon spectrum-PickerButton--right spectrum-PickerButton--rounded" aria-haspopup="listbox">
    +  <div class="spectrum-PickerButton-fill">
    +    <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-css-icon-Chevron100" />
    +    </svg>
    +  </div>
    +</button>
    +

    Open
    Contribution

    +
    Show markup
    <button class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--textuiicon spectrum-PickerButton--right is-open" aria-haspopup="listbox">
    +  <div class="spectrum-PickerButton-fill">
    +    <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-css-icon-Chevron100" />
    +    </svg>
    +  </div>
    +</button>
    +

    Disabled
    Contribution

    +
    Show markup
    <button class="spectrum-PickerButton spectrum-PickerButton--sizeM spectrum-PickerButton--textuiicon spectrum-PickerButton--right" disabled aria-haspopup="listbox">
    +  <div class="spectrum-PickerButton-fill">
    +    <span class="spectrum-PickerButton-label is-placeholder">All</span>
    +    <svg class="spectrum-Icon spectrum-UIIcon-ChevronDown100 spectrum-PickerButton-icon" focusable="false" aria-hidden="true">
    +      <use xlink:href="#spectrum-css-icon-Chevron100" />
    +    </svg>
    +  </div>
    +</button>
    +

    Migration Guide


    Picker button uses the Quiet variant instead of loudness levels.

    +

    The Loudness level classes, .spectrum-PickerButton--low, .spectrum-PickerButton--medium, and .spectrum-PickerButton--high, have been removed.

    +
      +
    • Use the base class, .spectrum-PickerButton, to apply the default button styles. The default styles correspond to what was previously the Loudness - High variant, which used the class .spectrum-InfieldButton--high.
    • +
    • Use the modifier class, spectrum-PickerButton--quiet, to apply the quiet variant styles. Quiet corresponds to what was previously the Loudness - Low variant, which used the class .spectrum-InfieldButton--low class.
    • +
    +

    The Loudness - Medium variant has been removed, so there is no equivalent.

    +

    .spectrum-PickerButton-UIIcon class removed

    +

    The .spectrum-PickerButton-UIIcon class no longer matches our naming convention. Both types of icons now use the spectrum-PickerButton-icon class

    +

    \ No newline at end of file diff --git a/popover.html b/popover.html new file mode 100644 index 0000000000..d0104b5f03 --- /dev/null +++ b/popover.html @@ -0,0 +1,1227 @@ +Popover - Spectrum CSS
    • Light
    • Dark
    • Darkest
    • Medium
    • Large
    • LTR
    • RTL
    • Default
    • Express

    Popover

    Component status
    Contribution
    Current version@spectrum-css/popover@7.1.3
    ReleasedMay 22, 2024
    S2-foundations@spectrum-css/popover@8.0.0-s2-foundations.9
    ReleasedJuly 16, 2024

    Variants


    Standard
    Contribution

    +
    +

    Default

    +
    +
    +
      +
    • + Ballard +
    • +
    • + Fremont +
    • +
    • + Greenwood +
    • + +
    • + United States of America +
    • +
    +
    +
    + +
    + +
    +

    With Tip

    +
    +
    +
      +
    • + Ballard +
    • +
    • + Fremont +
    • +
    • + Greenwood +
    • + +
    • + United States of America +
    • +
    + + + +
    +
    + +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Default</h4>
    +    <br>
    +    <div class="spectrum-Popover spectrum-Popover--top is-open" id="popover-default">
    +      <ul class="spectrum-Menu" role="listbox">
    +        <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Ballard</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Fremont</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Greenwood</span>
    +        </li>
    +        <li class="spectrum-Menu-divider" role="separator"></li>
    +        <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +          <span class="spectrum-Menu-itemLabel">United States of America</span>
    +        </li>
    +      </ul>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 146px; min-width: 166px; max-width: 50%;"></div>
    +    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="toggleSpectrumPopover(document.getElementById('popover-default'))" style="position: relative; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">
    +      <span>Source 50x100</span>
    +    </button>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">With Tip</h4>
    +    <br>
    +    <div class="spectrum-Popover spectrum-Popover--top spectrum-Popover--withTip is-open" id="popover-tip">
    +      <ul class="spectrum-Menu" role="listbox">
    +        <li class="spectrum-Menu-item is-selected" role="option" aria-selected="true" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Ballard</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Fremont</span>
    +        </li>
    +        <li class="spectrum-Menu-item" role="option" tabindex="0">
    +          <span class="spectrum-Menu-itemLabel">Greenwood</span>
    +        </li>
    +        <li class="spectrum-Menu-divider" role="separator"></li>
    +        <li class="spectrum-Menu-item is-disabled" role="option" aria-disabled="true">
    +          <span class="spectrum-Menu-itemLabel">United States of America</span>
    +        </li>
    +      </ul>
    +      <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 153px; min-width: 166px; max-width: 50%;"></div>
    +    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="toggleSpectrumPopover(document.getElementById('popover-tip'))" style="position: relative; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">
    +      <span>Source 50x100</span>
    +    </button>
    +  </div>
    +</div>
    +

    Popover - Offset and Animation
    Contribution

    Spectrum Popover has an offset default of 8px distance from the source that is applied with an animation transform when the .is-open class is added.

    +
    +
    +

    Top with Tip

    +
    + +
    + + +
    +
    + +
    +

    Bottom with Tip

    + + + + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Top with Tip</h4>
    +    <br>
    +    <div class="spectrum-Popover spectrum-Popover--top-start spectrum-Popover--withTip is-open" role="presentation" id="popover-top">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +        </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; box-sizing: border-box; height: 231px; min-width: 402px; max-width: 50%;"></div>
    +
    +    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="toggleSpectrumPopover(document.getElementById('popover-top'))" style="position: relative; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">
    +      <span>Source 50x100</span>
    +    </button>
    +    <br>
    +  </div>
    +
    +  <div class="spectrum-Examples-item" style="position: relative;">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Bottom with Tip</h4>
    +
    +    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="toggleSpectrumPopover(this.nextElementSibling)" style="position: relative; margin-left: auto; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">
    +      <span class="spectrum-Button-label">Source 50x100</span>
    +    </button>
    +
    +    <div class="spectrum-Popover spectrum-Popover--bottom-end spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +        </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; box-sizing: border-box; height: 224px; min-width: 402px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Popover - Cross Offset
    Contribution

    Spectrum Popover tip distance to edge can be overridden in implementation by setting the property to half of the source width or height. This results in the tip centering with the center of the source.

    +
    +
    +

    Cross Offset of Tip = 50px

    +
    + +
    + + +
    +
    + +
    +

    Cross Offset of Tip = 50px

    + + + + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Cross Offset of Tip =  50px</h4>
    +    <br>
    +    <div class="spectrum-Popover spectrum-Popover--top-start spectrum-Popover--withTip is-open" role="presentation" style="--spectrum-popover-pointer-edge-offset: 50px;" id="popover1">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +        </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; box-sizing: border-box; height: 232px; min-width: 402px; max-width: 50%;"></div>
    +
    +    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="toggleSpectrumPopover(document.getElementById('popover1'))" style="position: relative; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">
    +      <span>Source 50x100</span>
    +    </button>
    +    <br>
    +  </div>
    +
    +  <div class="spectrum-Examples-item" style="position: relative;">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Cross Offset of Tip = 50px</h4>
    +
    +    <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--secondary spectrum-ButtonGroup-item" type="button" onclick="toggleSpectrumPopover(this.nextElementSibling)" style="position: relative; margin-left: auto; display: flex; align-items: center; justify-content: center; box-sizing: border-box;">
    +      <span class="spectrum-Button-label">Source 50x100</span>
    +    </button>
    +
    +    <div class="spectrum-Popover spectrum-Popover--bottom-end spectrum-Popover--withTip is-open" role="presentation" style="--spectrum-popover-pointer-edge-offset: 50px;">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +        </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; box-sizing: border-box; height: 224px; min-width: 402px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Popover - Dialog style
    Contribution

    Spectrum Popovers are implemented using the Dialog and Alert Dialog inner elements.

    +
    +
    +

    Dialog

    + +
    +
    + +
    +

    Alert Dialog - Error

    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Dialog</h4>
    +      <div class="spectrum-Popover spectrum-Popover--top spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 248px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Alert Dialog - Error</h4>
    +      <div class="spectrum-Popover spectrum-Popover--top spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-AlertDialog spectrum-AlertDialog--error" role="dialog" tabindex="-1" aria-modal="true" aria-labelledby="dialog_label">
    +          <div class="spectrum-AlertDialog-grid">
    +            <div class="spectrum-AlertDialog-header">
    +              <h1 class="spectrum-AlertDialog-heading">Unable to share</h1>
    +                <svg class="spectrum-Icon spectrum-Icon--sizeM" focusable="false" aria-hidden="true">
    +                  <use xlink:href="#spectrum-icon-18-Alert" />
    +                </svg>
    +            </div>
    +            <div class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal"></div>
    +            <section class="spectrum-AlertDialog-content">An error occured while sharing your project. Please verify the email address and try again.</section>
    +            <div class="spectrum-ButtonGroup">
    +              <button class="spectrum-Button spectrum-Button--sizeM spectrum-Button--outline spectrum-Button--primary spectrum-ButtonGroup-item" type="button" onclick="closeDialog(this.closest('.spectrum-Modal-wrapper'))">
    +                <span class="spectrum-Button-label">Continue</span>
    +              </button>
    +            </div>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 264px; min-width: 480px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Popover - Position Top
    Contribution

    +
    +

    Top

    + +
    +
    +
    + +
    +
    +

    Top Start

    + +
    +
    + +
    +

    Top End

    + +
    +
    +
    + +
    +
    +

    Top Left

    + +
    +
    + +
    +

    Top Right

    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +    <div class="spectrum-Examples-item">
    +      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Top</h4>
    +        <div class="spectrum-Popover spectrum-Popover--top spectrum-Popover--withTip is-open" role="presentation">
    +          <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +            <div class="spectrum-Dialog-grid" style="display: grid;">
    +              <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +              <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +              <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +            </div>
    +          </section>
    +          <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +            <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +          </svg>
    +        </div>
    +        <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +    </div>
    +  </div>
    +
    +  <div class="spectrum-Examples">
    +    <div class="spectrum-Examples-item">
    +      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Top Start</h4>
    +        <div class="spectrum-Popover  spectrum-Popover--top-start spectrum-Popover--withTip is-open" role="presentation">
    +          <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +            <div class="spectrum-Dialog-grid" style="display: grid;">
    +              <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +              <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +              <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +            </div>
    +          </section>
    +          <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +            <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +          </svg>
    +        </div>
    +        <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +    </div>
    +
    +    <div class="spectrum-Examples-item">
    +      <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Top End</h4>
    +        <div class="spectrum-Popover spectrum-Popover--top-end spectrum-Popover--withTip is-open" role="presentation">
    +          <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +            <div class="spectrum-Dialog-grid" style="display: grid;">
    +              <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +              <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +              <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +            </div>
    +          </section>
    +          <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +            <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +          </svg>
    +        </div>
    +        <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +    </div>
    +  </div>
    +
    +<div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Top Left</h4>
    +      <div class="spectrum-Popover spectrum-Popover--top-left spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Top Right</h4>
    +      <div class="spectrum-Popover spectrum-Popover--top-right spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Popover - Position Bottom
    Contribution

    +
    +

    Bottom

    + +
    +
    +
    +
    + +
    +
    +

    Bottom Start

    + +
    +
    +
    + +
    +

    Bottom End

    + +
    +
    +
    +
    + +
    +
    +

    Bottom Left

    + +
    +
    +
    + +
    +

    Bottom Right

    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Bottom</h4>
    +      <div class="spectrum-Popover  spectrum-Popover--bottom spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +      <br>
    +  </div>
    +</div>
    +
    +<div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Bottom Start</h4>
    +      <div class="spectrum-Popover spectrum-Popover--bottom-start spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +      <br>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Bottom End</h4>
    +      <div class="spectrum-Popover spectrum-Popover--bottom-end spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +      <br>
    +  </div>
    +</div>
    +
    +<div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Bottom Left</h4>
    +      <div class="spectrum-Popover spectrum-Popover--bottom-left spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +           </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +      <br>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Bottom Right</h4>
    +    <div class="spectrum-Popover spectrum-Popover--bottom-right spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +         </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 -0.5 16 9">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 17,-1">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Popover - Position Left
    Contribution

    +
    +

    Left

    + +
    +
    +
    + +
    +
    +

    Left Top

    + +
    +
    + +
    +

    Left Bottom

    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Left</h4>
    +    <div class="spectrum-Popover spectrum-Popover--left spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +         </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 -0.5 9 16">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +
    +<div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Left Top</h4>
    +      <div class="spectrum-Popover spectrum-Popover--left-top spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +           </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 9 16">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Left Bottom</h4>
    +      <div class="spectrum-Popover spectrum-Popover--left-bottom spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +          </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 9 16">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +    </div>
    +  </div>
    +

    Popover - Position Right
    Contribution

    +
    +

    Right

    + +
    +
    +
    +
    + +
    +
    +

    Right Top

    + +
    +
    + +
    +

    Right Bottom

    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Right</h4>
    +      <div class="spectrum-Popover spectrum-Popover--right spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +           </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 9 16">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +      <br>
    +  </div>
    +</div>
    +
    +<div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Right Top</h4>
    +      <div class="spectrum-Popover spectrum-Popover--right-top spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +           </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 9 16">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Right Bottom</h4>
    +      <div class="spectrum-Popover spectrum-Popover--right-bottom spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +           </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 9 16">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Popover - Position Start
    Contribution

    +
    +

    Start

    + +
    +
    +
    + +
    +
    +

    Start Top

    + +
    +
    + +
    +

    Start Bottom

    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +  <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Start</h4>
    +    <div class="spectrum-Popover spectrum-Popover--start spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +         </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 0.5 9 16">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +
    +<div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Start Top</h4>
    +    <div class="spectrum-Popover spectrum-Popover--start-top spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +         </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 0.5 9 16">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">Start Bottom</h4>
    +    <div class="spectrum-Popover spectrum-Popover--start-bottom spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +         </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 0.5 9 16">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Popover - Position End
    Contribution

    +
    +

    End

    + +
    +
    +
    + +
    +
    +

    End Top

    + +
    +
    + +
    +

    End Bottom

    + +
    +
    +
    +
    Show markup
    <div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +  <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">End</h4>
    +      <div class="spectrum-Popover spectrum-Popover--end spectrum-Popover--withTip is-open" role="presentation">
    +        <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +          <div class="spectrum-Dialog-grid" style="display: grid;">
    +            <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +            <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +            <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +           </div>
    +        </section>
    +        <svg class="spectrum-Popover-tip" viewBox="0 -0.5 9 16">
    +          <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +        </svg>
    +      </div>
    +      <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +
    +<div class="spectrum-Examples">
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">End Top</h4>
    +    <div class="spectrum-Popover spectrum-Popover--end-top spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +         </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 0.5 9 16">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +
    +  <div class="spectrum-Examples-item">
    +    <h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading" style="margin-bottom: 16px;">End Bottom</h4>
    +    <div class="spectrum-Popover spectrum-Popover--end-bottom spectrum-Popover--withTip is-open" role="presentation">
    +      <section class="spectrum-Dialog spectrum-Dialog--small" role="dialog" tabindex="-1" aria-modal="true">
    +        <div class="spectrum-Dialog-grid" style="display: grid;">
    +          <h1 class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader">Popover Title</h1>
    +          <hr class="spectrum-Divider spectrum-Divider--sizeM spectrum-Divider--horizontal spectrum-Dialog-divider">
    +          <section class="spectrum-Dialog-content">Cupcake ipsum dolor sit amet jelly beans. Chocolate jelly caramels. Icing soufflé chupa chups donut cheesecake. Jelly-o chocolate cake sweet roll cake danish candy biscuit halvah.</section>
    +         </div>
    +      </section>
    +      <svg class="spectrum-Popover-tip" viewBox="0 0.5 9 16">
    +        <path class="spectrum-Popover-tip-triangle" d="M-1,-1 8,8 -1,17">
    +      </svg>
    +    </div>
    +    <div class="dummy-spacing" style="position: relative; height: 236px; min-width: 400px; max-width: 50%;"></div>
    +  </div>
    +</div>
    +

    Custom Properties API


    This component can be modified via its --mod-* prefixed custom properties. A list of those prefixed custom properties can be found here.

    +

    Migration Guide


    New Popover Positions

    +
      +
    • +

      Popover has 22 available positions. 10 positions use logical properties.

      +
    • +
    • +

      Popover position and distance to source should be handled by implementation.

      +
    • +
    • +

      In this document, Popover positions will appear to only impact default tip positioning because popovers in this document are already open by default.

      +
    • +
    • +

      Animation direction, speed, and distance are handled by overlay.

      +

      Position Class Naming

      +
        +
      • First position term is popover position, second term is source position.
      • +
      • Example: --top-left = popover is to top and source is to left.
      • +
      • Popover has 8px spacing from the source by default.
      • +
      +

      Position of Tip

      +
        +
      • Default tip position is centered on the edge for top/bottom/left/right/start/end positions.
      • +
      • Default tip position distance from edge is equal to popover corner radius for all other positions.
      • +
      • Popover tip position can be overridden in implementation to center with the source by setting ‘–spectrum-popover-pointer-edge-offset’ equal to half the width of the source (for top and bottom popovers) or half the height of the source (for side popovers).
      • +
      +

      Tip SVG

      +
        +
      • Tip SVG should be updated in the markup
      • +
      • Popover tip SVG polygon can retain the same markup and points for top and bottom (it is flipped in the CSS)
      • +
      • Popover tip SVG polygon can retain the same markup and points for left/right/start/end (it is flipped in the CSS)
      • +
      +
    • +
    +

    \ No newline at end of file diff --git a/preview/assets/Color-PRSJMWNM-DRazqggm.js b/preview/assets/Color-PRSJMWNM-DRazqggm.js new file mode 100644 index 0000000000..d0825bcc52 --- /dev/null +++ b/preview/assets/Color-PRSJMWNM-DRazqggm.js @@ -0,0 +1 @@ +import{R as h,r as b,n as $,i as ue,j as Me,F as Ce,k as $e,l as Oe}from"./index-BM7n-yQ0.js";import{g as fe}from"./_commonjsHelpers-BosuxZz1.js";import{_ as Ne,i as J,b as Ie}from"./index-DMJx5Vcm.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./index-DrFu-skq.js";function N(){return(N=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function K(e){var t=b.useRef(e),n=b.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var R=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:p.buttons>0)&&o.current?a(ne(o.current,p,s.current)):M(!1)},j=function(){return M(!1)};function M(p){var m=i.current,w=V(o.current),E=p?w.addEventListener:w.removeEventListener;E(m?"touchmove":"mousemove",x),E(m?"touchend":"mouseup",j)}return[function(p){var m=p.nativeEvent,w=o.current;if(w&&(re(m),!function(k,O){return O&&!F(k)}(m,i.current)&&w)){if(F(m)){i.current=!0;var E=m.changedTouches||[];E.length&&(s.current=E[0].identifier)}w.focus(),a(ne(w,m,s.current)),M(!0)}},function(p){var m=p.which||p.keyCode;m<37||m>40||(p.preventDefault(),l({left:m===39?.05:m===37?-.05:0,top:m===40?.05:m===38?-.05:0}))},M]},[l,a]),d=c[0],f=c[1],g=c[2];return b.useEffect(function(){return g},[g]),h.createElement("div",N({},r,{onTouchStart:d,onMouseDown:d,className:"react-colorful__interactive",ref:o,onKeyDown:f,tabIndex:0,role:"slider"}))}),H=function(e){return e.filter(Boolean).join(" ")},ee=function(e){var t=e.color,n=e.left,r=e.top,o=r===void 0?.5:r,a=H(["react-colorful__pointer",e.className]);return h.createElement("div",{className:a,style:{top:100*o+"%",left:100*n+"%"}},h.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},y=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},Se={grad:.9,turn:360,rad:360/(2*Math.PI)},Re=function(e){return ge(A(e))},A=function(e){return e[0]==="#"&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?y(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:e.length===8?y(parseInt(e.substring(6,8),16)/255,2):1}},je=function(e,t){return t===void 0&&(t="deg"),Number(e)*(Se[t]||1)},Te=function(e){var t=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?Fe({h:je(t[1],t[2]),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)}):{h:0,s:0,v:0,a:1}},Fe=function(e){var t=e.s,n=e.l;return{h:e.h,s:(t*=(n<50?n:100-n)/100)>0?2*t/(n+t)*100:0,v:n+t,a:e.a}},ze=function(e){return Pe(de(e))},he=function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:y(e.h),s:y(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:y(o/2),a:y(r,2)}},G=function(e){var t=he(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},B=function(e){var t=he(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},de=function(e){var t=e.h,n=e.s,r=e.v,o=e.a;t=t/360*6,n/=100,r/=100;var a=Math.floor(t),l=r*(1-n),s=r*(1-(t-a)*n),i=r*(1-(1-t+a)*n),c=a%6;return{r:y(255*[r,s,l,l,i,r][c]),g:y(255*[i,r,r,s,l,l][c]),b:y(255*[l,l,i,r,r,s][c]),a:y(o,2)}},He=function(e){var t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?ge({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}},P=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Pe=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,a=o<1?P(y(255*o)):"";return"#"+P(t)+P(n)+P(r)+a},ge=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,a=Math.max(t,n,r),l=a-Math.min(t,n,r),s=l?a===t?(n-r)/l:a===n?2+(r-t)/l:4+(t-n)/l:0;return{h:y(60*(s<0?s+6:s)),s:y(a?l/a*100:0),v:y(a/255*100),a:o}},be=h.memo(function(e){var t=e.hue,n=e.onChange,r=H(["react-colorful__hue",e.className]);return h.createElement("div",{className:r},h.createElement(Z,{onMove:function(o){n({h:360*o.left})},onKey:function(o){n({h:R(t+360*o.left,0,360)})},"aria-label":"Hue","aria-valuenow":y(t),"aria-valuemax":"360","aria-valuemin":"0"},h.createElement(ee,{className:"react-colorful__hue-pointer",left:t/360,color:G({h:t,s:100,v:100,a:1})})))}),me=h.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:G({h:t.h,s:100,v:100,a:1})};return h.createElement("div",{className:"react-colorful__saturation",style:r},h.createElement(Z,{onMove:function(o){n({s:100*o.left,v:100-100*o.top})},onKey:function(o){n({s:R(t.s+100*o.left,0,100),v:R(t.v-100*o.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+y(t.s)+"%, Brightness "+y(t.v)+"%"},h.createElement(ee,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:G(t)})))}),ve=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0},pe=function(e,t){return e.replace(/\s/g,"")===t.replace(/\s/g,"")},Le=function(e,t){return e.toLowerCase()===t.toLowerCase()||ve(A(e),A(t))};function ye(e,t,n){var r=K(n),o=b.useState(function(){return e.toHsva(t)}),a=o[0],l=o[1],s=b.useRef({color:t,hsva:a});b.useEffect(function(){if(!e.equal(t,s.current.color)){var c=e.toHsva(t);s.current={hsva:c,color:t},l(c)}},[t,e]),b.useEffect(function(){var c;ve(a,s.current.hsva)||e.equal(c=e.fromHsva(a),s.current.color)||(s.current={hsva:a,color:c},r(c))},[a,e,r]);var i=b.useCallback(function(c){l(function(d){return Object.assign({},d,c)})},[]);return[a,i]}var qe=typeof window<"u"?b.useLayoutEffect:b.useEffect,Be=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},oe=new Map,xe=function(e){qe(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!oe.has(t)){var n=t.createElement("style");n.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,oe.set(t,n);var r=Be();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},We=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,a=e.onChange,l=Q(e,["className","colorModel","color","onChange"]),s=b.useRef(null);xe(s);var i=ye(n,o,a),c=i[0],d=i[1],f=H(["react-colorful",t]);return h.createElement("div",N({},l,{ref:s,className:f}),h.createElement(me,{hsva:c,onChange:d}),h.createElement(be,{hue:c.h,onChange:d,className:"react-colorful__last-control"}))},Xe={defaultColor:"000",toHsva:Re,fromHsva:function(e){return ze({h:e.h,s:e.s,v:e.v,a:1})},equal:Le},De=function(e){return h.createElement(We,N({},e,{colorModel:Xe}))},Ke=function(e){var t=e.className,n=e.hsva,r=e.onChange,o={backgroundImage:"linear-gradient(90deg, "+B(Object.assign({},n,{a:0}))+", "+B(Object.assign({},n,{a:1}))+")"},a=H(["react-colorful__alpha",t]),l=y(100*n.a);return h.createElement("div",{className:a},h.createElement("div",{className:"react-colorful__alpha-gradient",style:o}),h.createElement(Z,{onMove:function(s){r({a:s.left})},onKey:function(s){r({a:R(n.a+s.left)})},"aria-label":"Alpha","aria-valuetext":l+"%","aria-valuenow":l,"aria-valuemin":"0","aria-valuemax":"100"},h.createElement(ee,{className:"react-colorful__alpha-pointer",left:n.a,color:B(n)})))},we=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,a=e.onChange,l=Q(e,["className","colorModel","color","onChange"]),s=b.useRef(null);xe(s);var i=ye(n,o,a),c=i[0],d=i[1],f=H(["react-colorful",t]);return h.createElement("div",N({},l,{ref:s,className:f}),h.createElement(me,{hsva:c,onChange:d}),h.createElement(be,{hue:c.h,onChange:d}),h.createElement(Ke,{hsva:c,onChange:d,className:"react-colorful__last-control"}))},Ve={defaultColor:"hsla(0, 0%, 0%, 1)",toHsva:Te,fromHsva:B,equal:pe},Ae=function(e){return h.createElement(we,N({},e,{colorModel:Ve}))},Ge={defaultColor:"rgba(0, 0, 0, 1)",toHsva:He,fromHsva:function(e){var t=de(e);return"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a+")"},equal:pe},Ue=function(e){return h.createElement(we,N({},e,{colorModel:Ge}))},Ye={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};const z=Ye,ke={};for(const e of Object.keys(z))ke[z[e]]=e;const u={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};var _e=u;for(const e of Object.keys(u)){if(!("channels"in u[e]))throw new Error("missing channels property: "+e);if(!("labels"in u[e]))throw new Error("missing channel labels property: "+e);if(u[e].labels.length!==u[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=u[e];delete u[e].channels,delete u[e].labels,Object.defineProperty(u[e],"channels",{value:t}),Object.defineProperty(u[e],"labels",{value:n})}u.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,o=Math.min(t,n,r),a=Math.max(t,n,r),l=a-o;let s,i;a===o?s=0:t===a?s=(n-r)/l:n===a?s=2+(r-t)/l:r===a&&(s=4+(t-n)/l),s=Math.min(s*60,360),s<0&&(s+=360);const c=(o+a)/2;return a===o?i=0:c<=.5?i=l/(a+o):i=l/(2-a-o),[s,i*100,c*100]};u.rgb.hsv=function(e){let t,n,r,o,a;const l=e[0]/255,s=e[1]/255,i=e[2]/255,c=Math.max(l,s,i),d=c-Math.min(l,s,i),f=function(g){return(c-g)/6/d+1/2};return d===0?(o=0,a=0):(a=d/c,t=f(l),n=f(s),r=f(i),l===c?o=r-n:s===c?o=1/3+t-r:i===c&&(o=2/3+n-t),o<0?o+=1:o>1&&(o-=1)),[o*360,a*100,c*100]};u.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const o=u.rgb.hsl(e)[0],a=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[o,a*100,r*100]};u.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,o=Math.min(1-t,1-n,1-r),a=(1-t-o)/(1-o)||0,l=(1-n-o)/(1-o)||0,s=(1-r-o)/(1-o)||0;return[a*100,l*100,s*100,o*100]};function Je(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}u.rgb.keyword=function(e){const t=ke[e];if(t)return t;let n=1/0,r;for(const o of Object.keys(z)){const a=z[o],l=Je(e,a);l.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;const o=t*.4124+n*.3576+r*.1805,a=t*.2126+n*.7152+r*.0722,l=t*.0193+n*.1192+r*.9505;return[o*100,a*100,l*100]};u.rgb.lab=function(e){const t=u.rgb.xyz(e);let n=t[0],r=t[1],o=t[2];n/=95.047,r/=100,o/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;const a=116*r-16,l=500*(n-r),s=200*(r-o);return[a,l,s]};u.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let o,a,l;if(n===0)return l=r*255,[l,l,l];r<.5?o=r*(1+n):o=r+n-r*n;const s=2*r-o,i=[0,0,0];for(let c=0;c<3;c++)a=t+1/3*-(c-1),a<0&&a++,a>1&&a--,6*a<1?l=s+(o-s)*6*a:2*a<1?l=o:3*a<2?l=s+(o-s)*(2/3-a)*6:l=s,i[c]=l*255;return i};u.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,o=n;const a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,o*=a<=1?a:2-a;const l=(r+n)/2,s=r===0?2*o/(a+o):2*n/(r+n);return[t,s*100,l*100]};u.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const o=Math.floor(t)%6,a=t-Math.floor(t),l=255*r*(1-n),s=255*r*(1-n*a),i=255*r*(1-n*(1-a));switch(r*=255,o){case 0:return[r,i,l];case 1:return[s,r,l];case 2:return[l,r,i];case 3:return[l,s,r];case 4:return[i,l,r];case 5:return[r,l,s]}};u.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,o=Math.max(r,.01);let a,l;l=(2-n)*r;const s=(2-n)*o;return a=n*o,a/=s<=1?s:2-s,a=a||0,l/=2,[t,a*100,l*100]};u.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const o=n+r;let a;o>1&&(n/=o,r/=o);const l=Math.floor(6*t),s=1-r;a=6*t-l,l&1&&(a=1-a);const i=n+a*(s-n);let c,d,f;switch(l){default:case 6:case 0:c=s,d=i,f=n;break;case 1:c=i,d=s,f=n;break;case 2:c=n,d=s,f=i;break;case 3:c=n,d=i,f=s;break;case 4:c=i,d=n,f=s;break;case 5:c=s,d=n,f=i;break}return[c*255,d*255,f*255]};u.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,o=e[3]/100,a=1-Math.min(1,t*(1-o)+o),l=1-Math.min(1,n*(1-o)+o),s=1-Math.min(1,r*(1-o)+o);return[a*255,l*255,s*255]};u.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let o,a,l;return o=t*3.2406+n*-1.5372+r*-.4986,a=t*-.9689+n*1.8758+r*.0415,l=t*.0557+n*-.204+r*1.057,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,l=l>.0031308?1.055*l**(1/2.4)-.055:l*12.92,o=Math.min(Math.max(0,o),1),a=Math.min(Math.max(0,a),1),l=Math.min(Math.max(0,l),1),[o*255,a*255,l*255]};u.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;const o=116*n-16,a=500*(t-n),l=200*(n-r);return[o,a,l]};u.lab.xyz=function(e){const t=e[0],n=e[1],r=e[2];let o,a,l;a=(t+16)/116,o=n/500+a,l=a-r/200;const s=a**3,i=o**3,c=l**3;return a=s>.008856?s:(a-16/116)/7.787,o=i>.008856?i:(o-16/116)/7.787,l=c>.008856?c:(l-16/116)/7.787,o*=95.047,a*=100,l*=108.883,[o,a,l]};u.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let o;o=Math.atan2(r,n)*360/2/Math.PI,o<0&&(o+=360);const l=Math.sqrt(n*n+r*r);return[t,l,o]};u.lch.lab=function(e){const t=e[0],n=e[1],o=e[2]/360*2*Math.PI,a=n*Math.cos(o),l=n*Math.sin(o);return[t,a,l]};u.rgb.ansi16=function(e,t=null){const[n,r,o]=e;let a=t===null?u.rgb.hsv(e)[2]:t;if(a=Math.round(a/50),a===0)return 30;let l=30+(Math.round(o/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return a===2&&(l+=60),l};u.hsv.ansi16=function(e){return u.rgb.ansi16(u.hsv.rgb(e),e[2])};u.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)};u.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=(~~(e>50)+1)*.5,r=(t&1)*n*255,o=(t>>1&1)*n*255,a=(t>>2&1)*n*255;return[r,o,a]};u.ansi256.rgb=function(e){if(e>=232){const a=(e-232)*10+8;return[a,a,a]}e-=16;let t;const n=Math.floor(e/36)/5*255,r=Math.floor((t=e%36)/6)/5*255,o=t%6/5*255;return[n,r,o]};u.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(n.length)+n};u.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=n.split("").map(s=>s+s).join(""));const r=parseInt(n,16),o=r>>16&255,a=r>>8&255,l=r&255;return[o,a,l]};u.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,o=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),l=o-a;let s,i;return l<1?s=a/(1-l):s=0,l<=0?i=0:o===t?i=(n-r)/l%6:o===n?i=2+(r-t)/l:i=4+(t-n)/l,i/=6,i%=1,[i*360,l*100,s*100]};u.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let o=0;return r<1&&(o=(n-.5*r)/(1-r)),[e[0],r*100,o*100]};u.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let o=0;return r<1&&(o=(n-r)/(1-r)),[e[0],r*100,o*100]};u.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];const o=[0,0,0],a=t%1*6,l=a%1,s=1-l;let i=0;switch(Math.floor(a)){case 0:o[0]=1,o[1]=l,o[2]=0;break;case 1:o[0]=s,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=l;break;case 3:o[0]=0,o[1]=s,o[2]=1;break;case 4:o[0]=l,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=s}return i=(1-n)*r,[(n*o[0]+i)*255,(n*o[1]+i)*255,(n*o[2]+i)*255]};u.hcg.hsv=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);let o=0;return r>0&&(o=t/r),[e[0],o*100,r*100]};u.hcg.hsl=function(e){const t=e[1]/100,r=e[2]/100*(1-t)+.5*t;let o=0;return r>0&&r<.5?o=t/(2*r):r>=.5&&r<1&&(o=t/(2*(1-r))),[e[0],o*100,r*100]};u.hcg.hwb=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);return[e[0],(r-t)*100,(1-r)*100]};u.hwb.hcg=function(e){const t=e[1]/100,r=1-e[2]/100,o=r-t;let a=0;return o<1&&(a=(r-o)/(1-o)),[e[0],o*100,a*100]};u.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};u.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};u.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};u.gray.hsl=function(e){return[0,0,e[0]]};u.gray.hsv=u.gray.hsl;u.gray.hwb=function(e){return[0,100,e[0]]};u.gray.cmyk=function(e){return[0,0,0,e[0]]};u.gray.lab=function(e){return[e[0],0,0]};u.gray.hex=function(e){const t=Math.round(e[0]/100*255)&255,r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r};u.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};const W=_e;function Qe(){const e={},t=Object.keys(W);for(let n=t.length,r=0;r1&&(n=r),e(n))};return"conversion"in e&&(t.conversion=e.conversion),t}function lt(e){const t=function(...n){const r=n[0];if(r==null)return r;r.length>1&&(n=r);const o=e(n);if(typeof o=="object")for(let a=o.length,l=0;l{I[e]={},Object.defineProperty(I[e],"channels",{value:U[e].channels}),Object.defineProperty(I[e],"labels",{value:U[e].labels});const t=rt(e);Object.keys(t).forEach(r=>{const o=t[r];I[e][r]=lt(o),I[e][r].raw=at(o)})});var st=I;const _=fe(st);var it=Ne,ct=function(){return it.Date.now()},ut=ct,ft=/\s/;function ht(e){for(var t=e.length;t--&&ft.test(e.charAt(t)););return t}var dt=ht,gt=dt,bt=/^\s+/;function mt(e){return e&&e.slice(0,gt(e)+1).replace(bt,"")}var vt=mt,pt=vt,ae=J,yt=Ie,le=NaN,xt=/^[-+]0x[0-9a-f]+$/i,wt=/^0b[01]+$/i,kt=/^0o[0-7]+$/i,_t=parseInt;function Et(e){if(typeof e=="number")return e;if(yt(e))return le;if(ae(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=ae(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=pt(e);var n=wt.test(e);return n||kt.test(e)?_t(e.slice(2),n?2:8):xt.test(e)?le:+e}var Mt=Et,Ct=J,D=ut,se=Mt,$t="Expected a function",Ot=Math.max,Nt=Math.min;function It(e,t,n){var r,o,a,l,s,i,c=0,d=!1,f=!1,g=!0;if(typeof e!="function")throw new TypeError($t);t=se(t)||0,Ct(n)&&(d=!!n.leading,f="maxWait"in n,a=f?Ot(se(n.maxWait)||0,t):a,g="trailing"in n?!!n.trailing:g);function x(v){var C=r,T=o;return r=o=void 0,c=v,l=e.apply(T,C),l}function j(v){return c=v,s=setTimeout(m,t),d?x(v):l}function M(v){var C=v-i,T=v-c,te=t-C;return f?Nt(te,a-T):te}function p(v){var C=v-i,T=v-c;return i===void 0||C>=t||C<0||f&&T>=a}function m(){var v=D();if(p(v))return w(v);s=setTimeout(m,M(v))}function w(v){return s=void 0,g&&r?x(v):(r=o=void 0,l)}function E(){s!==void 0&&clearTimeout(s),c=0,r=i=o=s=void 0}function k(){return s===void 0?l:w(D())}function O(){var v=D(),C=p(v);if(r=arguments,o=this,i=v,C){if(s===void 0)return j(i);if(f)return clearTimeout(s),s=setTimeout(m,t),x(i)}return s===void 0&&(s=setTimeout(m,t)),l}return O.cancel=E,O.flush=k,O}var St=It,Rt=St,jt=J,Tt="Expected a function";function Ft(e,t,n){var r=!0,o=!0;if(typeof e!="function")throw new TypeError(Tt);return jt(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),Rt(e,t,{leading:r,maxWait:t,trailing:o})}var zt=Ft;const Ht=fe(zt);var Pt=$.div({position:"relative",maxWidth:250,'&[aria-readonly="true"]':{opacity:.5}}),Lt=$(ue)({position:"absolute",zIndex:1,top:4,left:4,"[aria-readonly=true] &":{cursor:"not-allowed"}}),qt=$.div({width:200,margin:5,".react-colorful__saturation":{borderRadius:"4px 4px 0 0"},".react-colorful__hue":{boxShadow:"inset 0 0 0 1px rgb(0 0 0 / 5%)"},".react-colorful__last-control":{borderRadius:"0 0 4px 4px"}}),Bt=$(Me)(({theme:e})=>({fontFamily:e.typography.fonts.base})),Wt=$.div({display:"grid",gridTemplateColumns:"repeat(9, 16px)",gap:6,padding:3,marginTop:5,width:200}),Xt=$.div(({theme:e,active:t})=>({width:16,height:16,boxShadow:t?`${e.appBorderColor} 0 0 0 1px inset, ${e.textMutedColor}50 0 0 0 4px`:`${e.appBorderColor} 0 0 0 1px inset`,borderRadius:e.appBorderRadius})),Dt=`url('data:image/svg+xml;charset=utf-8,')`,ie=({value:e,style:t,...n})=>{let r=`linear-gradient(${e}, ${e}), ${Dt}, linear-gradient(#fff, #fff)`;return h.createElement(Xt,{...n,style:{...t,backgroundImage:r}})},Kt=$(Ce.Input)(({theme:e,readOnly:t})=>({width:"100%",paddingLeft:30,paddingRight:30,boxSizing:"border-box",fontFamily:e.typography.fonts.base})),Vt=$($e)(({theme:e})=>({position:"absolute",zIndex:1,top:6,right:7,width:20,height:20,padding:4,boxSizing:"border-box",cursor:"pointer",color:e.input.color})),Ee=(e=>(e.RGB="rgb",e.HSL="hsl",e.HEX="hex",e))(Ee||{}),L=Object.values(Ee),At=/\(([0-9]+),\s*([0-9]+)%?,\s*([0-9]+)%?,?\s*([0-9.]+)?\)/,Gt=/^\s*rgba?\(([0-9]+),\s*([0-9]+),\s*([0-9]+),?\s*([0-9.]+)?\)\s*$/i,Ut=/^\s*hsla?\(([0-9]+),\s*([0-9]+)%,\s*([0-9]+)%,?\s*([0-9.]+)?\)\s*$/i,Y=/^\s*#?([0-9a-f]{3}|[0-9a-f]{6})\s*$/i,Yt=/^\s*#?([0-9a-f]{3})\s*$/i,Jt={hex:De,rgb:Ue,hsl:Ae},q={hex:"transparent",rgb:"rgba(0, 0, 0, 0)",hsl:"hsla(0, 0%, 0%, 0)"},ce=e=>{let t=e==null?void 0:e.match(At);if(!t)return[0,0,0,1];let[,n,r,o,a=1]=t;return[n,r,o,a].map(Number)},S=e=>{if(!e)return;let t=!0;if(Gt.test(e)){let[l,s,i,c]=ce(e),[d,f,g]=_.rgb.hsl([l,s,i])||[0,0,0];return{valid:t,value:e,keyword:_.rgb.keyword([l,s,i]),colorSpace:"rgb",rgb:e,hsl:`hsla(${d}, ${f}%, ${g}%, ${c})`,hex:`#${_.rgb.hex([l,s,i]).toLowerCase()}`}}if(Ut.test(e)){let[l,s,i,c]=ce(e),[d,f,g]=_.hsl.rgb([l,s,i])||[0,0,0];return{valid:t,value:e,keyword:_.hsl.keyword([l,s,i]),colorSpace:"hsl",rgb:`rgba(${d}, ${f}, ${g}, ${c})`,hsl:e,hex:`#${_.hsl.hex([l,s,i]).toLowerCase()}`}}let n=e.replace("#",""),r=_.keyword.rgb(n)||_.hex.rgb(n),o=_.rgb.hsl(r),a=e;if(/[^#a-f0-9]/i.test(e)?a=n:Y.test(e)&&(a=`#${n}`),a.startsWith("#"))t=Y.test(a);else try{_.keyword.hex(a)}catch{t=!1}return{valid:t,value:a,keyword:_.rgb.keyword(r),colorSpace:"hex",rgb:`rgba(${r[0]}, ${r[1]}, ${r[2]}, 1)`,hsl:`hsla(${o[0]}, ${o[1]}%, ${o[2]}%, 1)`,hex:a}},Qt=(e,t,n)=>{if(!e||!(t!=null&&t.valid))return q[n];if(n!=="hex")return(t==null?void 0:t[n])||q[n];if(!t.hex.startsWith("#"))try{return`#${_.keyword.hex(t.hex)}`}catch{return q.hex}let r=t.hex.match(Yt);if(!r)return Y.test(t.hex)?t.hex:q.hex;let[o,a,l]=r[1].split("");return`#${o}${o}${a}${a}${l}${l}`},Zt=(e,t)=>{let[n,r]=b.useState(e||""),[o,a]=b.useState(()=>S(n)),[l,s]=b.useState((o==null?void 0:o.colorSpace)||"hex");b.useEffect(()=>{let f=e||"",g=S(f);r(f),a(g),s((g==null?void 0:g.colorSpace)||"hex")},[e]);let i=b.useMemo(()=>Qt(n,o,l).toLowerCase(),[n,o,l]),c=b.useCallback(f=>{let g=S(f),x=(g==null?void 0:g.value)||f||"";r(x),x===""&&(a(void 0),t(void 0)),g&&(a(g),s(g.colorSpace),t(g.value))},[t]),d=b.useCallback(()=>{let f=L.indexOf(l)+1;f>=L.length&&(f=0),s(L[f]);let g=(o==null?void 0:o[L[f]])||"";r(g),t(g)},[o,l,t]);return{value:n,realValue:i,updateValue:c,color:o,colorSpace:l,cycleColorSpace:d}},X=e=>e.replace(/\s*/,"").toLowerCase(),en=(e,t,n)=>{let[r,o]=b.useState(t!=null&&t.valid?[t]:[]);b.useEffect(()=>{t===void 0&&o([])},[t]);let a=b.useMemo(()=>(e||[]).map(s=>typeof s=="string"?S(s):s.title?{...S(s.color),keyword:s.title}:S(s.color)).concat(r).filter(Boolean).slice(-27),[e,r]),l=b.useCallback(s=>{s!=null&&s.valid&&(a.some(i=>X(i[n])===X(s[n]))||o(i=>i.concat(s)))},[n,a]);return{presets:a,addPreset:l}},tn=({name:e,value:t,onChange:n,onFocus:r,onBlur:o,presetColors:a,startOpen:l=!1,argType:s})=>{var E;let i=b.useCallback(Ht(n,200),[n]),{value:c,realValue:d,updateValue:f,color:g,colorSpace:x,cycleColorSpace:j}=Zt(t,i),{presets:M,addPreset:p}=en(a,g,x),m=Jt[x],w=!!((E=s==null?void 0:s.table)!=null&&E.readonly);return h.createElement(Pt,{"aria-readonly":w},h.createElement(Lt,{startOpen:l,trigger:w?[null]:void 0,closeOnOutsideClick:!0,onVisibleChange:()=>p(g),tooltip:h.createElement(qt,null,h.createElement(m,{color:d==="transparent"?"#000000":d,onChange:f,onFocus:r,onBlur:o}),M.length>0&&h.createElement(Wt,null,M.map((k,O)=>h.createElement(ue,{key:`${k.value}-${O}`,hasChrome:!1,tooltip:h.createElement(Bt,{note:k.keyword||k.value})},h.createElement(ie,{value:k[x],active:g&&X(k[x])===X(g[x]),onClick:()=>f(k.value)})))))},h.createElement(ie,{value:d,style:{margin:4}})),h.createElement(Kt,{id:Oe(e),value:c,onChange:k=>f(k.target.value),onFocus:k=>k.target.select(),readOnly:w,placeholder:"Choose color..."}),c?h.createElement(Vt,{onClick:j}):null)},cn=tn;export{tn as ColorControl,cn as default}; diff --git a/preview/assets/DocsRenderer-K4EAMTCU-DmIiI-NG.js b/preview/assets/DocsRenderer-K4EAMTCU-DmIiI-NG.js new file mode 100644 index 0000000000..f8d0f71ea7 --- /dev/null +++ b/preview/assets/DocsRenderer-K4EAMTCU-DmIiI-NG.js @@ -0,0 +1,2 @@ +const __vite__fileDeps=["./index-BkCjH-3M.js","./index-Bra5jxz-.js","./index-BM7n-yQ0.js","./iframe-HOC10Tsl.js","./_commonjsHelpers-BosuxZz1.js","./index-DMJx5Vcm.js","./index-DrFu-skq.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import{_ as h}from"./iframe-HOC10Tsl.js";import{e as d,R as o,r as u,f as E,g as R,H as x,h as y}from"./index-BM7n-yQ0.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-BosuxZz1.js";import"./index-DMJx5Vcm.js";import"./index-DrFu-skq.js";var i={},m=d;i.createRoot=m.createRoot,i.hydrateRoot=m.hydrateRoot;var n=new Map,v=({callback:e,children:t})=>{let r=u.useRef();return u.useLayoutEffect(()=>{r.current!==e&&(r.current=e,e())},[e]),t},w=async(e,t,r)=>{let s=await _(t,r);return new Promise(a=>{s.render(o.createElement(v,{callback:()=>a(null)},e))})},D=(e,t)=>{let r=n.get(e);r&&(r.unmount(),n.delete(e))},_=async(e,t)=>{let r=n.get(e);return r||(r=i.createRoot(e,t),n.set(e,r)),r},f={code:E,a:R,...x},g=class extends u.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){let{showException:t}=this.props;t(e)}render(){let{hasError:e}=this.state,{children:t}=this.props;return e?null:o.createElement(o.Fragment,null,t)}},O=class{constructor(){this.render=async(e,t,r)=>{let s={...f,...t==null?void 0:t.components},a=y;return new Promise((p,l)=>{h(async()=>{const{MDXProvider:c}=await import("./index-BkCjH-3M.js");return{MDXProvider:c}},__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url).then(({MDXProvider:c})=>w(o.createElement(g,{showException:l,key:Math.random()},o.createElement(c,{components:s},o.createElement(a,{context:e,docsParameter:t}))),r)).then(()=>p())})},this.unmount=e=>{D(e)}}};export{O as DocsRenderer,f as defaultComponents}; diff --git a/preview/assets/WithTooltip-KJL26V4Q-DBlSOs1Z.js b/preview/assets/WithTooltip-KJL26V4Q-DBlSOs1Z.js new file mode 100644 index 0000000000..3ba238fe24 --- /dev/null +++ b/preview/assets/WithTooltip-KJL26V4Q-DBlSOs1Z.js @@ -0,0 +1 @@ +import{W as a,W as T,b as e}from"./index-BM7n-yQ0.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-BosuxZz1.js";import"./index-DMJx5Vcm.js";import"./index-DrFu-skq.js";export{a as WithToolTipState,T as WithTooltip,e as WithTooltipPure}; diff --git a/preview/assets/_commonjsHelpers-BosuxZz1.js b/preview/assets/_commonjsHelpers-BosuxZz1.js new file mode 100644 index 0000000000..ad4f157588 --- /dev/null +++ b/preview/assets/_commonjsHelpers-BosuxZz1.js @@ -0,0 +1 @@ +var u=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function f(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function l(e){if(e.__esModule)return e;var r=e.default;if(typeof r=="function"){var t=function o(){return this instanceof o?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)};t.prototype=r.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(o){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}),t}export{l as a,u as c,f as g}; diff --git a/preview/assets/_createCompounder-DY9ZW94_.js b/preview/assets/_createCompounder-DY9ZW94_.js new file mode 100644 index 0000000000..5aca68e78d --- /dev/null +++ b/preview/assets/_createCompounder-DY9ZW94_.js @@ -0,0 +1 @@ +import{t as s}from"./capitalize-D60SaZ2R.js";function E(u,e,x,t0){for(var f=-1,v=u==null?0:u.length;++f.spectrum-Accordion-itemHeading>.spectrum-Accordion-itemIconContainer>.spectrum-Accordion-itemIndicator,.spectrum-Accordion-item.is-open>.spectrum-Accordion-itemIconContainer>.spectrum-Accordion-itemIndicator{transform:var(--spectrum-logical-rotation,) rotate(90deg)}.spectrum-Accordion-item.is-open>.spectrum-Accordion-itemContent{display:block}.spectrum-Accordion-item.is-disabled .spectrum-Accordion-itemHeader{cursor:default} diff --git a/preview/assets/accordion-G0ZHOPZx.js b/preview/assets/accordion-G0ZHOPZx.js new file mode 100644 index 0000000000..d09d2afd20 --- /dev/null +++ b/preview/assets/accordion-G0ZHOPZx.js @@ -0,0 +1,15 @@ +import{j as o}from"./jsx-runtime-Dt6rJ0KA.js";import{u as e}from"./index-Bra5jxz-.js";import{M as p,T as m,d as a,D as c,C as s,A as d}from"./index-BM7n-yQ0.js";import{C as x}from"./component-details-AR4Dr-Ts.js";import{A as r,D as h,C as j,S as u}from"./accordion.stories-Rp5ZIRPk.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-BosuxZz1.js";import"./index-DMJx5Vcm.js";import"./index-DrFu-skq.js";import"./template-DWHQE7dh.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./class-map-hgg4E7s1.js";import"./if-defined-Bu2tv67N.js";import"./capitalize-D60SaZ2R.js";import"./lowerCase-CIorQk0G.js";import"./_createCompounder-DY9ZW94_.js";import"./index-BCEELo55.js";import"./template-KOM5R0ws.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./v4-CQkTLCs1.js";import"./template-CPGM6lN2.js";import"./repeat-wef4bzRs.js";import"./directive-helpers-AZ3A6LC6.js";function n(i){const t={h2:"h2",h3:"h3",p:"p",...e(),...i.components};return o.jsxs(o.Fragment,{children:[o.jsx(p,{of:r,title:"Docs"}),` +`,o.jsx(m,{of:r}),` +`,o.jsx(a,{of:r}),` +`,o.jsx(x,{}),` +`,o.jsx(c,{of:r}),` +`,o.jsx(t.h2,{id:"density-options",children:"Density options"}),` +`,o.jsx(t.p,{children:"Accordion has three density options and requires that you specify one of the density types: compact, regular, or spacious."}),` +`,o.jsx(t.h3,{id:"regular",children:"Regular"}),` +`,o.jsx(s,{of:h}),` +`,o.jsx(t.h3,{id:"compact",children:"Compact"}),` +`,o.jsx(s,{of:j}),` +`,o.jsx(t.h3,{id:"spacious",children:"Spacious"}),` +`,o.jsx(s,{of:u}),` +`,o.jsx(t.h2,{id:"properties",children:"Properties"}),` +`,o.jsx(d,{})]})}function K(i={}){const{wrapper:t}={...e(),...i.components};return t?o.jsx(t,{...i,children:o.jsx(n,{...i})}):n(i)}export{K as default}; diff --git a/preview/assets/accordion.stories-Rp5ZIRPk.js b/preview/assets/accordion.stories-Rp5ZIRPk.js new file mode 100644 index 0000000000..f45991e3ba --- /dev/null +++ b/preview/assets/accordion.stories-Rp5ZIRPk.js @@ -0,0 +1,45 @@ +import{T as u}from"./template-DWHQE7dh.js";import{d as T}from"./index-BCEELo55.js";import{Template as b}from"./template-KOM5R0ws.js";import{T as F}from"./template-CPGM6lN2.js";import"./decorator-BgHd6ynM.js";import{V as H}from"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import{x as I}from"./lit-html-CSEOSYGt.js";import{a as D}from"./class-map-hgg4E7s1.js";import{o as P}from"./if-defined-Bu2tv67N.js";import{c as O}from"./repeat-wef4bzRs.js";import{o as k}from"./style-map-WzOQOdw5.js";const W="5.2.0",E=({heading:r,content:a,rootClass:e="spectrum-Accordion-item",id:i,idx:n=0,isDisabled:c=!1,isOpen:p=!1,iconSize:h="m",customStyles:A={},customClasses:m=[],onclick:g}={},s={})=>I` +
    ({...d,[t]:!0}),{})})} + id=${P(i)} + style=${k(A)} + role="presentation" + @click=${g} + > + +

    + + + + ${F({iconName:p?"ChevronDown":"ChevronRight",setName:"ui",size:h,customClasses:[`${e}Indicator`]},s)} + +

    + +
    + ${a} +
    +
    + `,f=({rootClass:r="spectrum-Accordion",size:a="m",density:e="regular",items:i=[],id:n,disableAll:c=!1,collapseAll:p=!1,customClasses:h=[],customStyles:A={}}={},m={})=>{const{updateArgs:g}=m;return I` +
    ({...s,[d]:!0}),{})})}" + id=${P(n)} + role="region" + style=${k(A)} + > + ${O(Array.from(i.keys()),(s,d)=>{const t=i.get(s);return E({...t,rootClass:`${r}-item`,heading:s,idx:d,iconSize:`${a}`,isDisabled:t.isDisabled||c,isOpen:p===!0?!1:t.isOpen,onclick:()=>{if(t.isDisabled)return;const S=new Map(i);S.set(s,{...t,isOpen:!t.isOpen}),g({items:S})}},m)})} +
    + `},_=H({Template:f,testData:[{testHeading:"Standard",customStyles:{maxInlineSize:"500px"}},{testHeading:"Compact",density:"compact",collapseAll:!0,customStyles:{maxInlineSize:"500px"},withStates:!1},{testHeading:"Spacious",density:"spacious",collapseAll:!0,customStyles:{maxInlineSize:"500px"},withStates:!1},{testHeading:"Text wrapping",collapseAll:!0,customStyles:{maxInlineSize:"300px"},withStates:!1}],stateData:[{testHeading:"Disabled",disableAll:!0}]}),z={title:"Accordion",component:"Accordion",argTypes:{items:{table:{disable:!0}},size:{name:"Size",type:{name:"string",required:!0},table:{type:{summary:"string"},category:"Component"},options:["s","m","l","xl"],control:"select"},disableAll:{name:"Disable all items",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"State"},control:"boolean"},collapseAll:{name:"Collapse all items",type:{name:"boolean"},table:{disable:!0,type:{summary:"boolean"}},control:"boolean"},density:{name:"Density",type:{name:"string",required:!0},table:{type:{summary:"string"},category:"Component"},options:["compact","regular","spacious"],control:"select"}},args:{rootClass:"spectrum-Accordion",size:"m",density:"regular",collapseAll:!1,disableAll:!1},parameters:{actions:{handles:["click .spectrum-Accordion-item"]},chromatic:{disableSnapshot:!0},componentVersion:W,docs:{description:{component:"The accordion element contains a list of items that can be expanded or collapsed to reveal additional content or information associated with each item. There can be zero expanded items, exactly one expanded item, or more than one item expanded at a time, depending on the configuration. This list of items is defined by child accordion item elements."}}}},y=new Map([["Are any Adobe products free?",{content:"Yes, Adobe offers free products like Acrobat Reader, Aero, Fill & Sign, Photoshop Express, and Adobe Scan. You can also use Creative Cloud Express, Fresco, and Lightroom Mobile for free, with the option of making in-app purchases.",isDisabled:!0}],["Are Adobe products worth it?",{content:b({semantics:"body",content:["Adobe makes some of the most widely used software applications in the world, many of which are industry standard. Get started with free apps like Adobe Acrobat Reader, Aero, Fill & Sign, Photoshop Express, and Adobe Scan. Or consider Creative Cloud, with plans starting at just US$9.99/mo. Every Adobe Creative Cloud plan includes perks like free stock images and fonts, collaboration tools, and cloud storage as well as regular feature updates to deliver the latest technology.",u({url:"https://www.adobe.com/creativecloud/plans.html",text:"Learn more about Adobe Creative Cloud plans and pricing."})]}),isOpen:!0}],["Which Adobe product is best for editing PDFs?",{content:b({semantics:"body",content:["You can edit PDFs with Adobe Acrobat, which is available in two editions: Standard and Pro. Acrobat Standard provides basic tools to create, edit, and sign PDFs on Windows devices. Acrobat Pro is the complete PDF solution with tools to edit, convert, and sign PDFs across web, mobile, and tablet, as well as on Windows and macOS computers. If you'd like to try before you buy, you can get a free 7-day trial of Acrobat Pro.",u({url:"https://www.adobe.com/acrobat.html",text:"Learn more about Acrobat."})]})}],["How many products does Adobe have?",{content:"Adobe offers nearly 100 products. Get creative with industry-standard apps like Adobe Photoshop, Illustrator InDesign, and Lightroom. Create, edit, and sign PDFs with Adobe Acrobat and Acrobat Sign. And deliver exceptional customer experiences with our marketing and commerce apps such as Adobe Experience Manager, Campaign, and Target.",isOpen:!0}],["How much do Adobe products cost?",{content:b({semantics:"body",content:["Creative Cloud plans start at US$9.99/mo. You can subscribe to specific Single App plans or get 20+ creative apps and services in the Creative Cloud All Apps plan.",u({url:"https://www.adobe.com/creativecloud/plans.html",text:"Explore Creative Cloud plans."})]})}],["What are the most popular Adobe products?",{content:"Adobe makes some of the most widely used software in the world, including popular apps like Acrobat Pro, Photoshop, Illustrator, InDesign, Lightroom, and Premiere Pro."}],["How can I get a student discount on Adobe products?",{content:b({semantics:"body",content:[`Students who provide a valid school-issued email address at purchase are eligible to save over 60% on Creative Cloud All Apps, which includes 20+ apps such as Photoshop, Illustrator, InDesign, Acrobat Pro, and more. ${u({url:"https://www.adobe.com/creativecloud/buy/students.html",text:"Learn more about Creative Cloud for students."})}`]})}]]),l=_.bind({});l.args={items:y};l.parameters={chromatic:{disableSnapshot:!1}};const o=l.bind({});o.args=l.args;o.tags=["!autodocs","!dev","test"];o.parameters={chromatic:{forcedColors:"active",modes:T}};const w=f.bind({});w.tags=["autodocs","!dev"];w.args={items:y,density:"compact"};const v=f.bind({});v.tags=["autodocs","!dev"];v.args={items:y,density:"spacious"};var $,C,x;o.parameters={...o.parameters,docs:{...($=o.parameters)==null?void 0:$.docs,source:{originalSource:"AccordionGroup.bind({})",...(x=(C=o.parameters)==null?void 0:C.docs)==null?void 0:x.source}}};const L=["Default","WithForcedColors","Compact","Spacious"],Q=Object.freeze(Object.defineProperty({__proto__:null,Compact:w,Default:l,Spacious:v,WithForcedColors:o,__namedExportsOrder:L,default:z},Symbol.toStringTag,{value:"Module"}));export{Q as A,w as C,l as D,v as S}; diff --git a/preview/assets/actionbar-B0E0jX70.css b/preview/assets/actionbar-B0E0jX70.css new file mode 100644 index 0000000000..b0936be347 --- /dev/null +++ b/preview/assets/actionbar-B0E0jX70.css @@ -0,0 +1 @@ +.spectrum-ActionBar{--spectrum-actionbar-height:var(--spectrum-action-bar-height);--spectrum-actionbar-corner-radius:var(--spectrum-corner-radius-100);--spectrum-actionbar-item-counter-font-size:var(--spectrum-font-size-100);--spectrum-actionbar-item-counter-line-height:var(--spectrum-line-height-100);--spectrum-actionbar-item-counter-color:var(--spectrum-neutral-content-color-default);--spectrum-actionbar-popover-background-color:var(--spectrum-gray-50);--spectrum-actionbar-popover-border-color:var(--spectrum-gray-400);--spectrum-actionbar-emphasized-background-color:var(--spectrum-informative-background-color-default);--spectrum-actionbar-emphasized-item-counter-color:var(--spectrum-white);--spectrum-actionbar-spacing-outer-edge:var(--spectrum-spacing-300);--spectrum-actionbar-spacing-close-button-top:var(--spectrum-spacing-100);--spectrum-actionbar-spacing-close-button-start:var(--spectrum-spacing-100);--spectrum-actionbar-spacing-close-button-end:var(--spectrum-spacing-75);--spectrum-actionbar-spacing-item-counter-top:var(--spectrum-action-bar-top-to-item-counter);--spectrum-actionbar-spacing-item-counter-end:var(--spectrum-spacing-400);--spectrum-actionbar-spacing-action-group-top:var(--spectrum-spacing-100);--spectrum-actionbar-spacing-action-group-end:var(--spectrum-spacing-100);--spectrum-actionbar-shadow-horizontal:var(--spectrum-drop-shadow-x);--spectrum-actionbar-shadow-vertical:var(--spectrum-drop-shadow-y);--spectrum-actionbar-shadow-blur:var(--spectrum-drop-shadow-blur);--spectrum-actionbar-shadow-color:var(--spectrum-drop-shadow-color)}.spectrum-ActionBar:lang(ja),.spectrum-ActionBar:lang(ko),.spectrum-ActionBar:lang(zh){--spectrum-actionbar-item-counter-line-height-cjk:var(--spectrum-cjk-line-height-100)}@media (forced-colors:active){.spectrum-ActionBar,.spectrum-ActionBar--emphasized .spectrum-ActionBar-popover{--highcontrast-actionbar-popover-border-color:CanvasText}}.spectrum-ActionBar{padding:0 var(--mod-actionbar-spacing-outer-edge,var(--spectrum-actionbar-spacing-outer-edge));inset-block-end:0;z-index:1;box-sizing:border-box;pointer-events:none;block-size:0;opacity:0}.spectrum-ActionBar.is-open{block-size:calc(var(--mod-actionbar-spacing-outer-edge, var(--spectrum-actionbar-spacing-outer-edge)) + var(--mod-actionbar-height, var(--spectrum-actionbar-height)));opacity:1}.spectrum-ActionBar .spectrum-ActionBar-popover{block-size:var(--mod-actionbar-height,var(--spectrum-actionbar-height));box-sizing:border-box;inline-size:100%;margin:auto;padding-block-start:0;padding-block-end:0;position:relative;border-radius:var(--mod-actionbar-corner-radius,var(--spectrum-actionbar-corner-radius));border-color:var(--highcontrast-actionbar-popover-border-color,var(--mod-actionbar-popover-border-color,var(--spectrum-actionbar-popover-border-color)));background-color:var(--mod-actionbar-popover-background-color,var(--spectrum-actionbar-popover-background-color));filter:drop-shadow(var(--mod-actionbar-shadow-horizontal,var(--spectrum-actionbar-shadow-horizontal)) var(--mod-actionbar-shadow-vertical,var(--spectrum-actionbar-shadow-vertical)) var(--mod-actionbar-shadow-blur,var(--spectrum-actionbar-shadow-blur)) var(--mod-actionbar-shadow-color,var(--spectrum-actionbar-shadow-color)));pointer-events:auto;display:flex;flex-direction:row}.spectrum-ActionBar .spectrum-CloseButton{margin-inline-start:var(--mod-actionbar-spacing-close-button-start,var(--spectrum-actionbar-spacing-close-button-start));margin-inline-end:var(--mod-actionbar-spacing-close-button-end,var(--spectrum-actionbar-spacing-close-button-end));margin-block-start:var(--mod-actionbar-spacing-close-button-top,var(--spectrum-actionbar-spacing-close-button-top));flex-shrink:0}.spectrum-ActionBar .spectrum-FieldLabel{margin-inline-end:var(--mod-actionbar-spacing-item-counter-end,var(--spectrum-actionbar-spacing-item-counter-end));margin-block-start:var(--mod-actionbar-spacing-item-counter-top,var(--spectrum-actionbar-spacing-item-counter-top));padding:0;font-size:var(--mod-actionbar-item-counter-font-size,var(--spectrum-actionbar-item-counter-font-size));color:var(--mod-actionbar-item-counter-color,var(--spectrum-actionbar-item-counter-color));line-height:var(--mod-actionbar-item-counter-line-height,var(--spectrum-actionbar-item-counter-line-height))}.spectrum-ActionBar .spectrum-FieldLabel:lang(ja),.spectrum-ActionBar .spectrum-FieldLabel:lang(ko),.spectrum-ActionBar .spectrum-FieldLabel:lang(zh){line-height:var(--mod-actionbar-item-counter-line-height-cjk,var(--spectrum-actionbar-item-counter-line-height-cjk))}.spectrum-ActionBar .spectrum-ActionGroup{margin-inline-end:var(--mod-actionbar-spacing-action-group-end,var(--spectrum-actionbar-spacing-action-group-end));margin-block-start:var(--mod-actionbar-spacing-action-group-top,var(--spectrum-actionbar-spacing-action-group-top));margin-inline-start:auto}.spectrum-ActionBar--emphasized .spectrum-ActionBar-popover{filter:none;background-color:var(--mod-actionbar-emphasized-background-color,var(--spectrum-actionbar-emphasized-background-color));border-color:transparent}.spectrum-ActionBar--emphasized .spectrum-FieldLabel{color:var(--mod-actionbar-emphasized-item-counter-color,var(--spectrum-actionbar-emphasized-item-counter-color))}.spectrum-ActionBar--sticky{inset-inline-start:0;inset-inline-end:0;position:sticky}.spectrum-ActionBar--fixed{position:fixed}.spectrum-ActionBar--flexible .spectrum-ActionBar-popover{inline-size:auto} diff --git a/preview/assets/actionbar-BoTRIogp.js b/preview/assets/actionbar-BoTRIogp.js new file mode 100644 index 0000000000..af0d5a4bca --- /dev/null +++ b/preview/assets/actionbar-BoTRIogp.js @@ -0,0 +1,20 @@ +import{j as o}from"./jsx-runtime-Dt6rJ0KA.js";import{u as s}from"./index-Bra5jxz-.js";import{M as p,T as m,d as a,D as d,C as e,A as c}from"./index-BM7n-yQ0.js";import{C as l}from"./component-details-AR4Dr-Ts.js";import{A as r,D as h,E as x}from"./actionbar.stories-OQByPDnU.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-BosuxZz1.js";import"./index-DMJx5Vcm.js";import"./index-DrFu-skq.js";import"./actionbutton.stories-Cv1fxUof.js";import"./icon.stories-Bo78Wakl.js";import"./index-BCEELo55.js";import"./template-KOM5R0ws.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./class-map-hgg4E7s1.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./v4-CQkTLCs1.js";import"./if-defined-Bu2tv67N.js";import"./capitalize-D60SaZ2R.js";import"./template-CPGM6lN2.js";import"./states-DzrSzBKQ.js";import"./template-DIlrrHbQ.js";import"./lowerCase-CIorQk0G.js";import"./_createCompounder-DY9ZW94_.js";import"./closebutton.stories-0an1aDgd.js";import"./template-C_jYuYr1.js";import"./upperCase-0eNr0WW7.js";import"./popover.stories-BLFIcmnt.js";import"./template-BjLmTyxc.js";import"./template-COskcie3.js";import"./template-B1916WdB.js";import"./template-CJ4Fnp25.js";import"./template-BCTcm72_.js";import"./template-TtTUqDuW.js";import"./template-CcRtxD4p.js";import"./template-Ognew2En.js";import"./template-BHo8nrqo.js";import"./template-Dik_OYpW.js";function n(i){const t={a:"a",code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...s(),...i.components};return o.jsxs(o.Fragment,{children:[o.jsx(p,{of:r,title:"Docs"}),` +`,o.jsx(m,{of:r}),` +`,o.jsx(a,{of:r}),` +`,o.jsx(l,{}),` +`,o.jsx(d,{of:r}),` +`,o.jsx(t.h2,{id:"standard",children:"Standard"}),` +`,o.jsx(e,{of:h}),` +`,o.jsx(t.h2,{id:"emphasized",children:"Emphasized"}),` +`,o.jsx(e,{of:x}),` +`,o.jsx(t.h2,{id:"behavioral-variants",children:"Behavioral variants"}),` +`,o.jsxs(t.ul,{children:[` +`,o.jsx(t.li,{children:"Standard - Action bars fill the width of their container."}),` +`,o.jsx(t.li,{children:"Flexible - Action bars fit the width of their content."}),` +`,o.jsx(t.li,{children:"Sticky - Action bars will sit on top of content until dismissed."}),` +`]}),` +`,o.jsx(t.h2,{id:"popover-dependency",children:"Popover Dependency"}),` +`,o.jsxs(t.p,{children:["Action bar requires Popover, which is nested within Action bar. Action bar background, border, and corner radius are applied to the nested Popover component and can be overriden by Action bar using ",o.jsx(t.code,{children:"--mod-*"})," prefixed custom properties. A ",o.jsx(t.a,{href:"https://github.com/adobe/spectrum-css/blob/main/components/actionbar/metadata/mods.md",rel:"nofollow",children:"list of the properties"})," can be found in the repo."]}),` +`,o.jsx(t.h2,{id:"properties",children:"Properties"}),` +`,o.jsx(t.p,{children:"The component accepts the following inputs (properties):"}),` +`,o.jsx(c,{})]})}function eo(i={}){const{wrapper:t}={...s(),...i.components};return t?o.jsx(t,{...i,children:o.jsx(n,{...i})}):n(i)}export{eo as default}; diff --git a/preview/assets/actionbar.stories-OQByPDnU.js b/preview/assets/actionbar.stories-OQByPDnU.js new file mode 100644 index 0000000000..4ac869f8fb --- /dev/null +++ b/preview/assets/actionbar.stories-OQByPDnU.js @@ -0,0 +1,7 @@ +import S from"./actionbutton.stories-Cv1fxUof.js";import w from"./closebutton.stories-0an1aDgd.js";import B from"./popover.stories-BLFIcmnt.js";import{d as C}from"./index-BCEELo55.js";import{i as D}from"./states-DzrSzBKQ.js";import{T as z}from"./template-BHo8nrqo.js";import{T as _}from"./template-C_jYuYr1.js";import{T as M}from"./template-Dik_OYpW.js";import{T as O}from"./template-Ognew2En.js";import"./decorator-BgHd6ynM.js";import{V}from"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import{x as k}from"./lit-html-CSEOSYGt.js";import{a as P}from"./class-map-hgg4E7s1.js";const G="8.1.1",x=({rootClass:t="spectrum-ActionBar",size:a="m",isOpen:i=!0,isEmphasized:s=!1,isSticky:A=!1,isFixed:$=!1,isFlexible:v=!1,customClasses:T=[]})=>k` +
    ({...E,[F]:!0}),{})})} + > + ${O({customClasses:[`${t}-popover`],isOpen:i,content:[_({label:"Clear selection",staticColor:s?"white":void 0}),M({size:"s",label:"2 Selected"}),z({size:"m",areQuiet:!0,staticColor:s?"white":void 0,content:[{iconName:"Edit",label:"Edit"},{iconName:"Copy",label:"Copy"},{iconName:"Delete",label:"Delete"}]})]})} +
    +`,N=V({Template:x,testData:[{},{testHeading:"Emphasized",isEmphasized:!0}],stateData:[]});var n,l,m,c,p,d,u,b,f;const W={title:"Action bar",component:"ActionBar",argTypes:{isOpen:D,isEmphasized:{name:"Emphasized styling",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Component"},control:"boolean"},isSticky:{name:"Sticky",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Advanced"},control:"boolean"},isFixed:{name:"Fixed position",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Advanced"},control:"boolean"},isFlexible:{name:"Flexible width",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Advanced"},control:"boolean"}},args:{rootClass:"spectrum-ActionBar",isOpen:!0,isEmphasized:!1,isSticky:!1,isFixed:!1,isFlexible:!1},parameters:{actions:{handles:[...((m=(l=(n=B)==null?void 0:n.parameters)==null?void 0:l.actions)==null?void 0:m.handles)??[],...((d=(p=(c=w)==null?void 0:c.parameters)==null?void 0:p.actions)==null?void 0:d.handles)??[],...((f=(b=(u=S)==null?void 0:u.parameters)==null?void 0:b.actions)==null?void 0:f.handles)??[]]},design:{type:"figma",url:"https://www.figma.com/file/MPtRIVRzPp2VHiEplwXL2X/S-%2F-Manual?node-id=465%3A3127&t=xbooxCWItOFgG2xM-1"},componentVersion:G,docs:{description:{component:"The action bar component is a floating full width bar that appears upon selection."}}}},o=N.bind({});o.args={};const e=o.bind({});e.args=o.args;e.tags=["!autodocs","!dev","test"];e.parameters={chromatic:{forcedColors:"active",modes:C}};const r=x.bind({});r.tags=["autodocs","!dev"];r.args={isEmphasized:!0};r.parameters={chromatic:{disableSnapshot:!0}};var y,h,g;e.parameters={...e.parameters,docs:{...(y=e.parameters)==null?void 0:y.docs,source:{originalSource:"ActionBarGroup.bind({})",...(g=(h=e.parameters)==null?void 0:h.docs)==null?void 0:g.source}}};const j=["Default","WithForcedColors","Emphasized"],ae=Object.freeze(Object.defineProperty({__proto__:null,Default:o,Emphasized:r,WithForcedColors:e,__namedExportsOrder:j,default:W},Symbol.toStringTag,{value:"Module"}));export{ae as A,o as D,r as E}; diff --git a/preview/assets/actionbutton.stories-Cv1fxUof.js b/preview/assets/actionbutton.stories-Cv1fxUof.js new file mode 100644 index 0000000000..0d96ae351e --- /dev/null +++ b/preview/assets/actionbutton.stories-Cv1fxUof.js @@ -0,0 +1 @@ +import{c as A}from"./icon.stories-Bo78Wakl.js";import{d as s}from"./index-BCEELo55.js";import{a as v,b as S,c as B,d as C}from"./states-DzrSzBKQ.js";import{A as z,a as y}from"./template-DIlrrHbQ.js";import"./template-KOM5R0ws.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./class-map-hgg4E7s1.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./v4-CQkTLCs1.js";import"./if-defined-Bu2tv67N.js";import"./capitalize-D60SaZ2R.js";import"./template-CPGM6lN2.js";import"./lowerCase-CIorQk0G.js";import"./_createCompounder-DY9ZW94_.js";const E="6.1.1";var r,i;const J={title:"Action button",component:"ActionButton",argTypes:{size:{name:"Size",type:{name:"string",required:!0},table:{type:{summary:"string"},category:"Component"},options:["xs","s","m","l","xl"],control:"select"},iconName:{...((i=(r=A)==null?void 0:r.argTypes)==null?void 0:i.iconName)??{},if:!1},label:{name:"Label",type:{name:"string"},table:{type:{summary:"string"},category:"Content"},control:{type:"text"}},isQuiet:{name:"Quiet styling",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Component"},control:"boolean"},isEmphasized:{name:"Emphasized styling",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Component"},control:"boolean",if:{arg:"isSelected",truthy:!0}},isDisabled:v,isSelected:S,isHovered:B,isFocused:C,isActive:{name:"Active",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"State"},control:"boolean"},hideLabel:{name:"Hide label",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Advanced"},control:"boolean"},hasPopup:{name:"Has popup",description:"If the button triggers a popup action, this should be set to reflect the type of element that pops-up.",type:{name:"string"},table:{type:{summary:"string"},category:"Accessibility"},control:"select",options:["true","menu","listbox","tree","grid","dialog","false"]},staticColor:{name:"Static color",type:{name:"string"},table:{type:{summary:"string"},category:"Advanced"},options:["white","black"],control:"select"}},args:{rootClass:"spectrum-ActionButton",size:"m",isQuiet:!1,isEmphasized:!1,hasPopup:"false",isActive:!1,isFocused:!1,isHovered:!1,isSelected:!1,isDisabled:!1,iconName:"More",label:""},parameters:{actions:{handles:["click .spectrum-ActionButton:not([disabled])"]},componentVersion:E,docs:{description:{component:"The action button component represents an action a user can take."}}}},a=z.bind({});a.args={label:"More"};const h=y.bind({});h.tags=["autodocs","!dev"];h.args={label:"More",isEmphasized:!0};const f=y.bind({});f.tags=["autodocs","!dev"];f.args={label:"More",isQuiet:!0};const e=a.bind({});e.tags=["!autodocs","!dev","test"];e.args={...a.args,staticColor:"black"};e.parameters={chromatic:{modes:s}};const t=a.bind({});t.tags=["!autodocs","!dev","test"];t.args={...a.args,staticColor:"white"};t.parameters={chromatic:{modes:s}};const o=a.bind({});o.args=a.args;o.tags=["!autodocs","!dev","test"];o.parameters={chromatic:{forcedColors:"active",modes:s}};var n,c,m;e.parameters={...e.parameters,docs:{...(n=e.parameters)==null?void 0:n.docs,source:{originalSource:"ActionButtonGroup.bind({})",...(m=(c=e.parameters)==null?void 0:c.docs)==null?void 0:m.source}}};var p,l,d;t.parameters={...t.parameters,docs:{...(p=t.parameters)==null?void 0:p.docs,source:{originalSource:"ActionButtonGroup.bind({})",...(d=(l=t.parameters)==null?void 0:l.docs)==null?void 0:d.source}}};var u,b,g;o.parameters={...o.parameters,docs:{...(u=o.parameters)==null?void 0:u.docs,source:{originalSource:"ActionButtonGroup.bind({})",...(g=(b=o.parameters)==null?void 0:b.docs)==null?void 0:g.source}}};const K=["Default","Emphasized","Quiet","StaticBlack","StaticWhite","WithForcedColors"];export{a as Default,h as Emphasized,f as Quiet,e as StaticBlack,t as StaticWhite,o as WithForcedColors,K as __namedExportsOrder,J as default}; diff --git a/preview/assets/actiongroup.stories-Bu-viuWj.js b/preview/assets/actiongroup.stories-Bu-viuWj.js new file mode 100644 index 0000000000..70351c38cc --- /dev/null +++ b/preview/assets/actiongroup.stories-Bu-viuWj.js @@ -0,0 +1 @@ +import o from"./actionbutton.stories-Cv1fxUof.js";import{d as p}from"./index-BCEELo55.js";import{A as c}from"./template-BHo8nrqo.js";import"./icon.stories-Bo78Wakl.js";import"./template-KOM5R0ws.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./class-map-hgg4E7s1.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./v4-CQkTLCs1.js";import"./if-defined-Bu2tv67N.js";import"./capitalize-D60SaZ2R.js";import"./template-CPGM6lN2.js";import"./states-DzrSzBKQ.js";import"./template-DIlrrHbQ.js";import"./lowerCase-CIorQk0G.js";import"./_createCompounder-DY9ZW94_.js";const l="5.1.0";var a,r,i;const V={title:"Action group",component:"ActionGroup",argTypes:{areQuiet:o.argTypes.isQuiet,areEmphasized:o.argTypes.isEmphasized,staticColor:o.argTypes.staticColor,content:{table:{disable:!0}},size:{name:"Size",type:{name:"string",required:!0},table:{type:{summary:"string"},category:"Component"},options:["xs","s","m","l","xl"],control:"select"},vertical:{name:"Vertical layout",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Component"},control:"boolean"},compact:{name:"Compact layout",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Component"},control:"boolean"},justified:{name:"Justified",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Advanced"},control:"boolean"}},args:{rootClass:"spectrum-ActionGroup",size:"m",areQuiet:o.args.isQuiet,areEmphasized:o.args.isEmphasized,staticColor:o.args.staticColor,vertical:!1,compact:!1,justified:!1},parameters:{actions:{handles:[...((i=(r=(a=o)==null?void 0:a.parameters)==null?void 0:r.actions)==null?void 0:i.handles)??[]]},componentVersion:l,docs:{description:{component:"The action group component is a collection of action buttons."}}}},t=c.bind({});t.args={content:[{iconName:"Edit",label:"Edit"},{iconName:"Copy",label:"Copy"},{iconName:"Delete",label:"Delete",isSelected:!0}]};const e=t.bind({});e.args=t.args;e.tags=["!autodocs","!dev","test"];e.parameters={chromatic:{forcedColors:"active",modes:p}};var s,n,m;e.parameters={...e.parameters,docs:{...(s=e.parameters)==null?void 0:s.docs,source:{originalSource:"ActionGroups.bind({})",...(m=(n=e.parameters)==null?void 0:n.docs)==null?void 0:m.source}}};const W=["Default","WithForcedColors"];export{t as Default,e as WithForcedColors,W as __namedExportsOrder,V as default}; diff --git a/preview/assets/actionmenu.stories-D6aF7Rcy.js b/preview/assets/actionmenu.stories-D6aF7Rcy.js new file mode 100644 index 0000000000..7d6702fcaf --- /dev/null +++ b/preview/assets/actionmenu.stories-D6aF7Rcy.js @@ -0,0 +1 @@ +import h from"./actionbutton.stories-Cv1fxUof.js";import{c as f}from"./icon.stories-Bo78Wakl.js";import y from"./menu.stories-BXJIuiuy.js";import o from"./popover.stories-BLFIcmnt.js";import{d as A}from"./index-BCEELo55.js";import{i as T}from"./states-DzrSzBKQ.js";import{A as M}from"./template-DVnOcH8Q.js";import"./template-DIlrrHbQ.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./class-map-hgg4E7s1.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./v4-CQkTLCs1.js";import"./if-defined-Bu2tv67N.js";import"./template-CPGM6lN2.js";import"./capitalize-D60SaZ2R.js";import"./lowerCase-CIorQk0G.js";import"./_createCompounder-DY9ZW94_.js";import"./template-KOM5R0ws.js";import"./template-BjLmTyxc.js";import"./template-COskcie3.js";import"./template-B1916WdB.js";import"./upperCase-0eNr0WW7.js";import"./template-CJ4Fnp25.js";import"./template-BCTcm72_.js";import"./template-TtTUqDuW.js";import"./template-C_jYuYr1.js";import"./template-CcRtxD4p.js";import"./template-Ognew2En.js";const v="6.1.1";var r,i,a,s,n,p,m,c,l,d;const rt={title:"Action menu",component:"ActionMenu",argTypes:{withTip:o.argTypes.withTip,position:o.argTypes.position,isOpen:T,iconName:{...((i=(r=f)==null?void 0:r.argTypes)==null?void 0:i.iconName)??{},if:!1},label:{name:"Label",type:{name:"string"},table:{type:{summary:"string"},category:"Content"},control:{type:"text"}},items:{table:{disable:!0}},id:{table:{disable:!0}},testId:{table:{disable:!0}},triggerId:{table:{disable:!0}}},args:{isOpen:!1,withTip:o.args.withTip,position:o.args.position},parameters:{docs:{story:{height:"250px"},description:{component:"The action menu component is an action button with a popover. The `is-selected` class should be applied to the button when the menu is open. Note that the accessibility roles are different for an action menu compared to a normal menu."}},actions:{handles:[...((n=(s=(a=o)==null?void 0:a.parameters)==null?void 0:s.actions)==null?void 0:n.handles)??[],...((c=(m=(p=h)==null?void 0:p.parameters)==null?void 0:m.actions)==null?void 0:c.handles)??[],...((d=(l=y.parameters)==null?void 0:l.actions)==null?void 0:d.handles)??[]]},componentVersion:v}},e=M.bind({});e.args={isOpen:!0,id:"popover-0",triggerId:"trigger-0",position:"bottom",label:"More actions",iconName:"More",items:[{label:"Action 1"},{label:"Action 2"},{label:"Action 3"},{label:"Action 4"}]};const t=e.bind({});t.args=e.args;t.tags=["!autodocs","!dev","test"];t.parameters={chromatic:{forcedColors:"active",modes:A}};var u,b,g;t.parameters={...t.parameters,docs:{...(u=t.parameters)==null?void 0:u.docs,source:{originalSource:"ActionMenuGroup.bind({})",...(g=(b=t.parameters)==null?void 0:b.docs)==null?void 0:g.source}}};const it=["Default","WithForcedColors"];export{e as Default,t as WithForcedColors,it as __namedExportsOrder,rt as default}; diff --git a/preview/assets/alertbanner-WTMOLZjx.css b/preview/assets/alertbanner-WTMOLZjx.css new file mode 100644 index 0000000000..eccb71236f --- /dev/null +++ b/preview/assets/alertbanner-WTMOLZjx.css @@ -0,0 +1 @@ +.spectrum{--system-spectrum-alertbanner-spectrum-alert-banner-netural-background:var(--spectrum-neutral-subdued-background-color-default)}.spectrum--express{--system-spectrum-alertbanner-spectrum-alert-banner-netural-background:var(--spectrum-neutral-background-color-default)}.spectrum-AlertBanner{--spectrum-alert-banner-min-height:var(--spectrum-alert-banner-minimum-height);--spectrum-alert-banner-max-inline-size:var(--spectrum-alert-banner-width);--spectrum-alert-banner-size:auto;--spectrum-alert-banner-font-size:var(--spectrum-font-size-100);--spectrum-alert-banner-icon-size:var(--spectrum-workflow-icon-size-100);--spectrum-alert-banner-icon-to-text:var(--spectrum-text-to-visual-300);--spectrum-alert-banner-start-edge:var(--spectrum-spacing-300);--spectrum-alert-banner-text-to-button-horizontal:var(--spectrum-spacing-300);--spectrum-alert-banner-text-to-divider:var(--spectrum-spacing-300);--spectrum-alert-banner-top-icon:var(--spectrum-alert-banner-top-to-workflow-icon);--spectrum-alert-banner-top-text:var(--spectrum-alert-banner-top-to-text);--spectrum-alert-banner-bottom-text:var(--spectrum-alert-banner-bottom-to-text);--spectrum-alert-banner-informative-background:var(--spectrum-informative-background-color-default);--spectrum-alert-banner-negative-background:var(--spectrum-negative-background-color-default);--spectrum-alert-banner-font-color:var(--spectrum-white);--mod-divider-vertical-margin:var(--mod-alert-banner-edge-to-divider,var(--spectrum-alert-banner-edge-to-divider));--mod-divider-vertical-height:auto;--mod-divider-vertical-align:stretch;--mod-button-margin-block:var(--mod-alert-banner-edge-to-button,var(--spectrum-alert-banner-edge-to-button));--mod-button-margin-right:var(--mod-alert-banner-text-to-divider,var(--spectrum-alert-banner-text-to-divider));--mod-button-margin-left:auto;--mod-closebutton-margin-inline:var(--mod-alert-banner-close-button-spacing,var(--spectrum-alert-banner-close-button-spacing));--mod-closebutton-margin-top:var(--mod-alert-banner-close-button-spacing,var(--spectrum-alert-banner-close-button-spacing));--mod-closebutton-align-self:flex-start;display:none;justify-content:space-between;inline-size:var(--mod-alert-banner-size,var(--spectrum-alert-banner-size));max-inline-size:var(--mod-alert-banner-max-inline-size,var(--spectrum-alert-banner-max-inline-size));min-block-size:var(--mod-alert-banner-min-height,var(--spectrum-alert-banner-min-height));font-size:var(--mod-alert-banner-font-size,var(--spectrum-alert-banner-font-size));color:var(--mod-alert-banner-font-color,var(--spectrum-alert-banner-font-color));background-color:var(--mod-alert-banner-netural-background,var(--spectrum-alert-banner-netural-background));border:var(--highcontrast-alert-banner-border-width,0) solid var(--highcontrast-alert-banner-border-color,transparent)}.spectrum-AlertBanner.is-open{display:flex}.spectrum-AlertBanner--info{background-color:var(--mod-alert-banner-informative-background,var(--spectrum-alert-banner-informative-background))}.spectrum-AlertBanner--negative{background-color:var(--mod-alert-banner-negative-background,var(--spectrum-alert-banner-negative-background))}.spectrum-AlertBanner-body{inline-size:100%;display:flex;gap:max(calc(var(--mod-alert-banner-text-to-button-vertical, var(--spectrum-alert-banner-text-to-button-vertical)) - var(--mod-alert-banner-edge-to-button, var(--spectrum-alert-banner-edge-to-button))),0px);flex-wrap:wrap;align-items:center;margin-inline-start:var(--mod-alert-banner-start-edge,var(--spectrum-alert-banner-start-edge))}.spectrum-AlertBanner-content{display:flex}.spectrum-AlertBanner-end{display:flex;align-items:center}.spectrum-AlertBanner-icon{inline-size:var(--mod-alert-banner-icon-size,var(--spectrum-alert-banner-icon-size));block-size:var(--mod-alert-banner-icon-size,var(--spectrum-alert-banner-icon-size));margin-block-start:var(--mod-alert-banner-top-icon,var(--spectrum-alert-banner-top-icon));margin-inline-end:var(--mod-alert-banner-icon-to-text,var(--spectrum-alert-banner-icon-to-text));flex-shrink:0}.spectrum-AlertBanner-text{margin-block-start:var(--mod-alert-banner-top-text,var(--spectrum-alert-banner-top-text));margin-block-end:var(--mod-alert-banner-bottom-text,var(--spectrum-alert-banner-bottom-text));margin-inline-end:var(--mod-alert-banner-text-to-button-horizontal,var(--spectrum-alert-banner-text-to-button-horizontal))}@media (forced-colors:active){.spectrum-AlertBanner{--highcontrast-alert-banner-border-color:CanvasText;--highcontrast-alert-banner-border-width:var(--spectrum-border-width-100)}}.spectrum-AlertBanner{--spectrum-alert-banner-netural-background:var(--system-spectrum-alertbanner-spectrum-alert-banner-netural-background)} diff --git a/preview/assets/alertbanner.stories-Bx3raaRk.js b/preview/assets/alertbanner.stories-Bx3raaRk.js new file mode 100644 index 0000000000..e9748c631d --- /dev/null +++ b/preview/assets/alertbanner.stories-Bx3raaRk.js @@ -0,0 +1,19 @@ +import{d as $}from"./index-BCEELo55.js";import{i as h}from"./states-DzrSzBKQ.js";import{T as v}from"./template-Dx6uDptV.js";import{T as b}from"./template-C_jYuYr1.js";import{T as A}from"./template-B1916WdB.js";import{T}from"./template-CPGM6lN2.js";import"./decorator-BgHd6ynM.js";import{V as B}from"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import{x as p}from"./lit-html-CSEOSYGt.js";import{a as r}from"./class-map-hgg4E7s1.js";import{n as i}from"./when-BR7zwNJC.js";import"./template-wvnt2Vdc.js";import"./if-defined-Bu2tv67N.js";import"./style-map-WzOQOdw5.js";import"./capitalize-D60SaZ2R.js";import"./lowerCase-CIorQk0G.js";import"./_createCompounder-DY9ZW94_.js";import"./upperCase-0eNr0WW7.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./v4-CQkTLCs1.js";const x="2.2.0",w=({rootClass:e="spectrum-AlertBanner",isOpen:d=!0,text:m,variant:o,hasActionButton:g,customClasses:f=[]}={},a={})=>p` +
    ({...n,[y]:!0}),{})})} + > +
    +
    + ${i(["negative","info"].some(n=>o===n),()=>T({iconName:o==="negative"?"Alert":"Info",customClasses:[`${e}-icon`]},a))} + ${i(m,()=>p` +

    ${m}

    + `)} +
    + ${i(g,()=>v({size:"m",staticColor:"white",treatment:"outline",label:"Action"},a))} +
    +
    + ${A({vertical:!0,size:"s",tag:"div"})} + ${b({size:"m",staticColor:"white",onclick},a)} +
    +
    + `,C=B({Template:w,testData:[{testHeading:"Neutral"},{testHeading:"Informational",text:"Your trial will expire in 3 days. Once it expires your files will be saved and ready for you to open again once you have purcahsed the software.",variant:"info",hasActionButton:!1},{testHeading:"Warning",text:"Connection interupted. Check your network to continue.",variant:"negative",hasActionButton:!0},{testHeading:"Closed",isOpen:!1}]}),Q={title:"Alert banner",component:"AlertBanner",argTypes:{isOpen:h,text:{name:"Text",type:{name:"string",required:!0},table:{type:{summary:"string"},disable:!1,category:"Content"},control:{type:"text"}},variant:{name:"Background color variants",type:{name:"string"},table:{type:{summary:"string"},category:"Component"},options:["neutral","info","negative"],control:"radio"},hasActionButton:{name:"Display action button",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Content"},control:"boolean"}},args:{rootClass:"spectrum-AlertBanner",isOpen:!1,variant:"neutral"},parameters:{actions:{handles:["click .spectrum-AlertBanner button"]},componentVersion:x,docs:{description:{component:"The alert banner show pressing and high-signal messages, such as system alerts. They're meant to be noticed and prompt users to take action."}}}},s=C.bind({});s.args={isOpen:!0,hasActionButton:!0,text:"Your trial has expired"};const t=s.bind({});t.args=s.args;t.tags=["!autodocs","!dev","test"];t.parameters={chromatic:{forcedColors:"active",modes:$}};var c,l,u;t.parameters={...t.parameters,docs:{...(c=t.parameters)==null?void 0:c.docs,source:{originalSource:"AlertBannerGroup.bind({})",...(u=(l=t.parameters)==null?void 0:l.docs)==null?void 0:u.source}}};const R=["Default","WithForcedColors"];export{s as Default,t as WithForcedColors,R as __namedExportsOrder,Q as default}; diff --git a/preview/assets/alertdialog-Cn1LLL4u.css b/preview/assets/alertdialog-Cn1LLL4u.css new file mode 100644 index 0000000000..58481a2129 --- /dev/null +++ b/preview/assets/alertdialog-Cn1LLL4u.css @@ -0,0 +1 @@ +.spectrum-AlertDialog{--spectrum-alert-dialog-min-width:var(--spectrum-alert-dialog-minimum-width);--spectrum-alert-dialog-max-width:var(--spectrum-alert-dialog-maximum-width);--spectrum-alert-dialog-icon-size:var(--spectrum-workflow-icon-size-100);--spectrum-alert-dialog-warning-icon-color:var(--spectrum-notice-visual-color);--spectrum-alert-dialog-error-icon-color:var(--spectrum-negative-visual-color);--spectrum-alert-dialog-title-font-family:var(--spectrum-sans-font-family-stack);--spectrum-alert-dialog-title-font-weight:var(--spectrum-heading-sans-serif-font-weight);--spectrum-alert-dialog-title-font-style:var(--spectrum-heading-sans-serif-font-style);--spectrum-alert-dialog-title-font-size:var(--spectrum-alert-dialog-title-size);--spectrum-alert-dialog-title-line-height:var(--spectrum-heading-line-height);--spectrum-alert-dialog-title-color:var(--spectrum-heading-color);--spectrum-alert-dialog-body-font-family:var(--spectrum-sans-font-family-stack);--spectrum-alert-dialog-body-font-weight:var(--spectrum-body-sans-serif-font-weight);--spectrum-alert-dialog-body-font-style:var(--spectrum-body-sans-serif-font-style);--spectrum-alert-dialog-body-font-size:var(--spectrum-alert-dialog-description-size);--spectrum-alert-dialog-body-line-height:var(--spectrum-line-height-100);--spectrum-alert-dialog-body-color:var(--spectrum-body-color);--spectrum-alert-dialog-title-to-divider:var(--spectrum-spacing-200);--spectrum-alert-dialog-divider-to-description:var(--spectrum-spacing-300);--spectrum-alert-dialog-title-to-icon:var(--spectrum-spacing-300);--mod-buttongroup-justify-content:flex-end;display:flex;box-sizing:border-box;inline-size:-moz-fit-content;inline-size:fit-content;min-inline-size:var(--mod-alert-dialog-min-width,var(--spectrum-alert-dialog-min-width));max-inline-size:var(--mod-alert-dialog-max-width,var(--spectrum-alert-dialog-max-width));max-block-size:inherit;outline:none;padding:var(--mod-alert-dialog-padding,var(--spectrum-alert-dialog-padding))}.spectrum-AlertDialog .spectrum-Icon{inline-size:var(--mod-alert-dialog-icon-size,var(--spectrum-alert-dialog-icon-size));block-size:var(--mod-alert-dialog-icon-size,var(--spectrum-alert-dialog-icon-size));margin-inline-start:var(--mod-alert-dialog-title-to-icon,var(--spectrum-alert-dialog-title-to-icon));flex-shrink:0}.spectrum-AlertDialog--warning{--mod-icon-color:var(--mod-alert-dialog-warning-icon-color,var(--spectrum-alert-dialog-warning-icon-color))}.spectrum-AlertDialog--error{--mod-icon-color:var(--mod-alert-dialog-error-icon-color,var(--spectrum-alert-dialog-error-icon-color))}.spectrum-AlertDialog-grid{display:grid}.spectrum-AlertDialog-header{display:flex;justify-content:space-between;align-items:baseline}.spectrum-AlertDialog-heading{font-family:var(--mod-alert-dialog-title-font-family,var(--spectrum-alert-dialog-title-font-family));font-weight:var(--mod-alert-dialog-title-font-weight,var(--spectrum-alert-dialog-title-font-weight));font-style:var(--mod-alert-dialog-title-font-style,var(--spectrum-alert-dialog-title-font-style));font-size:var(--mod-alert-dialog-title-font-size,var(--spectrum-alert-dialog-title-font-size));line-height:var(--mod-alert-dialog-title-line-height,var(--spectrum-alert-dialog-title-line-height));color:var(--mod-alert-dialog-title-color,var(--spectrum-alert-dialog-title-color));margin:0;margin-block-end:var(--mod-alert-dialog-title-to-divider,var(--spectrum-alert-dialog-title-to-divider))}.spectrum-AlertDialog-content{font-family:var(--mod-alert-dialog-body-font-family,var(--spectrum-alert-dialog-body-font-family));font-weight:var(--mod-alert-dialog-body-font-weight,var(--spectrum-alert-dialog-body-font-weight));font-style:var(--mod-alert-dialog-body-font-style,var(--spectrum-alert-dialog-body-font-style));font-size:var(--mod-alert-dialog-body-font-size,var(--spectrum-alert-dialog-body-font-size));line-height:var(--mod-alert-dialog-body-line-height,var(--spectrum-alert-dialog-body-line-height));color:var(--mod-alert-dialog-body-color,var(--spectrum-alert-dialog-body-color));margin:0;margin-block-start:var(--mod-alert-dialog-divider-to-description,var(--spectrum-alert-dialog-divider-to-description));margin-block-end:var(--mod-alert-dialog-description-to-buttons,var(--spectrum-alert-dialog-description-to-buttons));overflow-y:auto;-webkit-overflow-scrolling:touch}@media (forced-colors:active){.spectrum-AlertDialog{border:solid}} diff --git a/preview/assets/alertdialog.stories-Dpf5YaRC.js b/preview/assets/alertdialog.stories-Dpf5YaRC.js new file mode 100644 index 0000000000..cafd4d9b1c --- /dev/null +++ b/preview/assets/alertdialog.stories-Dpf5YaRC.js @@ -0,0 +1,23 @@ +import{w as R}from"./decorator-BgHd6ynM.js";import{V}from"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import{x as U}from"./lit-html-CSEOSYGt.js";import{m as p,d as _}from"./index-BCEELo55.js";import{i as P}from"./states-DzrSzBKQ.js";import{T as z}from"./template-C3MtDh7C.js";import{T as F}from"./template-B1916WdB.js";import{T as G}from"./template-CPGM6lN2.js";import{T as M}from"./template-CcRtxD4p.js";import{a as B}from"./class-map-hgg4E7s1.js";import{o as H}from"./if-defined-Bu2tv67N.js";import{o as L}from"./style-map-WzOQOdw5.js";import{n as J}from"./when-BR7zwNJC.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./v4-CQkTLCs1.js";import"./template-Dx6uDptV.js";import"./template-wvnt2Vdc.js";import"./capitalize-D60SaZ2R.js";import"./lowerCase-CIorQk0G.js";import"./_createCompounder-DY9ZW94_.js";import"./template-KOM5R0ws.js";import"./upperCase-0eNr0WW7.js";const K="2.1.1",Q=({rootClass:e="spectrum-AlertDialog",heading:o,content:u,customClasses:c=[],buttons:l,variant:W,icon:O=!1,id:q,customStyles:E={}}={},I={})=>U` +
    ({...N,[j]:!0}),{})})} + id=${H(q)} + role="dialog" + tabindex="-1" + aria-modal="true" + aria-labelledby="dialog_label" + style=${L(E)} + > +
    +
    +

    ${o}

    + ${J(O,()=>G({size:"m",iconName:"Alert",customClasses:[`${e}-icon`]},I))} +
    + ${F({horizontal:!0,customClasses:[`${e}-divider`]})} +
    ${u}
    + ${z({items:l})} +
    +
    + `,s=({isOpen:e=!0,customModalStyles:o={},skipWrapper:u=!1,...c}={},l={})=>M({isOpen:e,content:[Q(c,l)],customStyles:o,skipWrapper:u},l),X=V({Template:s,testData:[{skipWrapper:!0},{skipWrapper:!0,variant:"warning",heading:"Unverified format",icon:!0,buttons:[{variant:"secondary",treatment:"outline",label:"Cancel"},{treatment:"outline",label:"Continue",variant:"primary"}],content:"This format has not been verified and may not be viewable for some users. Do you want to continue publishing?"},{skipWrapper:!0,variant:"error",heading:"Unable to share",icon:!0,buttons:[{variant:"secondary",treatment:"outline",label:"Cancel"},{treatment:"outline",label:"Continue",variant:"primary"}],content:"An error occured while sharing your project. Please verify the email address and try again."},{skipWrapper:!0,variant:"destructive",heading:"Delete 3 documents?",buttons:[{variant:"secondary",treatment:"outline",label:"Cancel"},{treatment:"fill",label:"Delete",variant:"negative"}],content:"Are you sure you want to delete the 3 selected documents?"},{skipWrapper:!0,variant:"information",heading:"Informative Dialog with a wrapping title text because the text is longer than the width of the alert dialog",buttons:[{variant:"secondary",treatment:"outline",label:"No, thanks"},{variant:"secondary",treatment:"outline",label:"Remind me later"},{variant:"primary",treatment:"outline",label:"Rate now"}],content:"If you enjoy our app, would you mind taking a moment to rate it?"}]}),ke={title:"Alert dialog",component:"AlertDialog",argTypes:{heading:{name:"Heading",type:{name:"string"},table:{type:{summary:"string"},category:"Content"},control:{type:"text"}},content:{name:"Content",type:{name:"string"},table:{type:{summary:"string"},category:"Content"},control:{type:"text"}},isOpen:P,variant:{table:{disable:!0}},buttons:{table:{disable:!0}}},args:{rootClass:"spectrum-AlertDialog",isOpen:!1,variant:"confirmation"},parameters:{actions:{handles:["click .spectrum-AlertDialog button"]},docs:{story:{height:"300px"},description:{component:"Alert dialogs display important information that users need to acknowledge. They appear over the interface and block further interactions until an action is selected."}},componentVersion:K},decorators:[R]},Y=Object.keys(p).reduce((e,o)=>(e[o]={...p[o],viewport:{height:"2000px"}},e),{}),m=X.bind({});m.args={isOpen:!0,heading:"Enable smart filters?",buttons:[{variant:"secondary",treatment:"outline",label:"Remind me later"},{treatment:"fill",label:"Enable",variant:"accent"}],content:"Smart filters are nondestructive and will preserve your original images."};m.parameters={chromatic:{modes:Y}};const t=m.bind({});t.args=m.args;t.tags=["!autodocs","!dev","test"];t.parameters={chromatic:{forcedColors:"active",modes:_}};const a=s.bind({});a.tags=["autodocs","!dev"];a.args={isOpen:!0,variant:"information",heading:"Informative Dialog with a wrapping title text because the text is longer than the width of the alert dialog",buttons:[{variant:"secondary",treatment:"outline",label:"No, thanks"},{variant:"secondary",treatment:"outline",label:"Remind me later"},{variant:"primary",treatment:"outline",label:"Rate now"}],content:"If you enjoy our app, would you mind taking a moment to rate it?"};a.parameters={chromatic:{disableSnapshot:!0}};const r=s.bind({});r.tags=["autodocs","!dev"];r.args={isOpen:!0,variant:"warning",heading:"Unverified format",icon:!0,buttons:[{variant:"secondary",treatment:"outline",label:"Cancel"},{treatment:"outline",label:"Continue",variant:"primary"}],content:"This format has not been verified and may not be viewable for some users. Do you want to continue publishing?"};r.parameters={chromatic:{disableSnapshot:!0}};const n=s.bind({});n.tags=["autodocs","!dev"];n.args={isOpen:!0,variant:"error",heading:"Unable to share",icon:!0,buttons:[{variant:"secondary",treatment:"outline",label:"Cancel"},{treatment:"outline",label:"Continue",variant:"primary"}],content:"An error occured while sharing your project. Please verify the email address and try again."};n.parameters={chromatic:{disableSnapshot:!0}};const i=s.bind({});i.tags=["autodocs","!dev"];i.args={isOpen:!0,variant:"destructive",heading:"Delete 3 documents?",buttons:[{variant:"secondary",treatment:"outline",label:"Cancel"},{treatment:"fill",label:"Delete",variant:"negative"}],content:"Are you sure you want to delete the 3 selected documents?"};i.parameters={chromatic:{disableSnapshot:!0}};const d=s.bind({});d.tags=["autodocs","!dev"];d.args={isOpen:!0,variant:"confirmation",heading:"Enable Smart Filters?",buttons:[{variant:"secondary",treatment:"outline",label:"Remind me later"},{treatment:"fill",label:"Enable",variant:"accent"}],content:"Smart filters are nondestructive and will preserve your original images. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ultrices est eu lacus interdum, vitae volutpat tortor laoreet. Phasellus consectetur erat quis massa congue, vel placerat ipsum hendrerit. Aenean eleifend augue quam, quis blandit lacus pretium eget. Aliquam aliquam fermentum nunc, sed dictum metus varius in. Suspendisse in nisl libero. Nulla egestas massa eget lectus ullamcorper placerat. Vivamus cursus, nunc quis pharetra auctor, eros mi tempus elit, sit amet placerat ipsum velit ut dolor. Nam sit amet eleifend erat. Duis sollicitudin orci sit amet tellus tincidunt, vel lobortis risus pellentesque. Integer viverra urna elementum metus dignissim placerat. Nulla posuere eros ipsum. Pellentesque viverra urna justo, eu ultricies nisl fermentum et. Vivamus tristique porttitor dictum.",customStyles:{"max-block-size":"275px"}};d.parameters={chromatic:{disableSnapshot:!0}};var g,h,b;t.parameters={...t.parameters,docs:{...(g=t.parameters)==null?void 0:g.docs,source:{originalSource:"AlertDialogGroup.bind({})",...(b=(h=t.parameters)==null?void 0:h.docs)==null?void 0:b.source}}};var v,f,y;a.parameters={...a.parameters,docs:{...(v=a.parameters)==null?void 0:v.docs,description:{story:`Information alert dialogs communicate important information that a user needs to acknowledge. Before using this kind of alert dialog, make sure it’s the appropriate communication channel for the message instead of a toast or a more lightweight messaging option. + +Note that an alert dialog can have a total of 3 buttons if the secondary outline button label is defined.`,...(y=(f=a.parameters)==null?void 0:f.docs)==null?void 0:y.description}}};var w,D,$;r.parameters={...r.parameters,docs:{...(w=r.parameters)==null?void 0:w.docs,description:{story:"Warning alert dialogs communicate important information to users in relation to an issue that needs to be acknowledged, but does not block the user from moving forward.",...($=(D=r.parameters)==null?void 0:D.docs)==null?void 0:$.description}}};var k,A,S;n.parameters={...n.parameters,docs:{...(k=n.parameters)==null?void 0:k.docs,description:{story:"Error alert dialogs communicate critical information about an issue that a user needs to acknowledge.",...(S=(A=n.parameters)==null?void 0:A.docs)==null?void 0:S.description}}};var x,T,C;i.parameters={...i.parameters,docs:{...(x=i.parameters)==null?void 0:x.docs,description:{story:"Destructive alert dialogs are for when a user needs to confirm an action that will impact their data or experience in a potentially negative way, such as deleting files or contacts.",...(C=(T=i.parameters)==null?void 0:T.docs)==null?void 0:C.description}}};const Ae=["Default","WithForcedColors","Information","Warning","Error","Destructive","Scroll"];export{m as Default,i as Destructive,n as Error,a as Information,d as Scroll,r as Warning,t as WithForcedColors,Ae as __namedExportsOrder,ke as default}; diff --git a/preview/assets/asset-CPK_Aj5K.js b/preview/assets/asset-CPK_Aj5K.js new file mode 100644 index 0000000000..83dc97229e --- /dev/null +++ b/preview/assets/asset-CPK_Aj5K.js @@ -0,0 +1,14 @@ +import{j as t}from"./jsx-runtime-Dt6rJ0KA.js";import{u as e}from"./index-Bra5jxz-.js";import{M as m,T as a,d as p,D as x,C as n,A as j}from"./index-BM7n-yQ0.js";import{C as l}from"./component-details-AR4Dr-Ts.js";import{A as i,D as d,F as f,a as c}from"./asset.stories-JhHAiT6c.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-BosuxZz1.js";import"./index-DMJx5Vcm.js";import"./index-DrFu-skq.js";import"./index-BCEELo55.js";import"./template-NGxmJUij.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./class-map-hgg4E7s1.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./v4-CQkTLCs1.js";import"./if-defined-Bu2tv67N.js";function s(r){const o={h2:"h2",h3:"h3",...e(),...r.components};return t.jsxs(t.Fragment,{children:[t.jsx(m,{of:i,title:"Docs"}),` +`,t.jsx(a,{of:i}),` +`,t.jsx(p,{of:i}),` +`,t.jsx(l,{}),` +`,t.jsx(x,{of:i}),` +`,t.jsx(o.h2,{id:"variants",children:"Variants"}),` +`,t.jsx(o.h3,{id:"image",children:"Image"}),` +`,t.jsx(n,{of:d}),` +`,t.jsx(o.h3,{id:"file",children:"File"}),` +`,t.jsx(n,{of:f}),` +`,t.jsx(o.h3,{id:"folder",children:"Folder"}),` +`,t.jsx(n,{of:c}),` +`,t.jsx(o.h2,{id:"properties",children:"Properties"}),` +`,t.jsx(j,{})]})}function V(r={}){const{wrapper:o}={...e(),...r.components};return o?t.jsx(o,{...r,children:t.jsx(s,{...r})}):s(r)}export{V as default}; diff --git a/preview/assets/asset.stories-JhHAiT6c.js b/preview/assets/asset.stories-JhHAiT6c.js new file mode 100644 index 0000000000..70a57ddb81 --- /dev/null +++ b/preview/assets/asset.stories-JhHAiT6c.js @@ -0,0 +1 @@ +import{d as l}from"./index-BCEELo55.js";import{A as p,T as i}from"./template-NGxmJUij.js";const c="5.1.1",m={title:"Asset",component:"Asset",argTypes:{preset:{name:"Preset asset types",type:{name:"string"},table:{type:{summary:"string"},category:"Component"},options:["folder","file","image"],control:"select"},image:{name:"Image",type:{name:"string"},table:{type:{summary:"string"},category:"Component"},control:{type:"file",accept:".svg,.png,.jpg,.jpeg,.webc"},if:{arg:"preset",eq:"image"}}},args:{rootClass:"spectrum-Asset"},parameters:{componentVersion:c,docs:{description:{component:"Use an asset element to visually represent a file, folder or image. File and folder representations will center themselves horizontally and vertically in the space provided to the element. Images will be contained to the element, growing to the element's full height while centering itself within the width provided."}}}},t=p.bind({});t.args={preset:"image",image:"example-ava.png"};const s=i.bind({});s.tags=["autodocs","!dev"];s.args={preset:"file"};s.parameters={chromatic:{disableSnapshot:!0}};const o=i.bind({});o.tags=["autodocs","!dev"];o.args={preset:"folder"};o.parameters={chromatic:{disableSnapshot:!0}};const e=t.bind({});e.args=t.args;e.tags=["!autodocs","!dev","test"];e.parameters={chromatic:{forcedColors:"active",modes:l}};var r,a,n;e.parameters={...e.parameters,docs:{...(r=e.parameters)==null?void 0:r.docs,source:{originalSource:"AssetGroup.bind({})",...(n=(a=e.parameters)==null?void 0:a.docs)==null?void 0:n.source}}};const d=["Default","File","Folder","WithForcedColors"],f=Object.freeze(Object.defineProperty({__proto__:null,Default:t,File:s,Folder:o,WithForcedColors:e,__namedExportsOrder:d,default:m},Symbol.toStringTag,{value:"Module"}));export{f as A,t as D,s as F,o as a}; diff --git a/preview/assets/assetcard-BazjOghQ.js b/preview/assets/assetcard-BazjOghQ.js new file mode 100644 index 0000000000..c26cdcfe2b --- /dev/null +++ b/preview/assets/assetcard-BazjOghQ.js @@ -0,0 +1,23 @@ +import{j as t}from"./jsx-runtime-Dt6rJ0KA.js";import{u as s}from"./index-Bra5jxz-.js";import{M as a,T as p,d as c,D as m,C as n,A as d}from"./index-BM7n-yQ0.js";import{C as x}from"./component-details-AR4Dr-Ts.js";import{A as i,P as h,L as l,S as j,O as f,H as C,C as u,a as g,D as S}from"./assetcard.stories-CVABog8W.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-BosuxZz1.js";import"./index-DMJx5Vcm.js";import"./index-DrFu-skq.js";import"./checkbox.stories-CliIIW-p.js";import"./index-BCEELo55.js";import"./states-DzrSzBKQ.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./template-COskcie3.js";import"./template-CPGM6lN2.js";import"./class-map-hgg4E7s1.js";import"./if-defined-Bu2tv67N.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./v4-CQkTLCs1.js";import"./capitalize-D60SaZ2R.js";import"./_createCompounder-DY9ZW94_.js";function r(e){const o={h2:"h2",...s(),...e.components};return t.jsxs(t.Fragment,{children:[t.jsx(a,{of:i,title:"Docs"}),` +`,t.jsx(p,{of:i}),` +`,t.jsx(c,{of:i}),` +`,t.jsx(x,{}),` +`,t.jsx(m,{of:i}),` +`,t.jsx(o.h2,{id:"portrait",children:"Portrait"}),` +`,t.jsx(n,{of:h}),` +`,t.jsx(o.h2,{id:"landscape",children:"Landscape"}),` +`,t.jsx(n,{of:l}),` +`,t.jsx(o.h2,{id:"square",children:"Square"}),` +`,t.jsx(n,{of:j}),` +`,t.jsx(o.h2,{id:"optional-content",children:"Optional Content"}),` +`,t.jsx(n,{of:f}),` +`,t.jsx(o.h2,{id:"highlight-selection",children:"Highlight Selection"}),` +`,t.jsx(n,{of:C}),` +`,t.jsx(o.h2,{id:"checkbox-selection",children:"Checkbox Selection"}),` +`,t.jsx(n,{of:u}),` +`,t.jsx(o.h2,{id:"ordered-selection",children:"Ordered Selection"}),` +`,t.jsx(n,{of:g}),` +`,t.jsx(o.h2,{id:"drop-target",children:"Drop Target"}),` +`,t.jsx(n,{of:S}),` +`,t.jsx(o.h2,{id:"properties",children:"Properties"}),` +`,t.jsx(d,{})]})}function Q(e={}){const{wrapper:o}={...s(),...e.components};return o?t.jsx(o,{...e,children:t.jsx(r,{...e})}):r(e)}export{Q as default}; diff --git a/preview/assets/assetcard-DPuysHZU.css b/preview/assets/assetcard-DPuysHZU.css new file mode 100644 index 0000000000..6df66c55ca --- /dev/null +++ b/preview/assets/assetcard-DPuysHZU.css @@ -0,0 +1 @@ +.spectrum{--system-spectrum-assetcard-overlay-background-color:rgba(27,127,245,.1)}.spectrum--express{--system-spectrum-assetcard-overlay-background-color:rgba(109,115,246,.2)}.spectrum-AssetCard{--spectrum-assetcard-asset-size:224px;--spectrum-assetcard-background-color:var(--spectrum-gray-200);--spectrum-assetcard-asset-animation-duration:var(--spectrum-animation-duration-100);--spectrum-assetcard-asset-container-border-size:1px;--spectrum-assetcard-header-margin-block-start:var(--spectrum-spacing-300);--spectrum-assetcard-border-radius:var(--spectrum-corner-radius-100);--spectrum-assetcard-border-color:transparent;--spectrum-assetcard-border-color-hover:var(--spectrum-gray-500);--spectrum-assetcard-border-color-down:var(--spectrum-gray-600);--spectrum-assetcard-focus-ring-gap:5px;--spectrum-assetcard-focus-indicator-thickness:var(--spectrum-focus-indicator-thickness);--spectrum-assetcard-selectionindicator-background-color-default:rgba(var(--spectrum-gray-100-rgb),.9);--spectrum-assetcard-selectionindicator-size:var(--spectrum-card-selection-background-size);--spectrum-assetcard-selectionindicator-border-radius:var(--spectrum-corner-radius-100);--spectrum-assetcard-selectionindicator-offset-y:4px;--spectrum-assetcard-selectionindicator-blur:6px;--spectrum-assetcard-selectionindicator-color:var(--spectrum-white);--spectrum-assetcard-selectionindicator-font-weight:var(--spectrum-bold-font-weight);--spectrum-assetcard-selectionindicator-font-size:var(--spectrum-font-size-400);--spectrum-assetcard-title-text-color:var(--spectrum-gray-900);--spectrum-assetcard-title-font-family:var(--spectrum-sans-font-family-stack);--spectrum-assetcard-title-font-weight:var(--spectrum-heading-sans-serif-font-weight);--spectrum-assetcard-title-font-style:var(--spectrum-default-font-style);--spectrum-assetcard-title-line-height:var(--spectrum-line-height-100);--spectrum-assetcard-title-letter-spacing:0;--spectrum-assetcard-header-content-text-color:var(--spectrum-gray-900);--spectrum-assetcard-header-content-font-family:var(--spectrum-sans-font-family-stack);--spectrum-assetcard-header-content-font-weight:var(--spectrum-body-sans-serif-font-weight);--spectrum-assetcard-header-content-font-style:var(--spectrum-default-font-style);--spectrum-assetcard-header-content-line-height:var(--spectrum-line-height-200);--spectrum-assetcard-header-content-letter-spacing:0;--spectrum-assetcard-content-text-color:var(--spectrum-gray-700);--spectrum-assetcard-content-font-family:var(--spectrum-sans-font-family-stack);--spectrum-assetcard-content-font-weight:var(--spectrum-body-sans-serif-font-weight);--spectrum-assetcard-content-font-style:var(--spectrum-default-font-style);--spectrum-assetcard-content-line-height:var(--spectrum-line-height-200);--spectrum-assetcard-content-letter-spacing:0;--spectrum-assetcard-content-margin-block-start:var(--spectrum-spacing-75)}.spectrum-AssetCard:lang(ja),.spectrum-AssetCard:lang(ko),.spectrum-AssetCard:lang(zh){--spectrum-assetcard-title-font-family:var(--spectrum-cjk-font-family-stack);--spectrum-assetcard-title-font-style:var(--spectrum-heading-cjk-font-style);--spectrum-assetcard-title-font-weight:var(--spectrum-heading-cjk-font-weight);--spectrum-assetcard-title-font-size:var(--spectrum-heading-cjk-size-xs);--spectrum-assetcard-title-line-height:var(--spectrum-heading-cjk-line-height);--spectrum-assetcard-title-letter-spacing:var(--spectrum-cjk-letter-spacing);--spectrum-assetcard-header-content-font-family:var(--spectrum-cjk-font-family-stack);--spectrum-assetcard-header-content-font-weight:var(--spectrum-body-cjk-font-weight);--spectrum-assetcard-header-content-line-height:var(--spectrum-body-cjk-line-height);--spectrum-assetcard-header-content-font-style:var(--spectrum-body-cjk-font-style);--spectrum-assetcard-header-content-letter-spacing:var(--spectrum-cjk-letter-spacing);--spectrum-assetcard-content-font-family:var(--spectrum-cjk-font-family-stack);--spectrum-assetcard-content-font-weight:var(--spectrum-body-cjk-font-weight);--spectrum-assetcard-content-line-height:var(--spectrum-body-cjk-line-height);--spectrum-assetcard-content-font-style:var(--spectrum-body-cjk-font-style);--spectrum-assetcard-content-letter-spacing:var(--spectrum-cjk-letter-spacing)}.spectrum-AssetCard{position:relative;display:flex;flex-direction:column;inline-size:var(--mod-assetcard-asset-size,var(--spectrum-assetcard-asset-size));cursor:pointer;outline:none}.spectrum-AssetCard.is-focus-visible .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-focus-visible .spectrum-Checkbox-box:before,.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-selected .spectrum-Checkbox-box:before,.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard:focus-visible .spectrum-Checkbox-box:before{border-color:var(--highcontrast-assetcard-border-color-hover,var(--mod-assetcard-border-color-hover,var(--spectrum-assetcard-border-color-hover)))}.spectrum-AssetCard.is-active .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard:active .spectrum-AssetCard-assetContainer:after{border-color:var(--mod-assetcard-border-color-down,var(--spectrum-assetcard-border-color-down))}.spectrum-AssetCard.is-focus-visible .spectrum-AssetCard-assetContainer:before,.spectrum-AssetCard:focus-visible .spectrum-AssetCard-assetContainer:before{opacity:1}.spectrum-AssetCard-assetContainer{position:relative;display:flex;align-items:center;justify-content:center;inline-size:var(--mod-assetcard-asset-size,var(--spectrum-assetcard-asset-size));block-size:var(--mod-assetcard-asset-size,var(--spectrum-assetcard-asset-size));border-radius:var(--mod-assetcard-border-radius,var(--spectrum-assetcard-border-radius));background-color:var(--mod-assetcard-background-color,var(--spectrum-assetcard-background-color));transition:border var(--mod-assetcard-asset-animation-duration,var(--spectrum-assetcard-asset-animation-duration)) ease-in-out}.spectrum-AssetCard-assetContainer:before{content:"";position:absolute;inset:calc(var(--mod-assetcard-focus-ring-gap, var(--spectrum-assetcard-focus-ring-gap))*-1);border:var(--mod-assetcard-focus-indicator-thickness,var(--spectrum-assetcard-focus-indicator-thickness)) solid var(--mod-assectcard-focus-indicator-color,var(--spectrum-assestcard-focus-indicator-color));border-radius:var(--mod-assetcard-focus-ring-border-radius,var(--spectrum-assetcard-focus-ring-border-radius));opacity:0;pointer-events:none;transition:opacity var(--mod-assetcard-asset-animation-duration,var(--spectrum-assetcard-asset-animation-duration)) ease-in-out}.spectrum-AssetCard-assetContainer:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;border:var(--mod-assetcard-asset-container-border-size,var(--spectrum-assetcard-asset-container-border-size)) solid var(--mod-assetcard-border-color,var(--spectrum-assetcard-border-color))}.spectrum-AssetCard-asset,.spectrum-AssetCard-assetContainer:after{border-radius:calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px)}.spectrum-AssetCard-asset{object-fit:contain;inline-size:100%;block-size:100%;transition:inline-size var(--mod-assetcard-asset-animation-duration,var(--spectrum-assetcard-asset-animation-duration)) ease-in-out,block-size var(--mod-assetcard-asset-animation-duration,var(--spectrum-assetcard-asset-animation-duration)) ease-in-out}.spectrum-AssetCard-header{display:flex;flex-direction:row;align-items:center;margin-block-start:var(--mod-assetcard-header-margin-block-start,var(--spectrum-assetcard-header-margin-block-start))}.spectrum-AssetCard-title{flex-grow:1;color:var(--mod-assetcard-title-text-color,var(--spectrum-assetcard-title-text-color));font-family:var(--mod-assetcard-title-font-family,var(--spectrum-assetcard-title-font-family));font-weight:var(--mod-assetcard-title-font-weight,var(--spectrum-assetcard-title-font-weight));font-size:var(--mod-assetcard-title-font-size,var(--spectrum-assetcard-title-font-size));line-height:var(--mod-assetcard-title-line-height,var(--spectrum-assetcard-title-line-height));font-style:var(--mod-assetcard-title-font-style,var(--spectrum-assetcard-title-font-style));letter-spacing:var(--mod-assetcard-title-letter-spacing,var(--spectrum-assetcard-title-letter-spacing))}.spectrum-AssetCard-headerContent{color:var(--mod-assetcard-header-content-text-color,var(--spectrum-assetcard-header-content-text-color));font-family:var(--mod-assetcard-header-content-font-family,var(--spectrum-assetcard-header-content-font-family));font-size:var(--mod-assetcard-header-content-font-size,var(--spectrum-assetcard-header-content-font-size));font-weight:var(--mod-assetcard-header-content-font-weight,var(--spectrum-assetcard-header-content-font-weight));line-height:var(--mod-assetcard-header-content-line-height,var(--spectrum-assetcard-header-content-line-height));font-style:var(--mod-assetcard-header-content-font-stlye,var(--spectrum-assetcard-header-content-font-style));letter-spacing:var(--mod-assetcard-header-content-letter-spacing,var(--spectrum-assetcard-header-content-letter-spacing))}.spectrum-AssetCard-content{flex-grow:1;margin-block-start:var(--mod-assetcard-content-margin-block-start,var(--spectrum-assetcard-content-margin-block-start));color:var(--mod-assetcard-content-text-color,var(--spectrum-assetcard-content-text-color));font-family:var(--mod-assetcard-content-font-family,var(--spectrum-assetcard-content-font-family));font-size:var(--mod-assetcard-content-font-size,var(--spectrum-assetcard-content-font-size));font-weight:var(--mod-assetcard-content-font-weight,var(--spectrum-assetcard-content-font-weight));line-height:var(--mod-assetcard-content-line-height,var(--spectrum-assetcard-content-line-height));font-style:var(--mod-assetcard-content-font-style,var(--spectrum-assetcard-content-font-style));letter-spacing:var(--mod-assetcard-content-letter-spacing,var(--spectrum-assetcard-content-letter-spacing))}.spectrum-AssetCard-selectionOverlay{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;background-color:initial;pointer-events:none;transition:background-color var(--mod-assetcard-asset-animation-duration,var(--spectrum-assetcard-asset-animation-duration)) ease-in-out;border-radius:calc(var(--mod-assetcard-border-radius, var(--spectrum-assetcard-border-radius)) - 1px)}.spectrum-AssetCard-selectionIndicator{position:absolute;z-index:2;inset-inline-start:var(--mod-assetcard-selectionindicator-margin,var(--spectrum-assetcard-selectionindicator-margin));inset-block-start:var(--mod-assetcard-selectionindicator-margin,var(--spectrum-assetcard-selectionindicator-margin));display:none;align-items:center;justify-content:center;inline-size:var(--mod-assetcard-selectionindicator-size,var(--spectrum-assetcard-selectionindicator-size));block-size:var(--mod-assetcard-selectionindicator-size,var(--spectrum-assetcard-selectionindicator-size));border-radius:var(--mod-assetcard-selectionindicator-border-radius,var(--spectrum-assetcard-selectionindicator-border-radius));box-shadow:0 var(--spectrum-assetcard-selectionindicator-offset-y) var(--spectrum-assetcard-selectionindicator-blur) #00000026;color:var(--highcontrast-assetcard-selectionindicator-color,var(--mod-assetcard-selectionindicator-color,var(--spectrum-assetcard-selectionindicator-color)));font-weight:var(--mod-assetcard-selectionindicator-font-weight,var(--spectrum-assetcard-selectionindicator-font-weight));font-size:var(--mod-assetcard-selectionindicator-font-size,var(--spectrum-assetcard-selectionindicator-font-size));transition:opacity var(--mod-assetcard-asset-animation-duration,var(--spectrum-assetcard-asset-animation-duration)) ease-in-out;background-color:initial}.spectrum-AssetCard-selectionOrder{line-height:0}.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-selected .spectrum-AssetCard-assetContainer:after{border-color:var(--highcontrast-assetcard-border-color-selected,var(--mod-assetcard-border-color-selected,var(--spectrum-assetcard-border-color-selected)))}.spectrum-AssetCard.is-drop-target .spectrum-AssetCard-selectionOverlay,.spectrum-AssetCard.is-selected .spectrum-AssetCard-selectionOverlay{background-color:var(--mod-assetcard-overlay-background-color,var(--spectrum-assetcard-overlay-background-color))}.spectrum-AssetCard.is-drop-target.is-active .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-drop-target:active .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-selected.is-active .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-selected:active .spectrum-AssetCard-assetContainer:after{border-color:var(--highcontrast-assectcard-border-color-selected-down,var(--mod-assectcard-border-color-selected-down,var(--spectrum-assetcard-border-color-selected-down)))}.spectrum-AssetCard--highlightSelection.is-selected .spectrum-AssetCard-asset{inline-size:90%;block-size:90%;border-radius:0}.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator{background-color:var(--mod-assetcard-selectionindicator-background-color-default,var(--spectrum-assetcard-selectionindicator-background-color-default))}.spectrum-AssetCard--checkboxSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-selectionOrder{display:none}.spectrum-AssetCard--checkboxSelection.is-focus-visible .spectrum-AssetCard-selectionIndicator,.spectrum-AssetCard--checkboxSelection.is-selected .spectrum-AssetCard-selectionIndicator,.spectrum-AssetCard--checkboxSelection:focus-visible .spectrum-AssetCard-selectionIndicator{display:flex;pointer-events:all}@media (hover:hover){.spectrum-AssetCard.is-hover .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-hover .spectrum-Checkbox-box:before,.spectrum-AssetCard:hover .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard:hover .spectrum-Checkbox-box:before{border-color:var(--highcontrast-assetcard-border-color-hover,var(--mod-assetcard-border-color-hover,var(--spectrum-assetcard-border-color-hover)))}.spectrum-AssetCard.is-drop-target.is-hover .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-drop-target:hover .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-selected.is-hover .spectrum-AssetCard-assetContainer:after,.spectrum-AssetCard.is-selected:hover .spectrum-AssetCard-assetContainer:after{border-color:var(--highcontrast-assetcard-border-color-selected-hover,var(--mod-assetcard-border-color-selected-hover,var(--spectrum-assetcard-border-color-selected-hover)))}.spectrum-AssetCard--checkboxSelection.is-hover .spectrum-AssetCard-selectionIndicator,.spectrum-AssetCard--checkboxSelection:hover .spectrum-AssetCard-selectionIndicator{display:flex;pointer-events:all}}.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator{background-color:var(--highcontrast-assetcard-selectionindicator-background-color-ordered,var(--mod-assetcard-selectionindicator-background-color-ordered,var(--spectrum-assetcard-selectionindicator-background-color-ordered)))}.spectrum-AssetCard--orderedSelection .spectrum-AssetCard-selectionIndicator .spectrum-AssetCard-checkbox{display:none}.spectrum-AssetCard--orderedSelection.is-selected .spectrum-AssetCard-selectionIndicator{display:flex;pointer-events:all}@media (forced-colors:active){.spectrum-AssetCard{--highcontrast-assetcard-border-color-hover:Highlight;--highcontrast-assetcard-border-color-selected:Highlight;--highcontrast-assetcard-border-color-selected-hover:Highlight;--highcontrast-assectcard-border-color-selected-down:Highlight;--highcontrast-assetcard-selectionindicator-background-color-ordered:Highlight;--highcontrast-assetcard-selectionindicator-color:SelectedItemText}.spectrum-AssetCard .spectrum-AssetCard-selectionOrder{forced-color-adjust:none}}.spectrum-AssetCard{--spectrum-assetcard-overlay-background-color:var(--system-spectrum-assetcard-overlay-background-color)} diff --git a/preview/assets/assetcard.stories-CVABog8W.js b/preview/assets/assetcard.stories-CVABog8W.js new file mode 100644 index 0000000000..6367b91668 --- /dev/null +++ b/preview/assets/assetcard.stories-CVABog8W.js @@ -0,0 +1,28 @@ +import z from"./checkbox.stories-CliIIW-p.js";import{d as M}from"./index-BCEELo55.js";import{b as E,d as W}from"./states-DzrSzBKQ.js";import{T as G}from"./template-COskcie3.js";import"./decorator-BgHd6ynM.js";import{V as w}from"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import{x as o}from"./lit-html-CSEOSYGt.js";import{a as B}from"./class-map-hgg4E7s1.js";import{o as C}from"./if-defined-Bu2tv67N.js";import{o as J}from"./style-map-WzOQOdw5.js";import{n}from"./when-BR7zwNJC.js";import{c as K}from"./capitalize-D60SaZ2R.js";import{c as N}from"./_createCompounder-DY9ZW94_.js";var I=N(function(e,s,r){return s=s.toLowerCase(),e+(r?K(s):s)});const Q="4.1.1",t=({rootClass:e="spectrum-AssetCard",image:s,exampleImage:r,title:i,headerContent:S,content:$=[],selection:f="checkbox",isSelected:y=!1,isFocused:O=!1,isDropTarget:q=!1,customClasses:_=[],customStyles:F={},id:L,testId:P}={},x={})=>{const{updateArgs:v}=x;return!s&&!r?(console.warn("AssetCard: image is required"),o``):(r&&(r=`example-card-${r}.png`),o` +
    ({...V,[j]:!0}),{})})} + id=${C(L)} + data-test-id=${C(P)} + style=${J(F)} + @click=${()=>{v({isSelected:!y})}} + @focusin=${()=>{v({isFocused:!0})}} + @focusout=${()=>{v({isFocused:!1})}} + tabindex="0" + role="figure" + > +
    + assetcard example image +
    +
    + ${n(i,()=>o`
    + ${n(i,()=>o`
    ${i}
    `)} + ${n(S,()=>o`
    + ${S} +
    `)} +
    `)} + ${n($,()=>o`
    ${$}
    `)} +
    + ${n(f==="checkbox",()=>G({size:"m",isEmphasized:!0,isChecked:y,ariaLabelledby:I(i),customClasses:[`${e}-checkbox`]},x),()=>o`
    1
    `)} +
    +
    + `)},R=w({Template:t,testData:[{testHeading:"Portrait",title:"Portrait asset",content:["Image"]},{testHeading:"Landscape",title:"Landscape asset",exampleImage:"landscape"},{testHeading:"Square asset",title:"Square asset",exampleImage:"square"},{testHeading:"Video asset",title:"MVI_0123.mp4",headerContent:"39:02",exampleImage:"square"},{testHeading:"With ordinal",title:"Ordered selection",selection:"ordered",exampleImage:"landscape"},{testHeading:"Highlighted selection",title:"Highlight selection",selection:"highlight"},{testHeading:"Drop target",title:"Drop target",selection:"highlight",isDropTarget:!0}],stateData:[{testHeading:"Selected",isSelected:!0},{testHeading:"Focused",isFocused:!0}]});var D,H;const U={title:"Asset card",component:"AssetCard",argTypes:{image:{name:"Image",type:{name:"string"},table:{type:{summary:"string"},category:"Component"},control:{type:"file",accept:".svg,.png,.jpg,.jpeg,.webc"}},exampleImage:{name:"Example images",type:{name:"string"},table:{type:{summary:"string"},category:"Component"},options:["landscape","portrait","square"],control:"select",if:{arg:"image",truthy:!1}},title:{name:"Title",type:{name:"string"},table:{type:{summary:"string"},category:"Content"},control:{type:"text"}},headerContent:{name:"Additional header content",type:{name:"string"},table:{type:{summary:"string"},category:"Content"},control:{type:"text"}},content:{table:{disable:!0}},selection:{name:"Selection styles",type:{name:"string"},table:{type:{summary:"string"},category:"Component",disable:!0},options:["checkbox","highlight","ordered"],control:"select"},isSelected:E,isFocused:W,isDropTarget:{name:"Drop target",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"Advanced"},control:"boolean"}},args:{rootClass:"spectrum-AssetCard",selection:"checkbox",isSelected:!1,isFocused:!1,isDropTarget:!1},parameters:{actions:{handles:[...((H=(D=z.parameters)==null?void 0:D.actions)==null?void 0:H.handles)??[]]},componentVersion:Q,docs:{description:{component:"The asset card component allows users to select and manage assets and their metadata in a grid."}}}},c=R.bind({});c.args={title:"Portrait asset",exampleImage:"portrait",content:["Image"]};const d=t.bind({});d.args={title:"Portrait asset",exampleImage:"portrait",content:["Image"]};d.tags=["autodocs","!dev"];d.parameters={chromatic:{disableSnapshot:!0}};const l=t.bind({});l.args={title:"Landscape asset",exampleImage:"landscape"};l.tags=["autodocs","!dev"];l.parameters={chromatic:{disableSnapshot:!0}};const m=t.bind({});m.args={title:"Square asset",exampleImage:"square"};m.tags=["autodocs","!dev"];m.parameters={chromatic:{disableSnapshot:!0}};const p=t.bind({});p.args={title:"MVI_0123.mp4",headerContent:"39:02",exampleImage:"square"};p.tags=["autodocs","!dev"];p.parameters={chromatic:{disableSnapshot:!0}};const g=t.bind({});g.args={title:"Highlight selection",selection:"highlight",exampleImage:"portrait",isSelected:!0};g.tags=["autodocs","!dev"];g.parameters={chromatic:{disableSnapshot:!0}};const u=t.bind({});u.args={title:"Checkbox selection",selection:"checkbox",exampleImage:"portrait",isSelected:!0};u.tags=["autodocs","!dev"];u.parameters={chromatic:{disableSnapshot:!0}};const h=t.bind({});h.args={title:"Ordered selection",selection:"ordered",isSelected:!0,exampleImage:"landscape"};h.tags=["autodocs","!dev"];h.parameters={chromatic:{disableSnapshot:!0}};const b=t.bind({});b.args={title:"Drop target",selection:"highlight",isDropTarget:!0,exampleImage:"portrait",isSelected:!0};b.tags=["autodocs","!dev"];b.parameters={chromatic:{disableSnapshot:!0}};const a=c.bind({});a.args=c.args;a.tags=["!autodocs","!dev","test"];a.parameters={chromatic:{forcedColors:"active",modes:M}};var T,k,A;a.parameters={...a.parameters,docs:{...(T=a.parameters)==null?void 0:T.docs,source:{originalSource:"AssetCardGroup.bind({})",...(A=(k=a.parameters)==null?void 0:k.docs)==null?void 0:A.source}}};const X=["Default","Portrait","Landscape","Square","OptionalContent","HighlightSelection","CheckboxSelection","OrderedSelection","DropTarget","WithForcedColors"],pe=Object.freeze(Object.defineProperty({__proto__:null,CheckboxSelection:u,Default:c,DropTarget:b,HighlightSelection:g,Landscape:l,OptionalContent:p,OrderedSelection:h,Portrait:d,Square:m,WithForcedColors:a,__namedExportsOrder:X,default:U},Symbol.toStringTag,{value:"Module"}));export{pe as A,u as C,b as D,g as H,l as L,p as O,d as P,m as S,h as a}; diff --git a/preview/assets/assetlist.stories-DXTFYF_S.js b/preview/assets/assetlist.stories-DXTFYF_S.js new file mode 100644 index 0000000000..574ac98cad --- /dev/null +++ b/preview/assets/assetlist.stories-DXTFYF_S.js @@ -0,0 +1 @@ +import l from"./checkbox.stories-CliIIW-p.js";import{d as c}from"./index-BCEELo55.js";import{A as m}from"./template-ChjtpR6H.js";import"./states-DzrSzBKQ.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./template-COskcie3.js";import"./template-CPGM6lN2.js";import"./class-map-hgg4E7s1.js";import"./if-defined-Bu2tv67N.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./utilities-BLLjuW2y.js";const d="6.1.1";var s,a;const y={title:"Asset list",component:"AssetList",argTypes:{items:{table:{disable:!0}}},args:{rootClass:"spectrum-AssetList"},parameters:{actions:{handles:[...((a=(s=l.parameters)==null?void 0:s.actions)==null?void 0:a.handles)??[]]},componentVersion:d,docs:{description:{component:"A selectable list of assets, often used inside of miller columns."}}}},t=m.bind({});t.args={items:[{image:"example-ava.png",label:"Shantanu.jpg",isSelectable:!0,ariaLabelledBy:"assetitemlabel-1",checkboxId:"checkbox-1"},{iconName:"Document",label:"Resource allocation documentation should truncate",isSelectable:!0,ariaLabelledby:"assetitemlabel-2",checkboxId:"checkbox-2"},{iconName:"Folder",label:"Front-end Projects",isSelectable:!0,isBranch:!0,isSelected:!0,ariaLabelledby:"assetitemlabel-3",checkboxId:"checkbox-3"},{iconName:"Folder",label:"Downloads",isSelectable:!0,isBranch:!0,isSelected:!1,isNavigated:!0,ariaLabelledby:"assetitemlabel-4",checkboxId:"checkbox-4"}]};const e=t.bind({});e.args=t.args;e.tags=["!autodocs","!dev","test"];e.parameters={chromatic:{forcedColors:"active",modes:c}};var o,r,i;e.parameters={...e.parameters,docs:{...(o=e.parameters)==null?void 0:o.docs,source:{originalSource:"AssetListGroup.bind({})",...(i=(r=e.parameters)==null?void 0:r.docs)==null?void 0:i.source}}};const C=["Default","WithForcedColors"];export{t as Default,e as WithForcedColors,C as __namedExportsOrder,y as default}; diff --git a/preview/assets/avatar-BeuTEN8E.js b/preview/assets/avatar-BeuTEN8E.js new file mode 100644 index 0000000000..509dba434b --- /dev/null +++ b/preview/assets/avatar-BeuTEN8E.js @@ -0,0 +1,28 @@ +import{j as e}from"./jsx-runtime-Dt6rJ0KA.js";import{u as a}from"./index-Bra5jxz-.js";import{M as o,T as l,d as c,D as d,C as r,A as m}from"./index-BM7n-yQ0.js";import{C as p}from"./component-details-AR4Dr-Ts.js";import{A as n,D as h,S as x,N as j,a as u}from"./avatar.stories-DWpOOsNA.js";import"./iframe-HOC10Tsl.js";import"../sb-preview/runtime.js";import"./_commonjsHelpers-BosuxZz1.js";import"./index-DMJx5Vcm.js";import"./index-DrFu-skq.js";import"./index-BCEELo55.js";import"./template-BGUoQQFE.js";import"./decorator-BgHd6ynM.js";import"./utilities-BLLjuW2y.js";import"./lit-element-D6xKo6I1.js";import"./lit-html-CSEOSYGt.js";import"./class-map-hgg4E7s1.js";import"./style-map-WzOQOdw5.js";import"./when-BR7zwNJC.js";import"./v4-CQkTLCs1.js";import"./template-KOM5R0ws.js";import"./if-defined-Bu2tv67N.js";import"./capitalize-D60SaZ2R.js";function t(i){const s={code:"code",h2:"h2",li:"li",p:"p",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(o,{of:n,title:"Docs"}),` +`,e.jsx(l,{of:n}),` +`,e.jsx(c,{of:n}),` +`,e.jsx(p,{}),` +`,e.jsx(d,{of:n}),` +`,e.jsx(r,{of:h}),` +`,e.jsx(s.h2,{id:"sizes",children:"Sizes"}),` +`,e.jsxs(s.p,{children:["Avatar is available in many sizes using the required ",e.jsx(s.code,{children:".spectrum-Avatar--size"})," class. The available size classes are:"]}),` +`,e.jsxs(s.ul,{children:[` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size50"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size75"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size100"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size200"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size300"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size400"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size500"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size600"})}),` +`,e.jsx(s.li,{children:e.jsx(s.code,{children:"spectrum-Avatar--size700"})}),` +`]}),` +`,e.jsx(r,{of:x}),` +`,e.jsx(s.h2,{id:"no-link",children:"No Link"}),` +`,e.jsxs(s.p,{children:["An avatar image is wrapped in a link that uses the ",e.jsx(s.code,{children:".spectrum-Avatar-link"})," class by default, however, an avatar may also be used without a link."]}),` +`,e.jsx(r,{of:j}),` +`,e.jsx(s.h2,{id:"disabled",children:"Disabled"}),` +`,e.jsx(s.p,{children:"When disabled, the avatar should only be used without a link."}),` +`,e.jsx(r,{of:u}),` +`,e.jsx(s.h2,{id:"properties",children:"Properties"}),` +`,e.jsx(m,{})]})}function R(i={}){const{wrapper:s}={...a(),...i.components};return s?e.jsx(s,{...i,children:e.jsx(t,{...i})}):t(i)}export{R as default}; diff --git a/preview/assets/avatar.stories-DWpOOsNA.js b/preview/assets/avatar.stories-DWpOOsNA.js new file mode 100644 index 0000000000..5e5029f768 --- /dev/null +++ b/preview/assets/avatar.stories-DWpOOsNA.js @@ -0,0 +1 @@ +import{d as p}from"./index-BCEELo55.js";import{A as l,a as c,T as m}from"./template-BGUoQQFE.js";const g="7.1.1",d={title:"Avatar",component:"Avatar",argTypes:{size:{name:"Size",type:{name:"string",required:!0},table:{type:{summary:"string"},category:"Component"},options:["50","75","100","200","300","400","500","600","700"],control:"select"},image:{name:"Image",type:{name:"string"},table:{type:{summary:"string"},category:"Component"},control:{type:"file",accept:".svg,.png,.jpg,.jpeg,.webc"}},altText:{name:"Alt text",type:{name:"string"},table:{type:{summary:"string"},category:"Component"},control:"text"},hasLink:{name:"Has Link",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"State"},control:"boolean",if:{arg:"isDisabled",truthy:!1}},isDisabled:{name:"Disabled",type:{name:"boolean"},table:{type:{summary:"boolean"},category:"State"},control:"boolean"}},args:{rootClass:"spectrum-Avatar",size:"700",isDisabled:!1,hasLink:!0},parameters:{componentVersion:g,docs:{description:{component:'An image representing a user. Note that a div wrapper is required for avatar:\n```\n
    \n Avatar\n
    \n```'}}}},e=l.bind({});e.args={image:"example-ava@2x.png",altText:"Avatar"};const t=c.bind({});t.tags=["autodocs","!dev"];t.parameters={chromatic:{disableSnapshot:!0}};t.args={image:"example-ava@2x.png",altText:"Avatar"};const s=m.bind({});s.tags=["autodocs","!dev"];s.args={hasLink:!1,image:"example-ava@2x.png",altText:"Avatar"};s.parameters={chromatic:{disableSnapshot:!0}};const r=m.bind({});r.tags=["autodocs","!dev"];r.args={hasLink:!1,isDisabled:!0,image:"example-ava@2x.png",altText:"Avatar"};r.parameters={chromatic:{disableSnapshot:!0}};const a=e.bind({});a.args=e.args;a.tags=["!autodocs","!dev","test"];a.parameters={chromatic:{forcedColors:"active",modes:p}};var o,n,i;a.parameters={...a.parameters,docs:{...(o=a.parameters)==null?void 0:o.docs,source:{originalSource:"AvatarGroup.bind({})",...(i=(n=a.parameters)==null?void 0:n.docs)==null?void 0:i.source}}};const u=["Default","SizeOptions","NoLink","Disabled","WithForcedColors"],y=Object.freeze(Object.defineProperty({__proto__:null,Default:e,Disabled:r,NoLink:s,SizeOptions:t,WithForcedColors:a,__namedExportsOrder:u,default:d},Symbol.toStringTag,{value:"Module"}));export{y as A,e as D,s as N,t as S,r as a}; diff --git a/preview/assets/axe-CCXVyZh5.js b/preview/assets/axe-CCXVyZh5.js new file mode 100644 index 0000000000..693d656265 --- /dev/null +++ b/preview/assets/axe-CCXVyZh5.js @@ -0,0 +1,30 @@ +import{g as rR,c as aR}from"./_commonjsHelpers-BosuxZz1.js";var Vu={exports:{}};/*! axe v4.9.0 + * Copyright (c) 2015 - 2024 Deque Systems, Inc. + * + * Your use of this Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This entire copyright notice must appear in every copy of this file you + * distribute or in any file that contains substantial portions of this source + * code. + */Vu.exports;(function(si){(function Hu(D){var Pt=D,L=D.document,w=w||{};w.version="4.9.0",O(si)==="object"&&si.exports&&typeof Hu.toString=="function"&&(w.source="("+Hu.toString()+')(typeof window === "object" ? window : this);',si.exports=w),typeof D.getComputedStyle=="function"&&(D.axe=w);function na(E){this.name="SupportError",this.cause=E.cause,this.message="`".concat(E.cause,"` - feature unsupported in your environment."),E.ruleId&&(this.ruleId=E.ruleId,this.message+=" Skipping ".concat(this.ruleId," rule.")),this.stack=new Error().stack}na.prototype=Object.create(Error.prototype),na.prototype.constructor=na;var Hp=["node"],$p=["relatedNodes"],Up=["node"],Gp=["variant"],Wp=["matches"],Yp=["chromium"],Kp=["noImplicit"],Xp=["noPresentational"],Zp=["precision","format","inGamut"],Jp=["space"],Qp=["algorithm"],em=["method"],tm=["maxDeltaE","deltaEMethod","steps","maxSteps"],rm=["node"],am=["environmentData"],nm=["environmentData"],im=["environmentData"],om=["environmentData"],um=["environmentData"];function sm(E){return Xu(E)||Yu(E)||Va(E)||Ku()}function lm(E,T,I){return T=Ju(T),T in E?Object.defineProperty(E,T,{value:I,enumerable:!0,configurable:!0,writable:!0}):E[T]=I,E}function cm(E,T){$u(E,T),T.add(E)}function Fr(E,T,I){$u(E,T),T.set(E,I)}function $u(E,T){if(T.has(E))throw new TypeError("Cannot initialize the same private elements twice on an object")}function dm(E,T,I){return Gu(T,E),I}function gt(E,T,I){var Z=Uu(T,E);return fm(E,Z,I),I}function fm(E,T,I){if(T.set)T.set.call(E,I);else{if(!T.writable)throw new TypeError("attempted to set read only private field");T.value=I}}function Tr(E,T){var I=Uu(T,E);return pm(E,I)}function Uu(E,T){return E.get(Gu(E,T))}function Gu(E,T,I){if(typeof E=="function"?E===T:E.has(T))return arguments.length<3?T:I;throw new TypeError("Private element is not present on this object")}function pm(E,T){return T.get?T.get.call(E):T.value}function mm(E,T,I){if(ci())return Reflect.construct.apply(null,arguments);var Z=[null];Z.push.apply(Z,T);var me=new(E.bind.apply(E,Z));return me}function li(E,T,I){return T=za(T),hm(E,ci()?Reflect.construct(T,I||[],za(E).constructor):T.apply(E,I))}function hm(E,T){if(T&&(O(T)==="object"||typeof T=="function"))return T;if(T!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Wu(E)}function Wu(E){if(E===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return E}function ci(){try{var E=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(ci=function(){return!!E})()}function za(E){return za=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(I){return I.__proto__||Object.getPrototypeOf(I)},za(E)}function di(E,T){if(typeof T!="function"&&T!==null)throw new TypeError("Super expression must either be null or a function");E.prototype=Object.create(T&&T.prototype,{constructor:{value:E,writable:!0,configurable:!0}}),Object.defineProperty(E,"prototype",{writable:!1}),T&&fi(E,T)}function fi(E,T){return fi=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(Z,me){return Z.__proto__=me,Z},fi(E,T)}function je(E,T){if(E==null)return{};var I=vm(E,T),Z,me;if(Object.getOwnPropertySymbols){var De=Object.getOwnPropertySymbols(E);for(me=0;me=0)&&Object.prototype.propertyIsEnumerable.call(E,Z)&&(I[Z]=E[Z])}return I}function vm(E,T){if(E==null)return{};var I={},Z=Object.keys(E),me,De;for(De=0;De=0)&&(I[me]=E[me]);return I}function ae(E){return bm(E)||Yu(E)||Va(E)||gm()}function gm(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Yu(E){if(typeof Symbol<"u"&&E[Symbol.iterator]!=null||E["@@iterator"]!=null)return Array.from(E)}function bm(E){if(Array.isArray(E))return pi(E)}function le(){return le=Object.assign?Object.assign.bind():function(E){for(var T=1;T=E.length?{done:!0}:{done:!1,value:E[Z++]}},e:function(at){throw at},f:me}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var De=!0,Ze=!1,At;return{s:function(){I=I.call(E)},n:function(){var at=I.next();return De=at.done,at},e:function(at){Ze=!0,At=at},f:function(){try{!De&&I.return!=null&&I.return()}finally{if(Ze)throw At}}}}function Va(E,T){if(E){if(typeof E=="string")return pi(E,T);var I=Object.prototype.toString.call(E).slice(8,-1);if(I==="Object"&&E.constructor&&(I=E.constructor.name),I==="Map"||I==="Set")return Array.from(E);if(I==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(I))return pi(E,T)}}function pi(E,T){(T==null||T>E.length)&&(T=E.length);for(var I=0,Z=new Array(T);I0?1:-1}}),km=x(function(e,t){t.exports=Tm()()?Math.sign:Rm()}),Sm=x(function(e,t){var r=km(),a=Math.abs,n=Math.floor;t.exports=function(i){return isNaN(i)?0:(i=Number(i),i===0||!isFinite(i)?i:r(i)*n(a(i)))}}),lr=x(function(e,t){var r=Sm(),a=Math.max;t.exports=function(n){return a(0,r(n))}}),ts=x(function(e,t){var r=lr();t.exports=function(a,n,i){var o;return isNaN(a)?(o=n,o>=0?i&&o?o-1:o:1):a===!1?!1:r(a)}}),Gt=x(function(e,t){t.exports=function(r){if(typeof r!="function")throw new TypeError(r+" is not a function");return r}}),Rr=x(function(e,t){var r=sr();t.exports=function(a){if(!r(a))throw new TypeError("Cannot use null or undefined");return a}}),Om=x(function(e,t){var r=Gt(),a=Rr(),n=Function.prototype.bind,i=Function.prototype.call,o=Object.keys,u=Object.prototype.propertyIsEnumerable;t.exports=function(s,c){return function(l,d){var f,p=arguments[2],m=arguments[3];return l=Object(a(l)),r(d),f=o(l),m&&f.sort(typeof m=="function"?n.call(m,l):void 0),typeof s!="function"&&(s=f[s]),i.call(s,f,function(h,v){return u.call(l,h)?i.call(d,p,l[h],h,l,v):c})}}}),Ha=x(function(e,t){t.exports=Om()("forEach")}),cr=x(function(){}),Mm=x(function(e,t){t.exports=function(){var r=Object.assign,a;return typeof r!="function"?!1:(a={foo:"raz"},r(a,{bar:"dwa"},{trzy:"trzy"}),a.foo+a.bar+a.trzy==="razdwatrzy")}}),Nm=x(function(e,t){t.exports=function(){try{return Object.keys("primitive"),!0}catch{return!1}}}),Im=x(function(e,t){var r=sr(),a=Object.keys;t.exports=function(n){return a(r(n)?Object(n):n)}}),Pm=x(function(e,t){t.exports=Nm()()?Object.keys:Im()}),Lm=x(function(e,t){var r=Pm(),a=Rr(),n=Math.max;t.exports=function(i,o){var u,s,c=n(arguments.length,2),l;for(i=Object(a(i)),l=function(f){try{i[f]=o[f]}catch(p){u||(u=p)}},s=1;s-1}}),Gm=x(function(e,t){t.exports=$m()()?String.prototype.contains:Um()}),dr=x(function(e,t){var r=is(),a=Hm(),n=rs(),i=es(),o=Gm(),u=t.exports=function(s,c){var l,d,f,p,m;return arguments.length<2||typeof s!="string"?(p=c,c=s,s=null):p=arguments[2],r(s)?(l=o.call(s,"c"),d=o.call(s,"e"),f=o.call(s,"w")):(l=f=!0,d=!1),m={value:c,configurable:l,enumerable:d,writable:f},p?n(i(p),m):m};u.gs=function(s,c,l){var d,f,p,m;return typeof s!="string"?(p=l,l=c,c=s,s=null):p=arguments[3],r(c)?a(c)?r(l)?a(l)||(p=l,l=void 0):l=void 0:(p=c,c=l=void 0):c=void 0,r(s)?(d=o.call(s,"c"),f=o.call(s,"e")):(d=!0,f=!1),m={get:c,set:l,configurable:d,enumerable:f},p?n(i(p),m):m}}),Wm=x(function(e,t){var r=dr(),a=Gt(),n=Function.prototype.apply,i=Function.prototype.call,o=Object.create,u=Object.defineProperty,s=Object.defineProperties,c=Object.prototype.hasOwnProperty,l={configurable:!0,enumerable:!1,writable:!0},d,f,p,m,h,v,g;d=function(y,_){var A;return a(_),c.call(this,"__ee__")?A=this.__ee__:(A=l.value=o(null),u(this,"__ee__",l),l.value=null),A[y]?O(A[y])==="object"?A[y].push(_):A[y]=[A[y],_]:A[y]=_,this},f=function(y,_){var A,R;return a(_),R=this,d.call(this,y,A=function(){p.call(R,y,A),n.call(_,this,arguments)}),A.__eeOnceListener__=_,this},p=function(y,_){var A,R,S,q;if(a(_),!c.call(this,"__ee__"))return this;if(A=this.__ee__,!A[y])return this;if(R=A[y],O(R)==="object")for(q=0;S=R[q];++q)(S===_||S.__eeOnceListener__===_)&&(R.length===2?A[y]=R[q?0:1]:R.splice(q,1));else(R===_||R.__eeOnceListener__===_)&&delete A[y];return this},m=function(y){var _,A,R,S,q;if(c.call(this,"__ee__")&&(S=this.__ee__[y],!!S))if(O(S)==="object"){for(A=arguments.length,q=new Array(A-1),_=1;_"u"?"undefined":O(globalThis))!=="object"||!globalThis?!1:globalThis.Array===Array}}),Xm=x(function(e,t){var r=function(){if((typeof self>"u"?"undefined":O(self))==="object"&&self)return self;if((typeof D>"u"?"undefined":O(D))==="object"&&D)return D;throw new Error("Unable to resolve global `this`")};t.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch{return r()}try{return __global__||r()}finally{delete Object.prototype.__global__}}()}),$a=x(function(e,t){t.exports=Km()()?globalThis:Xm()}),Zm=x(function(e,t){var r=$a(),a={object:!0,symbol:!0};t.exports=function(){var n=r.Symbol,i;if(typeof n!="function")return!1;i=n("test symbol");try{String(i)}catch{return!1}return!(!a[O(n.iterator)]||!a[O(n.toPrimitive)]||!a[O(n.toStringTag)])}}),Jm=x(function(e,t){t.exports=function(r){return r?O(r)==="symbol"?!0:!r.constructor||r.constructor.name!=="Symbol"?!1:r[r.constructor.toStringTag]==="Symbol":!1}}),os=x(function(e,t){var r=Jm();t.exports=function(a){if(!r(a))throw new TypeError(a+" is not a symbol");return a}}),Qm=x(function(e,t){var r=dr(),a=Object.create,n=Object.defineProperty,i=Object.prototype,o=a(null);t.exports=function(u){for(var s=0,c,l;o[u+(s||"")];)++s;return u+=s||"",o[u]=!0,c="@@"+u,n(i,c,r.gs(null,function(d){l||(l=!0,n(this,c,r(d)),l=!1)})),c}}),eh=x(function(e,t){var r=dr(),a=$a().Symbol;t.exports=function(n){return Object.defineProperties(n,{hasInstance:r("",a&&a.hasInstance||n("hasInstance")),isConcatSpreadable:r("",a&&a.isConcatSpreadable||n("isConcatSpreadable")),iterator:r("",a&&a.iterator||n("iterator")),match:r("",a&&a.match||n("match")),replace:r("",a&&a.replace||n("replace")),search:r("",a&&a.search||n("search")),species:r("",a&&a.species||n("species")),split:r("",a&&a.split||n("split")),toPrimitive:r("",a&&a.toPrimitive||n("toPrimitive")),toStringTag:r("",a&&a.toStringTag||n("toStringTag")),unscopables:r("",a&&a.unscopables||n("unscopables"))})}}),th=x(function(e,t){var r=dr(),a=os(),n=Object.create(null);t.exports=function(i){return Object.defineProperties(i,{for:r(function(o){return n[o]?n[o]:n[o]=i(String(o))}),keyFor:r(function(o){var u;a(o);for(u in n)if(n[u]===o)return u})})}}),rh=x(function(e,t){var r=dr(),a=os(),n=$a().Symbol,i=Qm(),o=eh(),u=th(),s=Object.create,c=Object.defineProperties,l=Object.defineProperty,d,f,p;if(typeof n=="function")try{String(n()),p=!0}catch{}else n=null;f=function(h){if(this instanceof f)throw new TypeError("Symbol is not a constructor");return d(h)},t.exports=d=function m(h){var v;if(this instanceof m)throw new TypeError("Symbol is not a constructor");return p?n(h):(v=s(f.prototype),h=h===void 0?"":String(h),c(v,{__description__:r("",h),__name__:r("",i(h))}))},o(d),u(d),c(f.prototype,{constructor:r(d),toString:r("",function(){return this.__name__})}),c(d.prototype,{toString:r(function(){return"Symbol ("+a(this).__description__+")"}),valueOf:r(function(){return a(this)})}),l(d.prototype,d.toPrimitive,r("",function(){var m=a(this);return O(m)==="symbol"?m:m.toString()})),l(d.prototype,d.toStringTag,r("c","Symbol")),l(f.prototype,d.toStringTag,r("c",d.prototype[d.toStringTag])),l(f.prototype,d.toPrimitive,r("c",d.prototype[d.toPrimitive]))}),ah=x(function(e,t){t.exports=Zm()()?$a().Symbol:rh()}),nh=x(function(e,t){var r=Object.prototype.toString,a=r.call(function(){return arguments}());t.exports=function(n){return r.call(n)===a}}),ih=x(function(e,t){var r=Object.prototype.toString,a=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);t.exports=function(n){return typeof n=="function"&&a(r.call(n))}}),oh=x(function(e,t){var r=Object.prototype.toString,a=r.call("");t.exports=function(n){return typeof n=="string"||n&&O(n)==="object"&&(n instanceof String||r.call(n)===a)||!1}}),uh=x(function(e,t){var r=ah().iterator,a=nh(),n=ih(),i=lr(),o=Gt(),u=Rr(),s=sr(),c=oh(),l=Array.isArray,d=Function.prototype.call,f={configurable:!0,enumerable:!0,writable:!0,value:null},p=Object.defineProperty;t.exports=function(m){var h=arguments[1],v=arguments[2],g,b,y,_,A,R,S,q,$,k;if(m=Object(u(m)),s(h)&&o(h),!this||this===Array||!n(this)){if(!h){if(a(m))return A=m.length,A!==1?Array.apply(null,m):(_=new Array(1),_[0]=m[0],_);if(l(m)){for(_=new Array(A=m.length),b=0;b=55296&&R<=56319&&(k+=m[++b])),k=h?d.call(h,v,k,y):k,g?(f.value=k,p(_,y,f)):_[y]=k,++y;A=y}}if(A===void 0)for(A=i(m.length),g&&(_=new g(A)),b=0;b=0?f=s(f):f=a(this.length)-s(u(f)),l=f;l"u"?"undefined":O(process))==="object"&&process&&typeof process.nextTick=="function")return process.nextTick;if(typeof queueMicrotask=="function")return function(n){queueMicrotask(r(n))};if((typeof L>"u"?"undefined":O(L))==="object"&&L){if(typeof MutationObserver=="function")return a(MutationObserver);if(typeof WebKitMutationObserver=="function")return a(WebKitMutationObserver)}return typeof setImmediate=="function"?function(n){setImmediate(r(n))}:typeof setTimeout=="function"||(typeof setTimeout>"u"?"undefined":O(setTimeout))==="object"?function(n){setTimeout(r(n),0)}:null}()}),Dh=x(function(){var e=hi(),t=us(),r=as(),a=ns(),n=gi(),i=Array.prototype.slice,o=Function.prototype.apply,u=Object.create;cr().async=function(s,c){var l=u(null),d=u(null),f=c.memoized,p=c.original,m,h,v;c.memoized=a(function(g){var b=arguments,y=b[b.length-1];return typeof y=="function"&&(m=y,b=i.call(b,0,-1)),f.apply(h=this,v=b)},f);try{r(c.memoized,f)}catch{}c.on("get",function(g){var b,y,_;if(m){if(l[g]){typeof l[g]=="function"?l[g]=[l[g],m]:l[g].push(m),m=null;return}b=m,y=h,_=v,m=h=v=null,n(function(){var A;hasOwnProperty.call(d,g)?(A=d[g],c.emit("getasync",g,_,y),o.call(b,A.context,A.args)):(m=b,h=y,v=_,f.apply(y,_))})}}),c.original=function(){var g,b,y,_;return m?(g=e(arguments),b=function A(R){var S,q,$=A.id;if($==null){n(o.bind(A,this,arguments));return}if(delete A.id,S=l[$],delete l[$],!!S)return q=e(arguments),c.has($)&&(R?c.delete($):(d[$]={context:this,args:q},c.emit("setasync",$,typeof S=="function"?1:S.length))),typeof S=="function"?_=o.call(S,this,q):S.forEach(function(k){_=o.call(k,this,q)},this),_},y=m,m=h=v=null,g.push(b),_=o.call(p,this,g),b.cb=y,m=b,_):o.call(p,this,arguments)},c.on("set",function(g){if(!m){c.delete(g);return}l[g]?typeof l[g]=="function"?l[g]=[l[g],m.cb]:l[g].push(m.cb):l[g]=m.cb,delete m.cb,m.id=g,m=null}),c.on("delete",function(g){var b;hasOwnProperty.call(l,g)||d[g]&&(b=d[g],delete d[g],c.emit("deleteasync",g,i.call(b.args,1)))}),c.on("clear",function(){var g=d;d=u(null),c.emit("clearasync",t(g,function(b){return i.call(b.args,1)}))})}}),_h=x(function(e,t){var r=Array.prototype.forEach,a=Object.create;t.exports=function(n){var i=a(null);return r.call(arguments,function(o){i[o]=!0}),i}}),ss=x(function(e,t){t.exports=function(r){return typeof r=="function"}}),xh=x(function(e,t){var r=ss();t.exports=function(a){try{return a&&r(a.toString)?a.toString():String(a)}catch{throw new TypeError("Passed argument cannot be stringifed")}}}),Eh=x(function(e,t){var r=Rr(),a=xh();t.exports=function(n){return a(r(n))}}),Ch=x(function(e,t){var r=ss();t.exports=function(a){try{return a&&r(a.toString)?a.toString():String(a)}catch{return""}}}),Ah=x(function(e,t){var r=Ch(),a=/[\n\r\u2028\u2029]/g;t.exports=function(n){var i=r(n);return i.length>100&&(i=i.slice(0,99)+"…"),i=i.replace(a,function(o){return JSON.stringify(o).slice(1,-1)}),i}}),ls=x(function(e,t){t.exports=r,t.exports.default=r;function r(a){return!!a&&(O(a)==="object"||typeof a=="function")&&typeof a.then=="function"}}),Fh=x(function(){var e=us(),t=_h(),r=Eh(),a=Ah(),n=ls(),i=gi(),o=Object.create,u=t("then","then:finally","done","done:finally");cr().promise=function(s,c){var l=o(null),d=o(null),f=o(null);if(s===!0)s=null;else if(s=r(s),!u[s])throw new TypeError("'"+a(s)+"' is not valid promise mode");c.on("set",function(p,m,h){var v=!1;if(!n(h)){d[p]=h,c.emit("setasync",p,1);return}l[p]=1,f[p]=h;var g=function(R){var S=l[p];if(v)throw new Error(`Memoizee error: Detected unordered then|done & finally resolution, which in turn makes proper detection of success/failure impossible (when in 'done:finally' mode) +Consider to rely on 'then' or 'done' mode instead.`);S&&(delete l[p],d[p]=R,c.emit("setasync",p,S))},b=function(){v=!0,l[p]&&(delete l[p],delete f[p],c.delete(p))},y=s;if(y||(y="then"),y==="then"){var _=function(){i(b)};h=h.then(function(A){i(g.bind(this,A))},_),typeof h.finally=="function"&&h.finally(_)}else if(y==="done"){if(typeof h.done!="function")throw new Error("Memoizee error: Retrieved promise does not implement 'done' in 'done' mode");h.done(g,b)}else if(y==="done:finally"){if(typeof h.done!="function")throw new Error("Memoizee error: Retrieved promise does not implement 'done' in 'done:finally' mode");if(typeof h.finally!="function")throw new Error("Memoizee error: Retrieved promise does not implement 'finally' in 'done:finally' mode");h.done(g),h.finally(b)}}),c.on("get",function(p,m,h){var v;if(l[p]){++l[p];return}v=f[p];var g=function(){c.emit("getasync",p,m,h)};n(v)?typeof v.done=="function"?v.done(g):v.then(function(){i(g)}):g()}),c.on("delete",function(p){if(delete f[p],l[p]){delete l[p];return}if(hasOwnProperty.call(d,p)){var m=d[p];delete d[p],c.emit("deleteasync",p,[m])}}),c.on("clear",function(){var p=d;d=o(null),l=o(null),f=o(null),c.emit("clearasync",e(p,function(m){return[m]}))})}}),Th=x(function(){var e=Gt(),t=Ha(),r=cr(),a=Function.prototype.apply;r.dispose=function(n,i,o){var u;if(e(n),o.async&&r.async||o.promise&&r.promise){i.on("deleteasync",u=function(c,l){a.call(n,null,l)}),i.on("clearasync",function(s){t(s,function(c,l){u(l,c)})});return}i.on("delete",u=function(c,l){n(l)}),i.on("clear",function(s){t(s,function(c,l){u(l,c)})})}}),Rh=x(function(e,t){t.exports=2147483647}),kh=x(function(e,t){var r=lr(),a=Rh();t.exports=function(n){if(n=r(n),n>a)throw new TypeError(n+" exceeds maximum possible timeout");return n}}),Sh=x(function(){var e=hi(),t=Ha(),r=gi(),a=ls(),n=kh(),i=cr(),o=Function.prototype,u=Math.max,s=Math.min,c=Object.create;i.maxAge=function(l,d,f){var p,m,h,v;l=n(l),l&&(p=c(null),m=f.async&&i.async||f.promise&&i.promise?"async":"",d.on("set"+m,function(g){p[g]=setTimeout(function(){d.delete(g)},l),typeof p[g].unref=="function"&&p[g].unref(),v&&(v[g]&&v[g]!=="nextTick"&&clearTimeout(v[g]),v[g]=setTimeout(function(){delete v[g]},h),typeof v[g].unref=="function"&&v[g].unref())}),d.on("delete"+m,function(g){clearTimeout(p[g]),delete p[g],v&&(v[g]!=="nextTick"&&clearTimeout(v[g]),delete v[g])}),f.preFetch&&(f.preFetch===!0||isNaN(f.preFetch)?h=.333:h=u(s(Number(f.preFetch),1),0),h&&(v={},h=(1-h)*l,d.on("get"+m,function(g,b,y){v[g]||(v[g]="nextTick",r(function(){var _;v[g]==="nextTick"&&(delete v[g],d.delete(g),f.async&&(b=e(b),b.push(o)),_=d.memoized.apply(y,b),f.promise&&a(_)&&(typeof _.done=="function"?_.done(o,o):_.then(o,o)))}))}))),d.on("clear"+m,function(){t(p,function(g){clearTimeout(g)}),p={},v&&(t(v,function(g){g!=="nextTick"&&clearTimeout(g)}),v={})}))}}),Oh=x(function(e,t){var r=lr(),a=Object.create,n=Object.prototype.hasOwnProperty;t.exports=function(i){var o=0,u=1,s=a(null),c=a(null),l=0,d;return i=r(i),{hit:function(p){var m=c[p],h=++l;if(s[h]=p,c[p]=h,!m)return++o,o<=i?void 0:(p=s[u],d(p),p);if(delete s[m],u===m)for(;!n.call(s,++u););},delete:d=function(p){var m=c[p];if(m&&(delete s[m],delete c[p],--o,u===m)){if(!o){l=0,u=1;return}for(;!n.call(s,++u););}},clear:function(){o=0,u=1,s=a(null),c=a(null),l=0}}}}),Mh=x(function(){var e=lr(),t=Oh(),r=cr();r.max=function(a,n,i){var o,u,s;a=e(a),a&&(u=t(a),o=i.async&&r.async||i.promise&&r.promise?"async":"",n.on("set"+o,s=function(l){l=u.hit(l),l!==void 0&&n.delete(l)}),n.on("get"+o,s),n.on("delete"+o,u.delete),n.on("clear"+o,u.clear))}}),Nh=x(function(){var e=dr(),t=cr(),r=Object.create,a=Object.defineProperties;t.refCounter=function(n,i,o){var u,s;u=r(null),s=o.async&&t.async||o.promise&&t.promise?"async":"",i.on("set"+s,function(c,l){u[c]=l||1}),i.on("get"+s,function(c){++u[c]}),i.on("delete"+s,function(c){delete u[c]}),i.on("clear"+s,function(){u={}}),a(i.memoized,{deleteRef:e(function(){var c=i.get(arguments);return c===null||!u[c]?null:--u[c]?!1:(i.delete(c),!0)}),getRefCount:e(function(){var c=i.get(arguments);return c===null||!u[c]?0:u[c]})})}}),cs=x(function(e,t){var r=es(),a=ts(),n=fh();t.exports=function(i){var o=r(arguments[1]),u;return o.normalizer||(u=o.length=a(o.length,i.length,o.async),u!==0&&(o.primitive?u===!1?o.normalizer=ph():u>1&&(o.normalizer=mh()(u)):u===!1?o.normalizer=bh()():u===1?o.normalizer=yh()():o.normalizer=wh()(u))),o.async&&Dh(),o.promise&&Fh(),o.dispose&&Th(),o.maxAge&&Sh(),o.max&&Mh(),o.refCounter&&Nh(),n(i,o)}}),ds=x(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(o){return o>="a"&&o<="z"||o>="A"&&o<="Z"||o==="-"||o==="_"}e.isIdentStart=t;function r(o){return o>="a"&&o<="z"||o>="A"&&o<="Z"||o>="0"&&o<="9"||o==="-"||o==="_"}e.isIdent=r;function a(o){return o>="a"&&o<="f"||o>="A"&&o<="F"||o>="0"&&o<="9"}e.isHex=a;function n(o){for(var u=o.length,s="",c=0;c="A"&&l<="Z"||l>="a"&&l<="z"||c!==0&&l>="0"&&l<="9")s+=l;else{var d=l.charCodeAt(0);if((d&63488)===55296){var f=o.charCodeAt(c++);if((d&64512)!==55296||(f&64512)!==56320)throw Error("UCS-2(decode): illegal sequence");d=((d&1023)<<10)+(f&1023)+65536}s+="\\"+d.toString(16)+" "}c++}return s}e.escapeIdentifier=n;function i(o){for(var u=o.length,s="",c=0,l;c":!0,"?":!0,"@":!0,"[":!0,"\\":!0,"]":!0,"^":!0,"`":!0,"{":!0,"|":!0,"}":!0,"~":!0},e.strReplacementsRev={"\n":"\\n","\r":"\\r"," ":"\\t","\f":"\\f","\v":"\\v"},e.singleQuoteEscapeChars={n:` +`,r:"\r",t:" ",f:"\f","\\":"\\","'":"'"},e.doubleQuotesEscapeChars={n:` +`,r:"\r",t:" ",f:"\f","\\":"\\",'"':'"'}}),Ih=x(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=ds();function r(a,n,i,o,u,s){var c=a.length,l="";function d(b,y){var _="";for(n++,l=a.charAt(n);n=c)throw Error("Expected symbol but end of file reached.");if(l=a.charAt(n),t.identSpecialChars[l])b+=l;else if(t.isHex(l)){var y=l;for(n++,l=a.charAt(n);t.isHex(l);)y+=l,n++,l=a.charAt(n);l===" "&&(n++,l=a.charAt(n)),b+=String.fromCharCode(parseInt(y,16));continue}else b+=l}else return b;n++,l=a.charAt(n)}return b}function p(){l=a.charAt(n);for(var b=!1;l===" "||l===" "||l===` +`||l==="\r"||l==="\f";)b=!0,n++,l=a.charAt(n);return b}function m(){var b=h();if(n=c||l===","||l===")"));)if(u[l]){var A=l;if(n++,p(),y=g(),!y)throw Error('Rule expected after "'+A+'".');y.nestingOperator=A}else y=g(),y&&(y.nestingOperator=null);return b}function g(){for(var b=null;n=c)throw Error('Expected "=" but end of file reached.');if(l!=="=")throw Error('Expected "=" but "'+l+'" found.');y.operator=_+"=",n++,p();var A="";if(y.valueType="string",l==='"')A=d('"',t.doubleQuotesEscapeChars);else if(l==="'")A=d("'",t.singleQuoteEscapeChars);else if(s&&l==="$")n++,A=f(),y.valueType="substitute";else{for(;n=c)throw Error('Expected "]" but end of file reached.');if(l!=="]")throw Error('Expected "]" but "'+l+'" found.');n++,y.value=A}b=b||{},(b.attrs=b.attrs||[]).push(y)}else if(l===":"){n++;var R=f(),S={name:R};if(l==="("){n++;var q="";if(p(),i[R]==="selector")S.valueType="selector",q=h();else{if(S.valueType=i[R]||"string",l==='"')q=d('"',t.doubleQuotesEscapeChars);else if(l==="'")q=d("'",t.singleQuoteEscapeChars);else if(s&&l==="$")n++,q=f(),S.valueType="substitute";else{for(;n=c)throw Error('Expected ")" but end of file reached.');if(l!==")")throw Error('Expected ")" but "'+l+'" found.');n++,S.value=q}b=b||{},(b.pseudos=b.pseudos||[]).push(S)}else break;return b}return m()}e.parseCssSelector=r}),Ph=x(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=ds();function r(a){var n="";switch(a.type){case"ruleSet":for(var i=a.rule,o=[];i;)i.nestingOperator&&o.push(i.nestingOperator),o.push(r(i)),i=i.rule;n=o.join(" ");break;case"selectors":n=a.selectors.map(r).join(", ");break;case"rule":a.tagName&&(a.tagName==="*"?n="*":n=t.escapeIdentifier(a.tagName)),a.id&&(n+="#"+t.escapeIdentifier(a.id)),a.classNames&&(n+=a.classNames.map(function(u){return"."+t.escapeIdentifier(u)}).join("")),a.attrs&&(n+=a.attrs.map(function(u){return"operator"in u?u.valueType==="substitute"?"["+t.escapeIdentifier(u.name)+u.operator+"$"+u.value+"]":"["+t.escapeIdentifier(u.name)+u.operator+t.escapeStr(u.value)+"]":"["+t.escapeIdentifier(u.name)+"]"}).join("")),a.pseudos&&(n+=a.pseudos.map(function(u){return u.valueType?u.valueType==="selector"?":"+t.escapeIdentifier(u.name)+"("+r(u.value)+")":u.valueType==="substitute"?":"+t.escapeIdentifier(u.name)+"($"+u.value+")":u.valueType==="numeric"?":"+t.escapeIdentifier(u.name)+"("+u.value+")":":"+t.escapeIdentifier(u.name)+"("+t.escapeIdentifier(u.value)+")":":"+t.escapeIdentifier(u.name)}).join(""));break;default:throw Error('Unknown entity type: "'+a.type+'".')}return n}e.renderEntity=r}),fs=x(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=Ih(),r=Ph(),a=function(){function n(){this.pseudos={},this.attrEqualityMods={},this.ruleNestingOperators={},this.substitutesEnabled=!1}return n.prototype.registerSelectorPseudos=function(){for(var i=[],o=0;o"u"&&typeof process<"u"&&{}.toString.call(process)==="[object process]",v=typeof Uint8ClampedArray<"u"&&typeof importScripts<"u"&&typeof MessageChannel<"u";function g(){return function(){return process.nextTick(S)}}function b(){return typeof u<"u"?function(){u(S)}:A()}function y(){var F=0,M=new m(S),B=L.createTextNode("");return M.observe(B,{characterData:!0}),function(){B.data=F=++F%2}}function _(){var F=new MessageChannel;return F.port1.onmessage=S,function(){return F.port2.postMessage(0)}}function A(){var F=setTimeout;return function(){return F(S,1)}}var R=new Array(1e3);function S(){for(var F=0;F>0},ToUint32:function(te){return te>>>0}}}(),a=Math.LN2,n=Math.abs,i=Math.floor,o=Math.log,u=Math.min,s=Math.pow,c=Math.round;function l(C,G,j){return Cj?j:C}var d=Object.getOwnPropertyNames||function(C){if(C!==Object(C))throw new TypeError("Object.getOwnPropertyNames called on non-object");var G=[],j;for(j in C)r.HasOwnProperty(C,j)&&G.push(j);return G},f;Object.defineProperty&&function(){try{return Object.defineProperty({},"x",{}),!0}catch{return!1}}()?f=Object.defineProperty:f=function(G,j,te){if(!G===Object(G))throw new TypeError("Object.defineProperty called on non-object");return r.HasProperty(te,"get")&&Object.prototype.__defineGetter__&&Object.prototype.__defineGetter__.call(G,j,te.get),r.HasProperty(te,"set")&&Object.prototype.__defineSetter__&&Object.prototype.__defineSetter__.call(G,j,te.set),r.HasProperty(te,"value")&&(G[j]=te.value),G};function p(C){if(d&&f){var G=d(C),j;for(j=0;jt)throw new RangeError("Array too large for polyfill");function G(te){f(C,te,{get:function(){return C._getter(te)},set:function(X){C._setter(te,X)},enumerable:!0,configurable:!1})}var j;for(j=0;j>j}function v(C,G){var j=32-G;return C<>>j}function g(C){return[C&255]}function b(C){return h(C[0],8)}function y(C){return[C&255]}function _(C){return v(C[0],8)}function A(C){return C=c(Number(C)),[C<0?0:C>255?255:C&255]}function R(C){return[C>>8&255,C&255]}function S(C){return h(C[0]<<8|C[1],16)}function q(C){return[C>>8&255,C&255]}function $(C){return v(C[0]<<8|C[1],16)}function k(C){return[C>>24&255,C>>16&255,C>>8&255,C&255]}function V(C){return h(C[0]<<24|C[1]<<16|C[2]<<8|C[3],32)}function z(C){return[C>>24&255,C>>16&255,C>>8&255,C&255]}function U(C){return v(C[0]<<24|C[1]<<16|C[2]<<8|C[3],32)}function J(C,G,j){var te=(1<.5||Ie%2?Ie+1:Ie}for(C!==C?(X=(1<=s(2,1-te)?(X=u(i(o(C)/a),1023),H=Be(C/s(2,X)*s(2,j)),H/s(2,j)>=2&&(X=X+1,H=1),X>te?(X=(1<>1;return te.reverse(),we=te.join(""),ke=(1<0?_e*s(2,xe-ke)*(1+Be/s(2,j)):Be!==0?_e*s(2,-(ke-1))*(Be/s(2,j)):_e<0?-0:0}function K(C){return ee(C,11,52)}function re(C){return J(C,11,52)}function N(C){return ee(C,8,23)}function Q(C){return J(C,8,23)}(function(){function C(qe){if(qe=r.ToInt32(qe),qe<0)throw new RangeError("ArrayBuffer size is not a small enough positive integer");this.byteLength=qe,this._bytes=[],this._bytes.length=qe;var Ie;for(Ie=0;Iethis.buffer.byteLength)throw new RangeError("byteOffset out of range");if(this.byteOffset%this.BYTES_PER_ELEMENT)throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size.");if(arguments.length<3){if(this.byteLength=this.buffer.byteLength-this.byteOffset,this.byteLength%this.BYTES_PER_ELEMENT)throw new RangeError("length of buffer minus byteOffset not a multiple of the element size");this.length=this.byteLength/this.BYTES_PER_ELEMENT}else this.length=r.ToUint32(tt),this.byteLength=this.length*this.BYTES_PER_ELEMENT;if(this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer")}else throw new TypeError("Unexpected argument type(s)");this.constructor=Se,p(this),m(this)},Se.prototype=new G,Se.prototype.BYTES_PER_ELEMENT=qe,Se.prototype._pack=Ie,Se.prototype._unpack=ur,Se.BYTES_PER_ELEMENT=qe,Se.prototype._getter=function(Ae){if(arguments.length<1)throw new SyntaxError("Not enough arguments");if(Ae=r.ToUint32(Ae),!(Ae>=this.length)){for(var $e=[],Pe=0,tt=this.byteOffset+Ae*this.BYTES_PER_ELEMENT;Pethis.length)throw new RangeError("Offset plus length of array is out of range");if(B=this.byteOffset+rt*this.BYTES_PER_ELEMENT,W=Pe.length*this.BYTES_PER_ELEMENT,Pe.buffer===this.buffer){for(ie=[],ge=0,F=Pe.byteOffset;gethis.length)throw new RangeError("Offset plus length of array is out of range");for(ge=0;gethis.buffer.byteLength)throw new RangeError("byteOffset out of range");if(arguments.length<3?this.byteLength=this.buffer.byteLength-this.byteOffset:this.byteLength=r.ToUint32(we),this.byteOffset+this.byteLength>this.buffer.byteLength)throw new RangeError("byteOffset and length reference an area beyond the end of the buffer");p(this)}function te(X){return function(H,we){if(H=r.ToUint32(H),H+X.BYTES_PER_ELEMENT>this.byteLength)throw new RangeError("Array index out of range");H+=this.byteOffset;var ke=new e.Uint8Array(this.buffer,H,X.BYTES_PER_ELEMENT),_e=[],xe;for(xe=0;xethis.byteLength)throw new RangeError("Array index out of range");var _e=new X([we]),xe=new e.Uint8Array(_e.buffer),Be=[],qe,Ie;for(qe=0;qe0)throw new TypeError("WeakMap iterable is not supported")}n(o.prototype,"delete",function(l){if(u(this,"delete"),!i(l))return!1;var d=l[this._id];return d&&d[0]===l?(delete l[this._id],!0):!1}),n(o.prototype,"get",function(l){if(u(this,"get"),!!i(l)){var d=l[this._id];if(d&&d[0]===l)return d[1]}}),n(o.prototype,"has",function(l){if(u(this,"has"),!i(l))return!1;var d=l[this._id];return!!(d&&d[0]===l)}),n(o.prototype,"set",function(l,d){if(u(this,"set"),!i(l))throw new TypeError("Invalid value used as weak map key");var f=l[this._id];return f&&f[0]===l?(f[1]=d,this):(n(l,this._id,[l,d]),this)});function u(l,d){if(!i(l)||!r.call(l,"_id"))throw new TypeError(d+" method called on incompatible receiver "+O(l))}function s(l){return l+"_"+c()+"."+c()}function c(){return Math.random().toString().substring(2)}return n(o,"_polyfill",!0),o}();function i(o){return Object(o)===o}})(typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof D<"u"?D:typeof Pt<"u"?Pt:e)}),Wt=x(function(e,t){var r=function(n){return n&&n.Math===Math&&n};t.exports=r((typeof globalThis>"u"?"undefined":O(globalThis))=="object"&&globalThis)||r((typeof D>"u"?"undefined":O(D))=="object"&&D)||r((typeof self>"u"?"undefined":O(self))=="object"&&self)||r((typeof Pt>"u"?"undefined":O(Pt))=="object"&&Pt)||function(){return this}()||e||Function("return this")()}),Lt=x(function(e,t){t.exports=function(r){try{return!!r()}catch{return!0}}}),Ua=x(function(e,t){var r=Lt();t.exports=!r(function(){var a=(function(){}).bind();return typeof a!="function"||a.hasOwnProperty("prototype")})}),jh=x(function(e,t){var r=Ua(),a=Function.prototype,n=a.apply,i=a.call;t.exports=(typeof Reflect>"u"?"undefined":O(Reflect))=="object"&&Reflect.apply||(r?i.bind(n):function(){return i.apply(n,arguments)})}),Yt=x(function(e,t){var r=Ua(),a=Function.prototype,n=a.call,i=r&&a.bind.bind(n,n);t.exports=r?i:function(o){return function(){return n.apply(o,arguments)}}}),ps=x(function(e,t){var r=Yt(),a=r({}.toString),n=r("".slice);t.exports=function(i){return n(a(i),8,-1)}}),ms=x(function(e,t){var r=ps(),a=Yt();t.exports=function(n){if(r(n)==="Function")return a(n)}}),hs=x(function(e,t){var r=(typeof L>"u"?"undefined":O(L))=="object"&&L.all,a=typeof r>"u"&&r!==void 0;t.exports={all:r,IS_HTMLDDA:a}}),Kt=x(function(e,t){var r=hs(),a=r.all;t.exports=r.IS_HTMLDDA?function(n){return typeof n=="function"||n===a}:function(n){return typeof n=="function"}}),kr=x(function(e,t){var r=Lt();t.exports=!r(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})}),bi=x(function(e,t){var r=Ua(),a=Function.prototype.call;t.exports=r?a.bind(a):function(){return a.apply(a,arguments)}}),vs=x(function(e){var t={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,a=r&&!t.call({1:2},1);e.f=a?function(i){var o=r(this,i);return!!o&&o.enumerable}:t}),gs=x(function(e,t){t.exports=function(r,a){return{enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:a}}}),zh=x(function(e,t){var r=Yt(),a=Lt(),n=ps(),i=Object,o=r("".split);t.exports=a(function(){return!i("z").propertyIsEnumerable(0)})?function(u){return n(u)==="String"?o(u,""):i(u)}:i}),bs=x(function(e,t){t.exports=function(r){return r==null}}),ys=x(function(e,t){var r=bs(),a=TypeError;t.exports=function(n){if(r(n))throw new a("Can't call method on "+n);return n}}),Ga=x(function(e,t){var r=zh(),a=ys();t.exports=function(n){return r(a(n))}}),Wa=x(function(e,t){var r=Kt(),a=hs(),n=a.all;t.exports=a.IS_HTMLDDA?function(i){return O(i)=="object"?i!==null:r(i)||i===n}:function(i){return O(i)=="object"?i!==null:r(i)}}),Ya=x(function(e,t){t.exports={}}),Vh=x(function(e,t){var r=Ya(),a=Wt(),n=Kt(),i=function(u){return n(u)?u:void 0};t.exports=function(o,u){return arguments.length<2?i(r[o])||i(a[o]):r[o]&&r[o][u]||a[o]&&a[o][u]}}),Hh=x(function(e,t){var r=Yt();t.exports=r({}.isPrototypeOf)}),$h=x(function(e,t){t.exports=typeof navigator<"u"&&String(navigator.userAgent)||""}),Uh=x(function(e,t){var r=Wt(),a=$h(),n=r.process,i=r.Deno,o=n&&n.versions||i&&i.version,u=o&&o.v8,s,c;u&&(s=u.split("."),c=s[0]>0&&s[0]<4?1:+(s[0]+s[1])),!c&&a&&(s=a.match(/Edge\/(\d+)/),(!s||s[1]>=74)&&(s=a.match(/Chrome\/(\d+)/),s&&(c=+s[1]))),t.exports=c}),ws=x(function(e,t){var r=Uh(),a=Lt(),n=Wt(),i=n.String;t.exports=!!Object.getOwnPropertySymbols&&!a(function(){var o=Symbol("symbol detection");return!i(o)||!(Object(o)instanceof Symbol)||!Symbol.sham&&r&&r<41})}),Ds=x(function(e,t){var r=ws();t.exports=r&&!Symbol.sham&&O(Symbol.iterator)=="symbol"}),_s=x(function(e,t){var r=Vh(),a=Kt(),n=Hh(),i=Ds(),o=Object;t.exports=i?function(u){return O(u)=="symbol"}:function(u){var s=r("Symbol");return a(s)&&n(s.prototype,o(u))}}),Gh=x(function(e,t){var r=String;t.exports=function(a){try{return r(a)}catch{return"Object"}}}),xs=x(function(e,t){var r=Kt(),a=Gh(),n=TypeError;t.exports=function(i){if(r(i))return i;throw new n(a(i)+" is not a function")}}),Wh=x(function(e,t){var r=xs(),a=bs();t.exports=function(n,i){var o=n[i];return a(o)?void 0:r(o)}}),Yh=x(function(e,t){var r=bi(),a=Kt(),n=Wa(),i=TypeError;t.exports=function(o,u){var s,c;if(u==="string"&&a(s=o.toString)&&!n(c=r(s,o))||a(s=o.valueOf)&&!n(c=r(s,o))||u!=="string"&&a(s=o.toString)&&!n(c=r(s,o)))return c;throw new i("Can't convert object to primitive value")}}),Kh=x(function(e,t){t.exports=!0}),Xh=x(function(e,t){var r=Wt(),a=Object.defineProperty;t.exports=function(n,i){try{a(r,n,{value:i,configurable:!0,writable:!0})}catch{r[n]=i}return i}}),Zh=x(function(e,t){var r=Wt(),a=Xh(),n="__core-js_shared__",i=r[n]||a(n,{});t.exports=i}),Es=x(function(e,t){var r=Kh(),a=Zh();(t.exports=function(n,i){return a[n]||(a[n]=i!==void 0?i:{})})("versions",[]).push({version:"3.33.0",mode:r?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE",source:"https://github.com/zloirock/core-js"})}),Cs=x(function(e,t){var r=ys(),a=Object;t.exports=function(n){return a(r(n))}}),Sr=x(function(e,t){var r=Yt(),a=Cs(),n=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(o,u){return n(a(o),u)}}),As=x(function(e,t){var r=Yt(),a=0,n=Math.random(),i=r(1 .toString);t.exports=function(o){return"Symbol("+(o===void 0?"":o)+")_"+i(++a+n,36)}}),Jh=x(function(e,t){var r=Wt(),a=Es(),n=Sr(),i=As(),o=ws(),u=Ds(),s=r.Symbol,c=a("wks"),l=u?s.for||s:s&&s.withoutSetter||i;t.exports=function(d){return n(c,d)||(c[d]=o&&n(s,d)?s[d]:l("Symbol."+d)),c[d]}}),Qh=x(function(e,t){var r=bi(),a=Wa(),n=_s(),i=Wh(),o=Yh(),u=Jh(),s=TypeError,c=u("toPrimitive");t.exports=function(l,d){if(!a(l)||n(l))return l;var f=i(l,c),p;if(f){if(d===void 0&&(d="default"),p=r(f,l,d),!a(p)||n(p))return p;throw new s("Can't convert object to primitive value")}return d===void 0&&(d="number"),o(l,d)}}),Fs=x(function(e,t){var r=Qh(),a=_s();t.exports=function(n){var i=r(n,"string");return a(i)?i:i+""}}),ev=x(function(e,t){var r=Wt(),a=Wa(),n=r.document,i=a(n)&&a(n.createElement);t.exports=function(o){return i?n.createElement(o):{}}}),Ts=x(function(e,t){var r=kr(),a=Lt(),n=ev();t.exports=!r&&!a(function(){return Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a!==7})}),tv=x(function(e){var t=kr(),r=bi(),a=vs(),n=gs(),i=Ga(),o=Fs(),u=Sr(),s=Ts(),c=Object.getOwnPropertyDescriptor;e.f=t?c:function(d,f){if(d=i(d),f=o(f),s)try{return c(d,f)}catch{}if(u(d,f))return n(!r(a.f,d,f),d[f])}}),rv=x(function(e,t){var r=Lt(),a=Kt(),n=/#|\.prototype\./,i=function(d,f){var p=u[o(d)];return p===c?!0:p===s?!1:a(f)?r(f):!!f},o=i.normalize=function(l){return String(l).replace(n,".").toLowerCase()},u=i.data={},s=i.NATIVE="N",c=i.POLYFILL="P";t.exports=i}),av=x(function(e,t){var r=ms(),a=xs(),n=Ua(),i=r(r.bind);t.exports=function(o,u){return a(o),u===void 0?o:n?i(o,u):function(){return o.apply(u,arguments)}}}),nv=x(function(e,t){var r=kr(),a=Lt();t.exports=r&&a(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})}),iv=x(function(e,t){var r=Wa(),a=String,n=TypeError;t.exports=function(i){if(r(i))return i;throw new n(a(i)+" is not an object")}}),ov=x(function(e){var t=kr(),r=Ts(),a=nv(),n=iv(),i=Fs(),o=TypeError,u=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c="enumerable",l="configurable",d="writable";e.f=t?a?function(p,m,h){if(n(p),m=i(m),n(h),typeof p=="function"&&m==="prototype"&&"value"in h&&d in h&&!h[d]){var v=s(p,m);v&&v[d]&&(p[m]=h.value,h={configurable:l in h?h[l]:v[l],enumerable:c in h?h[c]:v[c],writable:!1})}return u(p,m,h)}:u:function(p,m,h){if(n(p),m=i(m),n(h),r)try{return u(p,m,h)}catch{}if("get"in h||"set"in h)throw new o("Accessors not supported");return"value"in h&&(p[m]=h.value),p}}),uv=x(function(e,t){var r=kr(),a=ov(),n=gs();t.exports=r?function(i,o,u){return a.f(i,o,n(1,u))}:function(i,o,u){return i[o]=u,i}}),Rs=x(function(e,t){var r=Wt(),a=jh(),n=ms(),i=Kt(),o=tv().f,u=rv(),s=Ya(),c=av(),l=uv(),d=Sr(),f=function(m){var h=function v(g,b,y){if(this instanceof v){switch(arguments.length){case 0:return new m;case 1:return new m(g);case 2:return new m(g,b)}return new m(g,b,y)}return a(m,this,arguments)};return h.prototype=m.prototype,h};t.exports=function(p,m){var h=p.target,v=p.global,g=p.stat,b=p.proto,y=v?r:g?r[h]:(r[h]||{}).prototype,_=v?s:s[h]||l(s,h,{})[h],A=_.prototype,R,S,q,$,k,V,z,U,J;for($ in m)R=u(v?$:h+(g?".":"#")+$,p.forced),S=!R&&y&&d(y,$),V=_[$],S&&(p.dontCallGetSet?(J=o(y,$),z=J&&J.value):z=y[$]),k=S&&z?z:m[$],!(S&&O(V)==O(k))&&(p.bind&&S?U=c(k,r):p.wrap&&S?U=f(k):b&&i(k)?U=n(k):U=k,(p.sham||k&&k.sham||V&&V.sham)&&l(U,"sham",!0),l(_,$,U),b&&(q=h+"Prototype",d(s,q)||l(s,q,{}),l(s[q],$,k),p.real&&A&&(R||!A[$])&&l(A,$,k)))}}),sv=x(function(){var e=Rs(),t=Sr();e({target:"Object",stat:!0},{hasOwn:t})}),lv=x(function(e,t){sv();var r=Ya();t.exports=r.Object.hasOwn}),cv=x(function(e,t){var r=lv();t.exports=r}),dv=x(function(e,t){var r=cv();t.exports=r}),fv=x(function(e,t){var r=Es(),a=As(),n=r("keys");t.exports=function(i){return n[i]||(n[i]=a(i))}}),pv=x(function(e,t){var r=Lt();t.exports=!r(function(){function a(){}return a.prototype.constructor=null,Object.getPrototypeOf(new a)!==a.prototype})}),mv=x(function(e,t){var r=Sr(),a=Kt(),n=Cs(),i=fv(),o=pv(),u=i("IE_PROTO"),s=Object,c=s.prototype;t.exports=o?s.getPrototypeOf:function(l){var d=n(l);if(r(d,u))return d[u];var f=d.constructor;return a(f)&&d instanceof f?f.prototype:d instanceof s?c:null}}),hv=x(function(e,t){var r=Math.ceil,a=Math.floor;t.exports=Math.trunc||function(i){var o=+i;return(o>0?a:r)(o)}}),ks=x(function(e,t){var r=hv();t.exports=function(a){var n=+a;return n!==n||n===0?0:r(n)}}),vv=x(function(e,t){var r=ks(),a=Math.max,n=Math.min;t.exports=function(i,o){var u=r(i);return u<0?a(u+o,0):n(u,o)}}),gv=x(function(e,t){var r=ks(),a=Math.min;t.exports=function(n){return n>0?a(r(n),9007199254740991):0}}),bv=x(function(e,t){var r=gv();t.exports=function(a){return r(a.length)}}),yv=x(function(e,t){var r=Ga(),a=vv(),n=bv(),i=function(u){return function(s,c,l){var d=r(s),f=n(d),p=a(l,f),m;if(u&&c!==c){for(;f>p;)if(m=d[p++],m!==m)return!0}else for(;f>p;p++)if((u||p in d)&&d[p]===c)return u||p||0;return!u&&-1}};t.exports={includes:i(!0),indexOf:i(!1)}}),wv=x(function(e,t){t.exports={}}),Dv=x(function(e,t){var r=Yt(),a=Sr(),n=Ga(),i=yv().indexOf,o=wv(),u=r([].push);t.exports=function(s,c){var l=n(s),d=0,f=[],p;for(p in l)!a(o,p)&&a(l,p)&&u(f,p);for(;c.length>d;)a(l,p=c[d++])&&(~i(f,p)||u(f,p));return f}}),_v=x(function(e,t){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]}),xv=x(function(e,t){var r=Dv(),a=_v();t.exports=Object.keys||function(i){return r(i,a)}}),Ev=x(function(e,t){var r=kr(),a=Lt(),n=Yt(),i=mv(),o=xv(),u=Ga(),s=vs().f,c=n(s),l=n([].push),d=r&&a(function(){var p=Object.create(null);return p[2]=2,!c(p,2)}),f=function(m){return function(h){for(var v=u(h),g=o(v),b=d&&i(v)===null,y=g.length,_=0,A=[],R;y>_;)R=g[_++],(!r||(b?R in v:c(v,R)))&&l(A,m?[R,v[R]]:v[R]);return A}};t.exports={entries:f(!0),values:f(!1)}}),Cv=x(function(){var e=Rs(),t=Ev().values;e({target:"Object",stat:!0},{values:function(a){return t(a)}})}),Av=x(function(e,t){Cv();var r=Ya();t.exports=r.Object.values}),Fv=x(function(e,t){var r=Av();t.exports=r}),Tv=x(function(e,t){var r=Fv();t.exports=r}),Ss=x(function(e,t){(function(){var r={name:"doT",version:"1.1.1",templateSettings:{evaluate:/\{\{([\s\S]+?(\}?)+)\}\}/g,interpolate:/\{\{=([\s\S]+?)\}\}/g,encode:/\{\{!([\s\S]+?)\}\}/g,use:/\{\{#([\s\S]+?)\}\}/g,useParams:/(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,define:/\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,defineParams:/^\s*([\w$]+):([\s\S]+)/,conditional:/\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,iterate:/\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,varname:"it",strip:!0,append:!0,selfcontained:!1,doNotSkipEncoded:!1},template:void 0,compile:void 0,log:!0};(function(){if((typeof globalThis>"u"?"undefined":O(globalThis))!=="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{D.globalThis=function(){if(typeof self<"u")return self;if(typeof D<"u")return D;if(typeof Pt<"u")return Pt;if(typeof this<"u")return this;throw new Error("Unable to locate global `this`")}()}})(),r.encodeHTMLSource=function(u){var s={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},c=u?/[&<>"'\/]/g:/&(?!#?\w+;)|<|>|"|'|\//g;return function(l){return l?l.toString().replace(c,function(d){return s[d]||d}):""}},typeof t<"u"&&t.exports?t.exports=r:globalThis.doT=r;var a={append:{start:"'+(",end:")+'",startencode:"'+encodeHTML("},split:{start:"';out+=(",end:");out+='",startencode:"';out+=encodeHTML("}},n=/$^/;function i(u,s,c){return(typeof s=="string"?s:s.toString()).replace(u.define||n,function(l,d,f,p){return d.indexOf("def.")===0&&(d=d.substring(4)),d in c||(f===":"?(u.defineParams&&p.replace(u.defineParams,function(m,h,v){c[d]={arg:h,text:v}}),d in c||(c[d]=p)):new Function("def","def['"+d+"']="+p)(c)),""}).replace(u.use||n,function(l,d){u.useParams&&(d=d.replace(u.useParams,function(p,m,h,v){if(c[h]&&c[h].arg&&v){var g=(h+":"+v).replace(/'|\\/g,"_");return c.__exp=c.__exp||{},c.__exp[g]=c[h].text.replace(new RegExp("(^|[^\\w$])"+c[h].arg+"([^\\w$])","g"),"$1"+v+"$2"),m+"def.__exp['"+g+"']"}}));var f=new Function("def","return "+d)(c);return f&&i(u,f,c)})}function o(u){return u.replace(/\\('|\\)/g,"$1").replace(/[\r\t\n]/g," ")}r.template=function(u,s,c){s=s||r.templateSettings;var l=s.append?a.append:a.split,d,f=0,p,m=s.use||s.define?i(s,u,c||{}):u;m=("var out='"+(s.strip?m.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ").replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""):m).replace(/'|\\/g,"\\$&").replace(s.interpolate||n,function(h,v){return l.start+o(v)+l.end}).replace(s.encode||n,function(h,v){return d=!0,l.startencode+o(v)+l.end}).replace(s.conditional||n,function(h,v,g){return v?g?"';}else if("+o(g)+"){out+='":"';}else{out+='":g?"';if("+o(g)+"){out+='":"';}out+='"}).replace(s.iterate||n,function(h,v,g,b){return v?(f+=1,p=b||"i"+f,v=o(v),"';var arr"+f+"="+v+";if(arr"+f+"){var "+g+","+p+"=-1,l"+f+"=arr"+f+".length-1;while("+p+"",sameOrigin:""};Rv.forEach(function(e){var t=e.name,r=e.value,a=e.priority,n=e.group;Dt[t]=r,Dt[t+"_PRIO"]=a,Dt[t+"_GROUP"]=n,Dt.results[a]=r,Dt.resultGroups[a]=n,Dt.resultGroupMap[r]=n}),Object.freeze(Dt.results),Object.freeze(Dt.resultGroups),Object.freeze(Dt.resultGroupMap),Object.freeze(Dt);var ce=Dt;function kv(){(typeof console>"u"?"undefined":O(console))==="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}var fr=kv,Sv=/[\t\r\n\f]/g,Ov=function(){function e(){Et(this,e),this.parent=void 0}return Ct(e,[{key:"props",get:function(){throw new Error('VirtualNode class must have a "props" object consisting of "nodeType" and "nodeName" properties')}},{key:"attrNames",get:function(){throw new Error('VirtualNode class must have an "attrNames" property')}},{key:"attr",value:function(){throw new Error('VirtualNode class must have an "attr" function')}},{key:"hasAttr",value:function(){throw new Error('VirtualNode class must have a "hasAttr" function')}},{key:"hasClass",value:function(r){var a=this.attr("class");if(!a)return!1;var n=" "+r+" ";return(" "+a+" ").replace(Sv," ").indexOf(n)>=0}}]),e}(),Ge=Ov,yi={};yt(yi,{DqElement:function(){return Bt},aggregate:function(){return Ka},aggregateChecks:function(){return Ns},aggregateNodeResults:function(){return Is},aggregateResult:function(){return Ps},areStylesSet:function(){return qv},assert:function(){return he},checkHelper:function(){return Ci},clone:function(){return qt},closest:function(){return lt},collectResultsFromFrames:function(){return dl},contains:function(){return hr},convertSelector:function(){return tn},cssParser:function(){return Ws},deepMerge:function(){return zi},escapeSelector:function(){return Me},extendMetaData:function(){return Vi},filterHtmlAttrs:function(){return gf},finalizeRuleResult:function(){return ia},findBy:function(){return pa},getAllChecks:function(){return un},getAncestry:function(){return en},getBaseLang:function(){return Ar},getCheckMessage:function(){return wD},getCheckOption:function(){return Gn},getEnvironmentData:function(){return nr},getFlattenedTree:function(){return iu},getFrameContexts:function(){return BD},getFriendlyUriEnd:function(){return qs},getNodeAttributes:function(){return Za},getNodeFromTree:function(){return se},getPreloadConfig:function(){return pf},getRootNode:function(){return ma},getRule:function(){return Zd},getScroll:function(){return $t},getScrollState:function(){return zD},getSelector:function(){return Ei},getSelectorData:function(){return Qa},getShadowSelector:function(){return Di},getStandards:function(){return VD},getStyleSheetFactory:function(){return ef},getXpath:function(){return Us},injectStyle:function(){return UD},isHidden:function(){return GD},isHtmlElement:function(){return fu},isNodeInContext:function(){return pu},isShadowRoot:function(){return ln},isValidLang:function(){return Xn},isXHTML:function(){return Ja},matchAncestry:function(){return mu},matches:function(){return Fi},matchesExpression:function(){return Mr},matchesSelector:function(){return Or},memoize:function(){return ze},mergeResults:function(){return sn},nodeLookup:function(){return be},nodeSerializer:function(){return bt},nodeSorter:function(){return hu},parseCrossOriginStylesheet:function(){return gu},parseSameOriginStylesheet:function(){return af},parseStylesheet:function(){return vu},performanceTimer:function(){return He},pollyfillElementsFromPoint:function(){return nf},preload:function(){return df},preloadCssom:function(){return uf},preloadMedia:function(){return cf},processMessage:function(){return lu},publishMetaData:function(){return Yn},querySelectorAll:function(){return vt},querySelectorAllFilter:function(){return Nt},queue:function(){return Ft},respondable:function(){return _t},ruleShouldRun:function(){return vf},select:function(){return bu},sendCommandToFrame:function(){return ul},setScrollState:function(){return x_},shadowSelect:function(){return E_},shadowSelectAll:function(){return yu},shouldPreload:function(){return ff},toArray:function(){return Bs},tokenList:function(){return Qe},uniqueArray:function(){return Na},uuid:function(){return Rg},validInputTypes:function(){return Kn},validLangs:function(){return _f}});function Mv(e,t,r){t=t.slice(),r&&t.push(r);var a=t.map(function(n){return e.indexOf(n)}).sort();return e[a.pop()]}var Ka=Mv,Nv=ce.CANTTELL_PRIO,Iv=ce.FAIL_PRIO,Xa=[];Xa[ce.PASS_PRIO]=!0,Xa[ce.CANTTELL_PRIO]=null,Xa[ce.FAIL_PRIO]=!1;var Os=["any","all","none"];function Ms(e,t){return Os.reduce(function(r,a){return r[a]=(e[a]||[]).map(function(n){return t(n,a)}),r},{})}function Pv(e){var t=Object.assign({},e);Ms(t,function(n,i){var o=typeof n.result>"u"?-1:Xa.indexOf(n.result);n.priority=o!==-1?o:ce.CANTTELL_PRIO,i==="none"&&(n.priority===ce.PASS_PRIO?n.priority=ce.FAIL_PRIO:n.priority===ce.FAIL_PRIO&&(n.priority=ce.PASS_PRIO))});var r={all:t.all.reduce(function(n,i){return Math.max(n,i.priority)},0),none:t.none.reduce(function(n,i){return Math.max(n,i.priority)},0),any:t.any.reduce(function(n,i){return Math.min(n,i.priority)},4)%4};t.priority=Math.max(r.all,r.none,r.any);var a=[];return Os.forEach(function(n){t[n]=t[n].filter(function(i){return i.priority===t.priority&&i.priority===r[n]}),t[n].forEach(function(i){return a.push(i.impact)})}),[Nv,Iv].includes(t.priority)?t.impact=Ka(ce.impact,a):t.impact=null,Ms(t,function(n){delete n.result,delete n.priority}),t.result=ce.results[t.priority],delete t.priority,t}var Ns=Pv;function ia(e){var t=w._audit.rules.find(function(r){var a=r.id;return a===e.id});return t&&t.impact&&e.nodes.forEach(function(r){["any","all","none"].forEach(function(a){(r[a]||[]).forEach(function(n){n.impact=t.impact})})}),Object.assign(e,Is(e.nodes)),delete e.nodes,e}function Lv(e){var t={};if(e=e.map(function(i){if(i.any&&i.all&&i.none)return Ns(i);if(Array.isArray(i.node))return ia(i);throw new TypeError("Invalid Result type")}),e&&e.length){var r=e.map(function(i){return i.result});t.result=Ka(ce.results,r,t.result)}else t.result="inapplicable";ce.resultGroups.forEach(function(i){return t[i]=[]}),e.forEach(function(i){var o=ce.resultGroupMap[i.result];t[o].push(i)});var a=ce.FAIL_GROUP;if(t[a].length===0&&(a=ce.CANTTELL_GROUP),t[a].length>0){var n=t[a].map(function(i){return i.impact});t.impact=Ka(ce.impact,n)||null}else t.impact=null;return t}var Is=Lv;function wi(e,t,r){var a=Object.assign({},t);a.nodes=(a[r]||[]).concat(),ce.resultGroups.forEach(function(n){delete a[n]}),e[r].push(a)}function Bv(e){var t={};return ce.resultGroups.forEach(function(r){return t[r]=[]}),e.forEach(function(r){r.error?wi(t,r,ce.CANTTELL_GROUP):r.result===ce.NA?wi(t,r,ce.NA_GROUP):ce.resultGroups.forEach(function(a){Array.isArray(r[a])&&r[a].length>0&&wi(t,r,a)})}),t}var Ps=Bv;function Ls(e,t,r){var a=D.getComputedStyle(e,null);if(!a)return!1;for(var n=0;n=1&&n<=31||n==127||a==0&&n>=48&&n<=57||a==1&&n>=48&&n<=57&&o==45){i+="\\"+n.toString(16)+" ";continue}if(a==0&&r==1&&n==45){i+="\\"+t.charAt(a);continue}if(n>=128||n==45||n==95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122){i+=t.charAt(a);continue}i+="\\"+t.charAt(a)}return i}var Me=Vv;function Hv(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";return e.length!==0&&(e.match(/[0-9]/g)||"").length>=e.length/2}function oa(e,t){return[e.substring(0,t),e.substring(t)]}function ua(e){return e.replace(/\s+$/,"")}function $v(e){var t=e,r="",a="",n="",i="",o="",u="";if(e.includes("#")){var s=oa(e,e.indexOf("#")),c=P(s,2);e=c[0],u=c[1]}if(e.includes("?")){var l=oa(e,e.indexOf("?")),d=P(l,2);e=d[0],o=d[1]}if(e.includes("://")){var f=e.split("://"),p=P(f,2);r=p[0],e=p[1];var m=oa(e,e.indexOf("/")),h=P(m,2);a=h[0],e=h[1]}else if(e.substr(0,2)==="//"){e=e.substr(2);var v=oa(e,e.indexOf("/")),g=P(v,2);a=g[0],e=g[1]}if(a.substr(0,4)==="www."&&(a=a.substr(4)),a&&a.includes(":")){var b=oa(a,a.indexOf(":")),y=P(b,2);a=y[0],n=y[1]}return i=e,{original:t,protocol:r,domain:a,port:n,path:i,query:o,hash:u}}function Uv(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(e.length<=1||e.substr(0,5)==="data:"||e.substr(0,11)==="javascript:"||e.includes("?"))){var r=t.currentDomain,a=t.maxLength,n=a===void 0?25:a,i=$v(e),o=i.path,u=i.domain,s=i.hash,c=o.substr(o.substr(0,o.length-2).lastIndexOf("/")+1);if(s)return c&&(c+s).length<=n?ua(c+s):c.length<2&&s.length>2&&s.length<=n?ua(s):void 0;if(u&&u.length1)&&(l!==-1||c.length>2)&&c.length<=n&&!c.match(/index(\.[a-zA-Z]{2-4})?/)&&!Hv(c))return ua(c)}}var qs=Uv;function Gv(e){return e.attributes instanceof D.NamedNodeMap?e.attributes:e.cloneNode(!1).attributes}var Za=Gv,Wv=function(){var e;function t(r){var a,n,i=["matches","matchesSelector","mozMatchesSelector","webkitMatchesSelector","msMatchesSelector"],o=i.length;for(a=0;a2&&arguments[2]!==void 0?arguments[2]:{};if(!t)return"";var a=t.getRootNode&&t.getRootNode()||L;if(a.nodeType!==11)return e(t,r,a);for(var n=[];a.nodeType===11;){if(!a.host)return"";n.unshift({elm:t,doc:a}),t=a.host,a=t.getRootNode()}return n.unshift({elm:t,doc:a}),n.map(function(i){return e(i.elm,r,i.doc)})}var Zv=["class","style","id","selected","checked","disabled","tabindex","aria-checked","aria-selected","aria-invalid","aria-activedescendant","aria-busy","aria-disabled","aria-expanded","aria-grabbed","aria-pressed","aria-valuenow","xmlns"],Jv=31,Qv=/([\\"])/g,eg=/(\r\n|\r|\n)/g;function _i(e){return e.replace(Qv,"\\$1").replace(eg,"\\a ")}function js(e,t){var r=t.name,a;if(r.indexOf("href")!==-1||r.indexOf("src")!==-1){var n=qs(e.getAttribute(r));n?a=Me(t.name)+'$="'+_i(n)+'"':a=Me(t.name)+'="'+_i(e.getAttribute(r))+'"'}else a=Me(r)+'="'+_i(t.value)+'"';return a}function xi(e,t){return e.count "+i:i=u,o?o=o.filter(function(s){return Or(s,i)}):o=Array.from(r.querySelectorAll(i)),e=e.parentElement}while((o.length>1||n)&&e&&e.nodeType!==11);return o.length===1?i:i.indexOf(" > ")!==-1?":root"+i.substring(i.indexOf(" > ")):":root"}function Ei(e,t){return Di(og,e,t)}function Hs(e){var t=e.nodeName.toLowerCase(),r=e.parentElement;if(!r)return t;var a="";if(t!=="head"&&t!=="body"&&r.children.length>1){var n=Array.prototype.indexOf.call(r.children,e)+1;a=":nth-child(".concat(n,")")}return Hs(r)+" > "+t+a}function en(e,t){return Di(Hs,e,t)}function $s(e,t){var r,a;if(!e)return[];if(!t&&e.nodeType===9)return t=[{str:"html"}],t;if(t=t||[],e.parentNode&&e.parentNode!==e&&(t=$s(e.parentNode,t)),e.previousSibling){a=1,r=e.previousSibling;do r.nodeType===1&&r.nodeName===e.nodeName&&a++,r=r.previousSibling;while(r);a===1&&(a=null)}else if(e.nextSibling){r=e.nextSibling;do r.nodeType===1&&r.nodeName===e.nodeName?(a=1,r=null):(a=null,r=r.previousSibling);while(r)}if(e.nodeType===1){var n={};n.str=e.nodeName.toLowerCase();var i=e.getAttribute&&Me(e.getAttribute("id"));i&&e.ownerDocument.querySelectorAll("#"+i).length===1&&(n.id=e.getAttribute("id")),a>1&&(n.count=a),t.push(n)}return t}function ug(e){return e.reduce(function(t,r){return r.id?"/".concat(r.str,"[@id='").concat(r.id,"']"):t+"/".concat(r.str)+(r.count>0?"[".concat(r.count,"]"):"")},"")}function sg(e){var t=$s(e);return ug(t)}var Us=sg,sa={},lg={set:function(t,r){cg(t),sa[t]=r},get:function(t,r){if(dg(r),t in sa)return sa[t];if(typeof r=="function"){var a=r();return he(a!==void 0,"Cache creator function should not return undefined"),this.set(t,a),sa[t]}},clear:function(){sa={}}};function cg(e){he(typeof e=="string","key must be a string, "+O(e)+" given"),he(e!=="","key must not be empty")}function dg(e){he(typeof e=="function"||typeof e>"u","creator must be a function or undefined, "+O(e)+" given")}var oe=lg;function fg(e,t){var r=t||e;return oe.get("nodeMap")?oe.get("nodeMap").get(r):null}var se=fg,Gs="DqElm.RunOptions";function pg(e,t){if(t=t||300,e.length>t){var r=e.indexOf(">");e=e.substring(0,r+1)}return e}function mg(e){if(!(e!=null&&e.outerHTML))return"";var t=e.outerHTML;return!t&&typeof D.XMLSerializer=="function"&&(t=new D.XMLSerializer().serializeToString(e)),pg(t||"")}function pr(e){var t,r,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!a){var i;a=(i=oe.get(Gs))!==null&&i!==void 0?i:{}}if(this.spec=n,e instanceof Ge?(this._virtualNode=e,this._element=e.actualNode):(this._element=e,this._virtualNode=se(e)),this.fromFrame=((t=this.spec.selector)===null||t===void 0?void 0:t.length)>1,this._includeElementInJson=a.elementRef,a.absolutePaths&&(this._options={toRoot:!0}),this.nodeIndexes=[],Array.isArray(this.spec.nodeIndexes)?this.nodeIndexes=this.spec.nodeIndexes:typeof((r=this._virtualNode)===null||r===void 0?void 0:r.nodeIndex)=="number"&&(this.nodeIndexes=[this._virtualNode.nodeIndex]),this.source=null,!w._audit.noHtml){var o;this.source=(o=this.spec.source)!==null&&o!==void 0?o:mg(this._element)}}pr.prototype={get selector(){return this.spec.selector||[Ei(this.element,this._options)]},get ancestry(){return this.spec.ancestry||[en(this.element)]},get xpath(){return this.spec.xpath||[Us(this.element)]},get element(){return this._element},toJSON:function(){var t={selector:this.selector,source:this.source,xpath:this.xpath,ancestry:this.ancestry,nodeIndexes:this.nodeIndexes,fromFrame:this.fromFrame};return this._includeElementInJson&&(t.element=this._element),t}},pr.fromFrame=function(t,r,a){var n=pr.mergeSpecs(t,a);return new pr(a.element,r,n)},pr.mergeSpecs=function(t,r){return le({},t,{selector:[].concat(ae(r.selector),ae(t.selector)),ancestry:[].concat(ae(r.ancestry),ae(t.ancestry)),xpath:[].concat(ae(r.xpath),ae(t.xpath)),nodeIndexes:[].concat(ae(r.nodeIndexes),ae(t.nodeIndexes)),fromFrame:!0})},pr.setRunOptions=function(t){var r=t.elementRef,a=t.absolutePaths;oe.set(Gs,{elementRef:r,absolutePaths:a})};var Bt=pr;function hg(e,t,r,a){return{isAsync:!1,async:function(){return this.isAsync=!0,function(i){i instanceof Error?a(i):(e.result=i,r(e))}},data:function(i){e.data=i},relatedNodes:function(i){D.Node&&(i instanceof D.Node||i instanceof Ge?i=[i]:i=Bs(i),e.relatedNodes=[],i.forEach(function(o){if(o instanceof Ge&&(o=o.actualNode),o instanceof D.Node){var u=new Bt(o);e.relatedNodes.push(u)}}))}}}var Ci=hg;function qt(e){return Ai(e,new Map)}function Ai(e,t){var r,a;if(e===null||O(e)!=="object"||(r=D)!==null&&r!==void 0&&r.Node&&e instanceof D.Node||(a=D)!==null&&a!==void 0&&a.HTMLCollection&&e instanceof D.HTMLCollection||"nodeName"in e&&"nodeType"in e&&"ownerDocument"in e)return e;if(t.has(e))return t.get(e);if(Array.isArray(e)){var n=[];return t.set(e,n),e.forEach(function(u){n.push(Ai(u,t))}),n}var i={};t.set(e,i);for(var o in e)i[o]=Ai(e[o],t);return i}var vg=wt(fs()),la=new vg.CssSelectorParser;la.registerSelectorPseudos("not"),la.registerSelectorPseudos("is"),la.registerNestingOperators(">"),la.registerAttrEqualityMods("^","$","*","~");var Ws=la;function Fi(e,t){var r=tn(t);return r.some(function(a){return Mr(e,a)})}function gg(e,t){return e.props.nodeType===1&&(t.tag==="*"||e.props.nodeName===t.tag)}function bg(e,t){return!t.classes||t.classes.every(function(r){return e.hasClass(r.value)})}function yg(e,t){return!t.attributes||t.attributes.every(function(r){var a=e.attr(r.key);return a!==null&&r.test(a)})}function wg(e,t){return!t.id||e.props.id===t.id}function Dg(e,t){return!!(!t.pseudos||t.pseudos.every(function(r){if(r.name==="not")return!r.expressions.some(function(a){return Mr(e,a)});if(r.name==="is")return r.expressions.some(function(a){return Mr(e,a)});throw new Error("the pseudo selector "+r.name+" has not yet been implemented")}))}function Ys(e,t){return gg(e,t)&&bg(e,t)&&yg(e,t)&&wg(e,t)&&Dg(e,t)}var ca=function(){var e=/(?=[\-\[\]{}()*+?.\\\^$|,#\s])/g,t="\\";return function(r){return r.replace(e,t)}}(),Ti=/\\/g;function _g(e){if(e)return e.map(function(t){var r=t.name.replace(Ti,""),a=(t.value||"").replace(Ti,""),n,i;switch(t.operator){case"^=":i=new RegExp("^"+ca(a));break;case"$=":i=new RegExp(ca(a)+"$");break;case"~=":i=new RegExp("(^|\\s)"+ca(a)+"(\\s|$)");break;case"|=":i=new RegExp("^"+ca(a)+"(-|$)");break;case"=":n=function(u){return a===u};break;case"*=":n=function(u){return u&&u.includes(a)};break;case"!=":n=function(u){return a!==u};break;default:n=function(u){return u!==null}}return a===""&&/^[*$^]=$/.test(t.operator)&&(n=function(){return!1}),n||(n=function(u){return u&&i.test(u)}),{key:r,value:a,type:typeof t.value>"u"?"attrExist":"attrValue",test:n}})}function xg(e){if(e)return e.map(function(t){return t=t.replace(Ti,""),{value:t,regexp:new RegExp("(^|\\s)"+ca(t)+"(\\s|$)")}})}function Eg(e){if(e)return e.map(function(t){var r;return["is","not"].includes(t.name)&&(r=t.value,r=r.selectors?r.selectors:[r],r=Ks(r)),{name:t.name,expressions:r,value:t.value}})}function Ks(e){return e.map(function(t){for(var r=[],a=t.rule;a;)r.push({tag:a.tagName?a.tagName.toLowerCase():"*",combinator:a.nestingOperator?a.nestingOperator:" ",id:a.id,attributes:_g(a.attrs),classes:xg(a.classNames),pseudos:Eg(a.pseudos)}),a=a.rule;return r})}function tn(e){var t=Ws.parse(e);return t=t.selectors?t.selectors:[t],Ks(t)}function Xs(e,t,r,a){if(!e)return!1;for(var n=Array.isArray(t),i=n?t[r]:t,o=Ys(e,i);!o&&a&&e.parent;)e=e.parent,o=Ys(e,i);if(r>0){if([" ",">"].includes(i.combinator)===!1)throw new Error("axe.utils.matchesExpression does not support the combinator: "+i.combinator);o=o&&Xs(e.parent,t,r-1,i.combinator===" ")}return o}function Mr(e,t,r){return Xs(e,t,t.length-1,r)}function Cg(e,t){for(;e;){if(Fi(e,t))return e;if(typeof e.parent>"u")throw new TypeError("Cannot resolve parent for non-DOM nodes");e=e.parent}return null}var lt=Cg;function rn(){}function Ri(e){if(typeof e!="function")throw new TypeError("Queue methods require functions as arguments")}function Ag(){var e=[],t=0,r=0,a=rn,n=!1,i,o=function(p){i=p,setTimeout(function(){i!=null&&fr("Uncaught error (of queue)",i)},1)},u=o;function s(f){return function(p){e[f]=p,r-=1,!r&&a!==rn&&(n=!0,a(e))}}function c(f){return a=rn,u(f),e}function l(){for(var f=e.length;t>>((t&3)<<3)&255;return Oi});for(var Oi,Zs=typeof D.Buffer=="function"?D.Buffer:Array,Mi=[],Js={},Pr=0;Pr<256;Pr++)Mi[Pr]=(Pr+256).toString(16).substr(1),Js[Mi[Pr]]=Pr;function Fg(e,t,r){var a=t&&r||0,n=0;for(t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,function(i){n<16&&(t[a+n++]=Js[i])});n<16;)t[a+n++]=0;return t}function Ni(e,t){var r=t||0,a=Mi;return a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+"-"+a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]+a[e[r++]]}var Xt=Ir(),Tg=[Xt[0]|1,Xt[1],Xt[2],Xt[3],Xt[4],Xt[5]],Qs=(Xt[6]<<8|Xt[7])&16383,Ii=0,Pi=0;function el(e,t,r){var a=t&&r||0,n=t||[];e=e||{};var i=e.clockseq!=null?e.clockseq:Qs,o=e.msecs!=null?e.msecs:new Date().getTime(),u=e.nsecs!=null?e.nsecs:Pi+1,s=o-Ii+(u-Pi)/1e4;if(s<0&&e.clockseq==null&&(i=i+1&16383),(s<0||o>Ii)&&e.nsecs==null&&(u=0),u>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");Ii=o,Pi=u,Qs=i,o+=122192928e5;var c=((o&268435455)*1e4+u)%4294967296;n[a++]=c>>>24&255,n[a++]=c>>>16&255,n[a++]=c>>>8&255,n[a++]=c&255;var l=o/4294967296*1e4&268435455;n[a++]=l>>>8&255,n[a++]=l&255,n[a++]=l>>>24&15|16,n[a++]=l>>>16&255,n[a++]=i>>>8|128,n[a++]=i&255;for(var d=e.node||Tg,f=0;f<6;f++)n[a+f]=d[f];return t||Ni(n)}function mr(e,t,r){var a=t&&r||0;typeof e=="string"&&(t=e=="binary"?new Zs(16):null,e=null),e=e||{};var n=e.random||(e.rng||Ir)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t)for(var i=0;i<16;i++)t[a+i]=n[i];return t||Ni(n)}Nr=mr,Nr.v1=el,Nr.v4=mr,Nr.parse=Fg,Nr.unparse=Ni,Nr.BufferClass=Zs,w._uuid=el();var Rg=mr,kg=Object.freeze(["EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function Sg(e){var t=e.topic,r=e.channelId,a=e.message,n=e.messageId,i=e.keepalive,o={channelId:r,topic:t,messageId:n,keepalive:!!i,source:tl()};return a instanceof Error?o.error={name:a.name,message:a.message,stack:a.stack}:o.payload=a,JSON.stringify(o)}function Og(e){var t;try{t=JSON.parse(e)}catch{return}if(Mg(t)){var r=t,a=r.topic,n=r.channelId,i=r.messageId,o=r.keepalive,u=O(t.error)==="object"?Ng(t.error):t.payload;return{topic:a,message:u,messageId:i,channelId:n,keepalive:!!o}}}function Mg(e){return e!==null&&O(e)==="object"&&typeof e.channelId=="string"&&e.source===tl()}function Ng(e){var t=e.message||"Unknown error occurred",r=kg.includes(e.name)?e.name:"Error",a=D[r]||Error;return e.stack&&(t+=` +`+e.stack.replace(e.message,"")),new a(t)}function tl(){var e="axeAPI",t="";return typeof w<"u"&&w._audit&&w._audit.application&&(e=w._audit.application),typeof w<"u"&&(t=w.version),e+"."+t}function Li(e){al(e),he(D.parent===e,"Source of the response must be the parent window.")}function rl(e){al(e),he(e.parent===D,"Respondable target must be a frame in the current window")}function al(e){he(D!==e,"Messages can not be sent to the same window.")}var an={};function Ig(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;he(!an[e],"A replyHandler already exists for this message channel."),an[e]={replyHandler:t,sendToParent:r}}function Pg(e){return an[e]}function Lg(e){delete an[e]}var nn=[];function Bi(){var e="".concat(mr(),":").concat(mr());return nn.includes(e)?Bi():(nn.push(e),e)}function Bg(e){return nn.includes(e)?!1:(nn.push(e),!0)}function qi(e,t,r,a){if(r?Li(e):rl(e),t.message instanceof Error&&!r)return w.log(t.message),!1;var n=Sg(le({messageId:Bi()},t)),i=w._audit.allowedOrigins;return!i||!i.length?!1:(typeof a=="function"&&Ig(t.channelId,a,r),i.forEach(function(o){try{e.postMessage(n,o)}catch(u){throw u instanceof e.DOMException?new Error('allowedOrigins value "'.concat(o,'" is not a valid origin')):u}}),!0)}function qg(e,t,r){if(!e.parent!==D)return w.log(t);try{qi(e,{topic:null,channelId:r,message:t,messageId:Bi(),keepalive:!0},!0)}catch(a){return w.log(a)}}function nl(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return function(n,i,o){var u={channelId:t,message:n,keepalive:i};qi(e,u,r,o)}}function jg(e){var t=w._audit.allowedOrigins;return t&&t.includes("*")||t.includes(e)}function zg(e,t){var r=e.origin,a=e.data,n=e.source;try{var i=Og(a)||{},o=i.channelId,u=i.message,s=i.messageId;if(!jg(r)||!Bg(s))return;if(u instanceof Error&&n.parent!==D)return w.log(u),!1;try{if(i.topic){var c=nl(n,o);Li(n),t(i,c)}else Vg(n,i)}catch(l){qg(n,l,o)}}catch(l){return w.log(l),!1}}function Vg(e,t){var r=t.channelId,a=t.message,n=t.keepalive,i=Pg(r)||{},o=i.replyHandler,u=i.sendToParent;if(o){u?Li(e):rl(e);var s=nl(e,r,u);!n&&r&&Lg(r);try{o(a,n,s)}catch(c){w.log(c),s(c,n)}}}var Hg={open:function(t){if(typeof D.addEventListener=="function"){var r=function(n){zg(n,t)};return D.addEventListener("message",r,!1),function(){D.removeEventListener("message",r,!1)}}},post:function(t,r,a){return typeof D.addEventListener!="function"?!1:qi(t,r,!1,a)}};function il(e){e.updateMessenger(Hg)}var on,ol,ji={};function _t(e,t,r,a,n){var i={topic:t,message:r,channelId:"".concat(mr(),":").concat(mr()),keepalive:a};return ol(e,i,n)}function $g(e,t){var r=e.topic,a=e.message,n=e.keepalive,i=ji[r];if(i)try{i(a,n,t)}catch(o){w.log(o),t(o,n)}}_t.updateMessenger=function(t){var r=t.open,a=t.post;he(typeof r=="function","open callback must be a function"),he(typeof a=="function","post callback must be a function"),on&&on();var n=r($g);n?(he(typeof n=="function","open callback must return a cleanup function"),on=n):on=null,ol=a},_t.subscribe=function(t,r){he(typeof r=="function","Subscriber callback must be a function"),he(!ji[t],"Topic ".concat(t," is already registered to.")),ji[t]=r},_t.isInFrame=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:D;return!!t.frameElement},il(_t);function ul(e,t,r,a){var n,i,o=e.contentWindow,u=(n=(i=t.options)===null||i===void 0?void 0:i.pingWaitTime)!==null&&n!==void 0?n:500;if(!o){fr("Frame does not have a content window",e),r(null);return}if(u===0){sl(e,t,r,a);return}var s=setTimeout(function(){s=setTimeout(function(){t.debug?a(ll("No response from frame",e)):r(null)},0)},u);_t(o,"axe.ping",null,void 0,function(){clearTimeout(s),sl(e,t,r,a)})}function sl(e,t,r,a){var n,i,o=(n=(i=t.options)===null||i===void 0?void 0:i.frameWaitTime)!==null&&n!==void 0?n:6e4,u=e.contentWindow,s=setTimeout(function(){a(ll("Axe in frame timed out",e))},o);_t(u,"axe.start",t,void 0,function(c){clearTimeout(s),c instanceof Error?a(c):r(c)})}function ll(e,t){var r;return w._tree&&(r=Ei(t)),new Error(e+": "+(r||t))}var da=null,fa={update:function(t){he(O(t)==="object","serializer must be an object"),da=t},toSpec:function(t){return fa.dqElmToSpec(new Bt(t))},dqElmToSpec:function(t,r){var a;return t instanceof Bt?(r&&(t=Ug(t,r)),typeof((a=da)===null||a===void 0?void 0:a.toSpec)=="function"?da.toSpec(t):t.toJSON()):t},mergeSpecs:function(t,r){var a;return typeof((a=da)===null||a===void 0?void 0:a.mergeSpecs)=="function"?da.mergeSpecs(t,r):Bt.mergeSpecs(t,r)},mapRawResults:function(t){return t.map(function(r){return le({},r,{nodes:fa.mapRawNodeResults(r.nodes)})})},mapRawNodeResults:function(t){return t==null?void 0:t.map(function(r){var a=r.node,n=je(r,Hp);n.node=fa.dqElmToSpec(a);for(var i=0,o=["any","all","none"];i0||i===0&&r.selector.length0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=Math.max(e==null?void 0:e.length,t==null?void 0:t.length),a=0;a(t.left|0)&&(e.top|0)<(t.bottom|0)&&(e.bottom|0)>(t.top|0)}var ml=ze(function(t){var r=[];if(!t)return r;var a=t.getComputedStylePropertyValue("overflow");return a==="hidden"&&r.push(t),r.concat(ml(t.parent))}),ha=ml,ob=/rect\s*\(([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px\s*\)/,ub=/(\w+)\((\d+)/;function hl(e){return["style","script","noscript","template"].includes(e.props.nodeName)}function vl(e){return e.props.nodeName==="area"?!1:e.getComputedStylePropertyValue("display")==="none"}function gl(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.isAncestor;return!r&&["hidden","collapse"].includes(e.getComputedStylePropertyValue("visibility"))}function bl(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.isAncestor;return!!r&&e.getComputedStylePropertyValue("content-visibility")==="hidden"}function yl(e){return e.attr("aria-hidden")==="true"}function wl(e){return e.getComputedStylePropertyValue("opacity")==="0"}function Dl(e){var t=$t(e.actualNode),r=parseInt(e.getComputedStylePropertyValue("height")),a=parseInt(e.getComputedStylePropertyValue("width"));return!!t&&(r===0||a===0)}function _l(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.isAncestor;if(r)return!1;var a=e.boundingClientRect,n=ha(e);return n.length?n.some(function(i){var o=i.boundingClientRect;return o.width<2||o.height<2?!0:!$i(a,o)}):!1}function xl(e){var t=e.getComputedStylePropertyValue("clip").match(ob),r=e.getComputedStylePropertyValue("clip-path").match(ub);if(t&&t.length===5){var a=e.getComputedStylePropertyValue("position");if(["fixed","absolute"].includes(a))return t[3]-t[1]<=0&&t[2]-t[4]<=0}if(r){var n=r[1],i=parseInt(r[2],10);switch(n){case"inset":return i>=50;case"circle":return i===0}}return!1}function Ui(e,t){var r=lt(e,"map");if(!r)return!0;var a=r.attr("name");if(!a)return!0;var n=ma(e.actualNode);if(!n||n.nodeType!==9)return!0;var i=vt(w._tree,'img[usemap="#'.concat(Me(a),'"]'));return!i||!i.length?!0:i.some(function(o){return!t(o)})}function El(e){var t;if(((t=e.parent)===null||t===void 0?void 0:t.props.nodeName)!=="details")return!1;if(e.props.nodeName==="summary"){var r=e.parent.children.find(function(a){return a.props.nodeName==="summary"});if(r===e)return!1}return!e.parent.hasAttr("open")}var sb=[vl,gl,bl,El];function Zt(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.skipAncestors,a=t.isAncestor,n=a===void 0?!1:a;return e=be(e).vNode,r?Cl(e,n):Al(e,n)}var Cl=ze(function(t,r){return hl(t)?!0:t.actualNode?!!(sb.some(function(a){return a(t,{isAncestor:r})})||!t.actualNode.isConnected):!1}),Al=ze(function(t,r){return Cl(t,r)?!0:t.parent?Al(t.parent,!0):!1});function Fl(e){if(e.assignedSlot)return Fl(e.assignedSlot);if(e.parentNode){var t=e.parentNode;if(t.nodeType===1)return t;if(t.host)return t.host}return null}var We=Fl;function lb(e){if(!e.nodeType&&e.document&&(e=e.document),e.nodeType===9){var t=e.documentElement,r=e.body;return{left:t&&t.scrollLeft||r&&r.scrollLeft||0,top:t&&t.scrollTop||r&&r.scrollTop||0}}return{left:e.scrollLeft,top:e.scrollTop}}var Tl=lb;function cb(e){var t=Tl(L),r=t.left,a=t.top,n=e.getBoundingClientRect();return{top:n.top+a,right:n.right+r,bottom:n.bottom+a,left:n.left+r,width:n.right-n.left,height:n.bottom-n.top}}var Gi=cb;function db(e){var t=e.document,r=t.documentElement;if(e.innerWidth)return{width:e.innerWidth,height:e.innerHeight};if(r)return{width:r.clientWidth,height:r.clientHeight};var a=t.body;return{width:a.clientWidth,height:a.clientHeight}}var cn=db;function fb(e,t){for(e=We(e);e&&e.nodeName.toLowerCase()!=="html";){if(e.scrollTop&&(t+=e.scrollTop,t>=0))return!1;e=We(e)}return!0}function pb(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.isAncestor;if(r)return!1;var a=be(e),n=a.domNode;if(n){var i,o=L.documentElement,u=D.getComputedStyle(n),s=D.getComputedStyle(L.body||o).getPropertyValue("direction"),c=Gi(n);if(c.bottom<0&&(fb(n,c.bottom)||u.position==="absolute"))return!0;if(c.left===0&&c.right===0)return!1;if(s==="ltr"){if(c.right<=0)return!0}else if(i=Math.max(o.scrollWidth,cn(D).width),c.left>=i)return!0;return!1}}var dn=pb,mb=[wl,Dl,_l,xl,dn];function ct(e){return e=be(e).vNode,Wi(e)}var Wi=ze(function(t,r){return t.actualNode&&t.props.nodeName==="area"?!Ui(t,Wi):Zt(t,{skipAncestors:!0,isAncestor:r})||t.actualNode&&mb.some(function(a){return a(t,{isAncestor:r})})?!1:t.parent?Wi(t.parent,!0):!0});function fn(e,t){var r=Math.min(e.top,t.top),a=Math.max(e.right,t.right),n=Math.max(e.bottom,t.bottom),i=Math.min(e.left,t.left);return new D.DOMRect(i,r,a-i,n-r)}function pn(e,t){var r=e.x,a=e.y,n=t.top,i=t.right,o=t.bottom,u=t.left;return a>=n&&r<=i&&a<=o&&r>=u}var Rl={};yt(Rl,{getBoundingRect:function(){return fn},getIntersectionRect:function(){return mn},getOffset:function(){return Sl},getRectCenter:function(){return va},hasVisualOverlap:function(){return Yi},isPointInRect:function(){return pn},rectHasMinimumSize:function(){return jt},rectsOverlap:function(){return $i},splitRects:function(){return Ki}});function mn(e,t){var r=Math.max(e.left,t.left),a=Math.min(e.right,t.right),n=Math.max(e.top,t.top),i=Math.min(e.bottom,t.bottom);return r>=a||n>=i?null:new D.DOMRect(r,n,a-r,i-n)}function va(e){var t=e.left,r=e.top,a=e.width,n=e.height;return new D.DOMPoint(t+a/2,r+n/2)}var kl=.05;function jt(e,t){var r=t.width,a=t.height;return r+kl>=e&&a+kl>=e}function Sl(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:12,a=bn(e),n=bn(t);if(!a.length||!n.length)return 0;var i=a.reduce(fn),o=va(i),u=1/0,s=Fe(n),c;try{for(s.s();!(c=s.n()).done;){var l=c.value;if(pn(o,l))return 0;var d=hb(o,l),f=Ol(o,d);u=Math.min(u,f)}}catch(g){s.e(g)}finally{s.f()}var p=Yl(t);if(jt(r*2,p))return u;var m=n.reduce(fn),h=va(m),v=Ol(o,h)-r;return Math.max(0,Math.min(u,v))}function hb(e,t){var r,a;return e.xt.right?r=t.right:r=e.x,e.yt.bottom?a=t.bottom:a=e.y,{x:r,y:a}}function Ol(e,t){return Math.hypot(e.x-t.x,e.y-t.y)}function Yi(e,t){var r=e.boundingClientRect,a=t.boundingClientRect;return r.left>=a.right||r.right<=a.left||r.top>=a.bottom||r.bottom<=a.top?!1:ro(e,t)>0}function Ki(e,t){var r=[e],a=Fe(t),n;try{var i=function(){var s=n.value;if(r=r.reduce(function(c,l){return c.concat(vb(l,s))},[]),r.length>4e3)return{v:[]}},o;for(a.s();!(n=a.n()).done;)if(o=i(),o)return o.v}catch(u){a.e(u)}finally{a.f()}return r}function vb(e,t){var r=e.top,a=e.left,n=e.bottom,i=e.right,o=rt.top,u=at.left,s=[];if(hn(t.top,r,n)&&u&&s.push({top:r,left:a,bottom:t.top,right:i}),hn(t.right,a,i)&&o&&s.push({top:r,left:t.right,bottom:n,right:i}),hn(t.bottom,r,n)&&u&&s.push({top:t.bottom,right:i,bottom:n,left:a}),hn(t.left,a,i)&&o&&s.push({top:r,left:a,bottom:n,right:t.left}),s.length===0){if(bb(e,t))return[];s.push(e)}return s.map(gb)}var hn=function(t,r,a){return t>r&&t=t.top&&e.left>=t.left&&e.bottom<=t.bottom&&e.right<=t.right}var Ml=0,yb=.1,Nl=.2,Il=.3,Xi=0;function vr(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:L.body,t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(oe.get("gridCreated")&&!r)return ce.gridSize;if(oe.set("gridCreated",!0),!r){var a,n=se(L.documentElement);if(n||(n=new ru(L.documentElement)),Xi=0,n._stackingOrder=[Bl(Ml,Xi++,null)],(a=t)!==null&&a!==void 0||(t=new Zi),ql(t,n),$t(n.actualNode)){var i=new Zi(n);n._subGrid=i}}for(var o=L.createTreeWalker(e,D.NodeFilter.SHOW_ELEMENT,null,!1),u=r?o.nextNode():o.currentNode;u;){var s=se(u);s&&s.parent?r=s.parent:u.assignedSlot?r=se(u.assignedSlot):u.parentElement?r=se(u.parentElement):u.parentNode&&se(u.parentNode)&&(r=se(u.parentNode)),s||(s=new w.VirtualNode(u,r)),s._stackingOrder=wb(s,r,Xi++);var c=xb(s,r),l=c?c._subGrid:t;if($t(s.actualNode)){var d=new Zi(s);s._subGrid=d}var f=s.boundingClientRect;f.width!==0&&f.height!==0&&ct(u)&&ql(l,s),ln(u)&&vr(u.shadowRoot,l,s),u=o.nextNode()}return ce.gridSize}function Pl(e,t){var r=e.getComputedStylePropertyValue("position"),a=e.getComputedStylePropertyValue("z-index");if(r==="fixed"||r==="sticky"||a!=="auto"&&r!=="static"||e.getComputedStylePropertyValue("opacity")!=="1")return!0;var n=e.getComputedStylePropertyValue("-webkit-transform")||e.getComputedStylePropertyValue("-ms-transform")||e.getComputedStylePropertyValue("transform")||"none";if(n!=="none")return!0;var i=e.getComputedStylePropertyValue("mix-blend-mode");if(i&&i!=="normal")return!0;var o=e.getComputedStylePropertyValue("filter");if(o&&o!=="none")return!0;var u=e.getComputedStylePropertyValue("perspective");if(u&&u!=="none")return!0;var s=e.getComputedStylePropertyValue("clip-path");if(s&&s!=="none")return!0;var c=e.getComputedStylePropertyValue("-webkit-mask")||e.getComputedStylePropertyValue("mask")||"none";if(c!=="none")return!0;var l=e.getComputedStylePropertyValue("-webkit-mask-image")||e.getComputedStylePropertyValue("mask-image")||"none";if(l!=="none")return!0;var d=e.getComputedStylePropertyValue("-webkit-mask-border")||e.getComputedStylePropertyValue("mask-border")||"none";if(d!=="none"||e.getComputedStylePropertyValue("isolation")==="isolate")return!0;var f=e.getComputedStylePropertyValue("will-change");if(f==="transform"||f==="opacity"||e.getComputedStylePropertyValue("-webkit-overflow-scrolling")==="touch")return!0;var p=e.getComputedStylePropertyValue("contain");return!!(["layout","paint","strict","content"].includes(p)||a!=="auto"&&Ll(t))}function Ll(e){if(!e)return!1;var t=e.getComputedStylePropertyValue("display");return["flex","inline-flex","grid","inline-grid"].includes(t)}function wb(e,t,r){var a=t._stackingOrder.slice();if(Pl(e,t)){var n=a.findIndex(function(o){var u=o.stackLevel;return[Ml,Nl,Il].includes(u)});n!==-1&&a.splice(n,a.length-n)}var i=Db(e,t);return i!==null&&a.push(Bl(i,r,e)),a}function Bl(e,t,r){return{stackLevel:e,treeOrder:t,vNode:r}}function Db(e,t){var r=_b(e,t);return["auto","0"].includes(r)?e.getComputedStylePropertyValue("position")!=="static"?Il:e.getComputedStylePropertyValue("float")!=="none"?Nl:Pl(e,t)?yb:null:parseInt(r)}function _b(e,t){var r=e.getComputedStylePropertyValue("position");return r==="static"&&!Ll(t)?"auto":e.getComputedStylePropertyValue("z-index")}function xb(e,t){for(var r=null,a=[e];t;){if($t(t.actualNode)){r=t;break}if(t._scrollRegionParent){r=t._scrollRegionParent;break}a.push(t),t=se(t.actualNode.parentElement||t.actualNode.parentNode)}return a.forEach(function(n){return n._scrollRegionParent=r}),r}function ql(e,t){var r=ha(t);t.clientRects.forEach(function(a){var n,i=r.reduce(function(u,s){return u&&mn(u,s.boundingClientRect)},a);if(i){(n=t._grid)!==null&&n!==void 0||(t._grid=e);var o=e.getGridPositionOfRect(i);e.loopGridPosition(o,function(u){u.includes(t)||u.push(t)})}})}var Zi=function(){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;Et(this,e),this.container=t,this.cells=[]}return Ct(e,[{key:"toGridIndex",value:function(r){return Math.floor(r/ce.gridSize)}},{key:"getCellFromPoint",value:function(r){var a,n,i=r.x,o=r.y;he(this.boundaries,"Grid does not have cells added");var u=this.toGridIndex(o),s=this.toGridIndex(i);he(pn({y:u,x:s},this.boundaries),"Element midpoint exceeds the grid bounds");var c=(a=this.cells[u-this.cells._negativeIndex])!==null&&a!==void 0?a:[];return(n=c[s-c._negativeIndex])!==null&&n!==void 0?n:[]}},{key:"loopGridPosition",value:function(r,a){var n=r,i=n.left,o=n.right,u=n.top,s=n.bottom;this.boundaries&&(r=fn(this.boundaries,r)),this.boundaries=r,jl(this.cells,u,s,function(c,l){jl(c,i,o,function(d,f){a(d,{row:l,col:f})})})}},{key:"getGridPositionOfRect",value:function(r){var a=r.top,n=r.right,i=r.bottom,o=r.left,u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return a=this.toGridIndex(a-u),n=this.toGridIndex(n+u-1),i=this.toGridIndex(i+u-1),o=this.toGridIndex(o-u),new D.DOMRect(o,a,n-o,i-a)}}]),e}();function jl(e,t,r,a){var n;if((n=e._negativeIndex)!==null&&n!==void 0||(e._negativeIndex=0),t1&&arguments[1]!==void 0?arguments[1]:0;if(vr(),!((t=e._grid)!==null&&t!==void 0&&(t=t.cells)!==null&&t!==void 0&&t.length))return[];var a=e.boundingClientRect,n=e._grid,i=Ji(e),o=n.getGridPositionOfRect(a,r),u=[];return n.loopGridPosition(o,function(s){var c=Fe(s),l;try{for(c.s();!(l=c.n()).done;){var d=l.value;d&&d!==e&&!u.includes(d)&&i===Ji(d)&&u.push(d)}}catch(f){c.e(f)}finally{c.f()}}),u}var Ji=ze(function(e){return e?e.getComputedStylePropertyValue("position")==="fixed"?!0:Ji(e.parent):!1}),Eb=ze(function(){var t;if(!w._tree)return null;var r=Nt(w._tree[0],"dialog[open]",function(n){var i=n.boundingClientRect,o=L.elementsFromPoint(i.left+1,i.top+1);return o.includes(n.actualNode)&&ct(n)});if(!r.length)return null;var a=r.find(function(n){var i=n.boundingClientRect,o=L.elementsFromPoint(i.left-10,i.top-10);return o.includes(n.actualNode)});return a||((t=r.find(function(n){var i,o=(i=Cb(n))!==null&&i!==void 0?i:{},u=o.vNode,s=o.rect;if(!u)return!1;var c=L.elementsFromPoint(s.left+1,s.top+1);return!c.includes(u.actualNode)}))!==null&&t!==void 0?t:null)}),zl=Eb;function Cb(e){vr();var t=w._tree[0]._grid,r=new D.DOMRect(0,0,D.innerWidth,D.innerHeight);if(t)for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:{},r=t.skipAncestors,a=t.isAncestor;return r?Vl(e,a):Hl(e,a)}var Vl=ze(function(t,r){if(t.hasAttr("inert"))return!0;if(!r&&t.actualNode){var a=zl();if(a&&!hr(a,t))return!0}return!1}),Hl=ze(function(t,r){return Vl(t,r)?!0:t.parent?Hl(t.parent,!0):!1}),Ab=["button","command","fieldset","keygen","optgroup","option","select","textarea","input"];function Fb(e){return Ab.includes(e)}function Tb(e){var t=be(e),r=t.vNode;if(Fb(r.props.nodeName)&&r.hasAttr("disabled")||gn(r))return!0;for(var a=r.parent,n=[],i=!1;a&&a.shadowId===r.shadowId&&!i&&(n.push(a),a.props.nodeName!=="legend");){if(a._inDisabledFieldset!==void 0){i=a._inDisabledFieldset;break}a.props.nodeName==="fieldset"&&a.hasAttr("disabled")&&(i=!0),a=a.parent}return n.forEach(function(o){return o._inDisabledFieldset=i}),i?!0:r.props.nodeName!=="area"&&r.actualNode?Zt(r):!1}var Qi=Tb,Rb=/^\/\#/,kb=/^#[!/]/;function eo(e){var t,r=e.getAttribute("href");if(!r||r==="#")return!1;if(Rb.test(r))return!0;var a=e.hash,n=e.protocol,i=e.hostname,o=e.port,u=e.pathname;if(kb.test(a))return!1;if(r.charAt(0)==="#")return!0;if(typeof((t=D.location)===null||t===void 0?void 0:t.origin)!="string"||D.location.origin.indexOf("://")===-1)return null;var s=D.location.origin+D.location.pathname,c;return i?c="".concat(n,"//").concat(i).concat(o?":".concat(o):""):c=D.location.origin,u?c+=(u[0]!=="/"?"/":"")+u:c+=D.location.pathname,c===s}function Sb(e,t){var r=e.getAttribute(t);if(!r||t==="href"&&!eo(e))return null;r.indexOf("#")!==-1&&(r=decodeURIComponent(r.substr(r.indexOf("#")+1)));var a=L.getElementById(r);return a||(a=L.getElementsByName(r),a.length?a[0]:null)}var to=Sb;function ro(e,t){vr();for(var r=Math.max(e._stackingOrder.length,t._stackingOrder.length),a=0;a"u")return-1;if(typeof e._stackingOrder[a]>"u"||t._stackingOrder[a].stackLevel>e._stackingOrder[a].stackLevel)return 1;if(t._stackingOrder[a].stackLevel2&&arguments[2]!==void 0?arguments[2]:!1,a=va(t),n=e.getCellFromPoint(a)||[],i=Math.floor(a.x),o=Math.floor(a.y),u=n.filter(function(c){return c.clientRects.some(function(l){var d=l.left,f=l.top;return i=Math.floor(d)&&o=Math.floor(f)})}),s=e.container;return s&&(u=ao(s._grid,s.boundingClientRect,!0).concat(u)),r||(u=u.sort(ro).map(function(c){return c.actualNode}).concat(L.documentElement).filter(function(c,l,d){return d.indexOf(c)===l})),u}function Ob(e){vr();var t=se(e),r=t._grid;return r?ao(r,t.boundingClientRect):[]}var Gl=Ob;function Mb(e){var t=vt(e,"*"),r=t.filter(function(a){var n=a.isFocusable,i=a.actualNode.getAttribute("tabindex");return i=i&&!isNaN(parseInt(i,10))?parseInt(i):null,i?n&&i>=0:n});return r}var Wl=Mb;function Nb(e){var t=be(e),r=t.vNode;if(!r||Qi(r))return!1;switch(r.props.nodeName){case"a":case"area":if(r.hasAttr("href"))return!0;break;case"input":return r.props.type!=="hidden";case"textarea":case"select":case"summary":case"button":return!0;case"details":return!vt(r,"summary").length}return!1}var no=Nb;function Ne(e){var t=be(e),r=t.vNode;if(r.props.nodeType!==1||Qi(r))return!1;if(no(r))return!0;var a=r.attr("tabindex");return!!(a&&!isNaN(parseInt(a,10)))}function xt(e){var t=be(e),r=t.vNode;if(r.props.nodeType!==1)return!1;var a=parseInt(r.attr("tabindex",10));return a<=-1?!1:Ne(r)}var bn=ze(Ib);function Ib(e){var t=e.boundingClientRect,r=vn(e).filter(function(n){return Yi(e,n)&&n.getComputedStylePropertyValue("pointer-events")!=="none"&&!Pb(e,n)});if(!r.length)return[t];var a=r.map(function(n){var i=n.boundingClientRect;return i});return Ki(t,a)}function Pb(e,t){return e.actualNode.contains(t.actualNode)&&!xt(t)}var Yl=ze(Lb);function Lb(e,t){var r=bn(e);return Bb(r,t)}function Bb(e,t){return e.reduce(function(r,a){var n=jt(t,r),i=jt(t,a);if(n!==i)return n?r:a;var o=r.width*r.height,u=a.width*a.height;return o>u?r:a})}var ga={};yt(ga,{accessibleText:function(){return gr},accessibleTextVirtual:function(){return Ye},autocomplete:function(){return Dr},formControlValue:function(){return Cc},formControlValueMethods:function(){return fo},hasUnicode:function(){return vo},isHumanInterpretable:function(){return bo},isIconLigature:function(){return go},isValidAutocomplete:function(){return Oc},label:function(){return cy},labelText:function(){return po},labelVirtual:function(){return xn},nativeElementType:function(){return fy},nativeTextAlternative:function(){return Fc},nativeTextMethods:function(){return Ac},removeUnicode:function(){return _a},sanitize:function(){return ne},subtreeText:function(){return Jt},titleText:function(){return wn},unsupported:function(){return hc},visible:function(){return Mc},visibleTextNodes:function(){return py},visibleVirtual:function(){return kt}});function qb(e,t){e=e.actualNode||e;try{var r=Je(e),a=[],n=e.getAttribute(t);if(n){n=Qe(n);for(var i=0;i1&&arguments[1]!==void 0?arguments[1]:{},r=be(e),a=r.vNode;if((a==null?void 0:a.props.nodeType)!==1||a.props.nodeType!==1||t.inLabelledByContext||t.inControlContext||!a.attr("aria-labelledby"))return"";var n=Tt(a,"aria-labelledby").filter(function(i){return i});return n.reduce(function(i,o){var u=gr(o,le({inLabelledByContext:!0,startNode:t.startNode||a},t));return i?"".concat(i," ").concat(u):u},"")}var ba=zb;function ya(e){var t=be(e),r=t.vNode;return(r==null?void 0:r.props.nodeType)!==1?"":r.attr("aria-label")||""}var Vb={"aria-activedescendant":{type:"idref",allowEmpty:!0},"aria-atomic":{type:"boolean",global:!0},"aria-autocomplete":{type:"nmtoken",values:["inline","list","both","none"]},"aria-braillelabel":{type:"string",allowEmpty:!0,global:!0},"aria-brailleroledescription":{type:"string",allowEmpty:!0,global:!0},"aria-busy":{type:"boolean",global:!0},"aria-checked":{type:"nmtoken",values:["false","mixed","true","undefined"]},"aria-colcount":{type:"int",minValue:-1},"aria-colindex":{type:"int",minValue:1},"aria-colspan":{type:"int",minValue:1},"aria-controls":{type:"idrefs",allowEmpty:!0,global:!0},"aria-current":{type:"nmtoken",allowEmpty:!0,values:["page","step","location","date","time","true","false"],global:!0},"aria-describedby":{type:"idrefs",allowEmpty:!0,global:!0},"aria-description":{type:"string",allowEmpty:!0,global:!0},"aria-details":{type:"idref",allowEmpty:!0,global:!0},"aria-disabled":{type:"boolean",global:!0},"aria-dropeffect":{type:"nmtokens",values:["copy","execute","link","move","none","popup"],global:!0},"aria-errormessage":{type:"idref",allowEmpty:!0,global:!0},"aria-expanded":{type:"nmtoken",values:["true","false","undefined"]},"aria-flowto":{type:"idrefs",allowEmpty:!0,global:!0},"aria-grabbed":{type:"nmtoken",values:["true","false","undefined"],global:!0},"aria-haspopup":{type:"nmtoken",allowEmpty:!0,values:["true","false","menu","listbox","tree","grid","dialog"],global:!0},"aria-hidden":{type:"nmtoken",values:["true","false","undefined"],global:!0},"aria-invalid":{type:"nmtoken",values:["grammar","false","spelling","true"],global:!0},"aria-keyshortcuts":{type:"string",allowEmpty:!0,global:!0},"aria-label":{type:"string",allowEmpty:!0,global:!0},"aria-labelledby":{type:"idrefs",allowEmpty:!0,global:!0},"aria-level":{type:"int",minValue:1},"aria-live":{type:"nmtoken",values:["assertive","off","polite"],global:!0},"aria-modal":{type:"boolean"},"aria-multiline":{type:"boolean"},"aria-multiselectable":{type:"boolean"},"aria-orientation":{type:"nmtoken",values:["horizontal","undefined","vertical"]},"aria-owns":{type:"idrefs",allowEmpty:!0,global:!0},"aria-placeholder":{type:"string",allowEmpty:!0},"aria-posinset":{type:"int",minValue:1},"aria-pressed":{type:"nmtoken",values:["false","mixed","true","undefined"]},"aria-readonly":{type:"boolean"},"aria-relevant":{type:"nmtokens",values:["additions","all","removals","text"],global:!0},"aria-required":{type:"boolean"},"aria-roledescription":{type:"string",allowEmpty:!0,global:!0},"aria-rowcount":{type:"int",minValue:-1},"aria-rowindex":{type:"int",minValue:1},"aria-rowspan":{type:"int",minValue:0},"aria-selected":{type:"nmtoken",values:["false","true","undefined"]},"aria-setsize":{type:"int",minValue:-1},"aria-sort":{type:"nmtoken",values:["ascending","descending","none","other"]},"aria-valuemax":{type:"decimal"},"aria-valuemin":{type:"decimal"},"aria-valuenow":{type:"decimal"},"aria-valuetext":{type:"string",allowEmpty:!0}},Kl=Vb,Hb={alert:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},alertdialog:{type:"widget",allowedAttrs:["aria-expanded","aria-modal"],superclassRole:["alert","dialog"],accessibleNameRequired:!0},application:{type:"landmark",allowedAttrs:["aria-activedescendant","aria-expanded"],superclassRole:["structure"],accessibleNameRequired:!0},article:{type:"structure",allowedAttrs:["aria-posinset","aria-setsize","aria-expanded"],superclassRole:["document"]},banner:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},blockquote:{type:"structure",superclassRole:["section"]},button:{type:"widget",allowedAttrs:["aria-expanded","aria-pressed"],superclassRole:["command"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},caption:{type:"structure",requiredContext:["figure","table","grid","treegrid"],superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},cell:{type:"structure",requiredContext:["row"],allowedAttrs:["aria-colindex","aria-colspan","aria-rowindex","aria-rowspan","aria-expanded"],superclassRole:["section"],nameFromContent:!0},checkbox:{type:"widget",requiredAttrs:["aria-checked"],allowedAttrs:["aria-readonly","aria-expanded","aria-required"],superclassRole:["input"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},code:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},columnheader:{type:"structure",requiredContext:["row"],allowedAttrs:["aria-sort","aria-colindex","aria-colspan","aria-expanded","aria-readonly","aria-required","aria-rowindex","aria-rowspan","aria-selected"],superclassRole:["cell","gridcell","sectionhead"],accessibleNameRequired:!1,nameFromContent:!0},combobox:{type:"widget",requiredAttrs:["aria-expanded","aria-controls"],allowedAttrs:["aria-owns","aria-autocomplete","aria-readonly","aria-required","aria-activedescendant","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!0},command:{type:"abstract",superclassRole:["widget"]},complementary:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},composite:{type:"abstract",superclassRole:["widget"]},contentinfo:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},comment:{type:"structure",allowedAttrs:["aria-level","aria-posinset","aria-setsize"],superclassRole:["article"]},definition:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"]},deletion:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},dialog:{type:"widget",allowedAttrs:["aria-expanded","aria-modal"],superclassRole:["window"],accessibleNameRequired:!0},directory:{type:"structure",deprecated:!0,allowedAttrs:["aria-expanded"],superclassRole:["list"],nameFromContent:!0},document:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["structure"]},emphasis:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},feed:{type:"structure",requiredOwned:["article"],allowedAttrs:["aria-expanded"],superclassRole:["list"]},figure:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],nameFromContent:!0},form:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},grid:{type:"composite",requiredOwned:["rowgroup","row"],allowedAttrs:["aria-level","aria-multiselectable","aria-readonly","aria-activedescendant","aria-colcount","aria-expanded","aria-rowcount"],superclassRole:["composite","table"],accessibleNameRequired:!1},gridcell:{type:"widget",requiredContext:["row"],allowedAttrs:["aria-readonly","aria-required","aria-selected","aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan"],superclassRole:["cell","widget"],nameFromContent:!0},group:{type:"structure",allowedAttrs:["aria-activedescendant","aria-expanded"],superclassRole:["section"]},heading:{type:"structure",requiredAttrs:["aria-level"],allowedAttrs:["aria-expanded"],superclassRole:["sectionhead"],accessibleNameRequired:!1,nameFromContent:!0},img:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],accessibleNameRequired:!0,childrenPresentational:!0},input:{type:"abstract",superclassRole:["widget"]},insertion:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},landmark:{type:"abstract",superclassRole:["section"]},link:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["command"],accessibleNameRequired:!0,nameFromContent:!0},list:{type:"structure",requiredOwned:["listitem"],allowedAttrs:["aria-expanded"],superclassRole:["section"]},listbox:{type:"widget",requiredOwned:["group","option"],allowedAttrs:["aria-multiselectable","aria-readonly","aria-required","aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!0},listitem:{type:"structure",requiredContext:["list"],allowedAttrs:["aria-level","aria-posinset","aria-setsize","aria-expanded"],superclassRole:["section"],nameFromContent:!0},log:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},main:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},marquee:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},math:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],childrenPresentational:!0},menu:{type:"composite",requiredOwned:["group","menuitemradio","menuitem","menuitemcheckbox","menu","separator"],allowedAttrs:["aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"]},menubar:{type:"composite",requiredOwned:["group","menuitemradio","menuitem","menuitemcheckbox","menu","separator"],allowedAttrs:["aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["menu"]},menuitem:{type:"widget",requiredContext:["menu","menubar","group"],allowedAttrs:["aria-posinset","aria-setsize","aria-expanded"],superclassRole:["command"],accessibleNameRequired:!0,nameFromContent:!0},menuitemcheckbox:{type:"widget",requiredContext:["menu","menubar","group"],requiredAttrs:["aria-checked"],allowedAttrs:["aria-expanded","aria-posinset","aria-readonly","aria-setsize"],superclassRole:["checkbox","menuitem"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},menuitemradio:{type:"widget",requiredContext:["menu","menubar","group"],requiredAttrs:["aria-checked"],allowedAttrs:["aria-expanded","aria-posinset","aria-readonly","aria-setsize"],superclassRole:["menuitemcheckbox","radio"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},meter:{type:"structure",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-valuemax","aria-valuemin","aria-valuetext"],superclassRole:["range"],accessibleNameRequired:!0,childrenPresentational:!0},mark:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},navigation:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},none:{type:"structure",superclassRole:["structure"],prohibitedAttrs:["aria-label","aria-labelledby"]},note:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"]},option:{type:"widget",requiredContext:["group","listbox"],allowedAttrs:["aria-selected","aria-checked","aria-posinset","aria-setsize"],superclassRole:["input"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},paragraph:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},presentation:{type:"structure",superclassRole:["structure"],prohibitedAttrs:["aria-label","aria-labelledby"]},progressbar:{type:"widget",allowedAttrs:["aria-expanded","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],superclassRole:["range"],accessibleNameRequired:!0,childrenPresentational:!0},radio:{type:"widget",requiredAttrs:["aria-checked"],allowedAttrs:["aria-posinset","aria-setsize","aria-required"],superclassRole:["input"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},radiogroup:{type:"composite",allowedAttrs:["aria-readonly","aria-required","aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!1},range:{type:"abstract",superclassRole:["widget"]},region:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"],accessibleNameRequired:!1},roletype:{type:"abstract",superclassRole:[]},row:{type:"structure",requiredContext:["grid","rowgroup","table","treegrid"],requiredOwned:["cell","columnheader","gridcell","rowheader"],allowedAttrs:["aria-colindex","aria-level","aria-rowindex","aria-selected","aria-activedescendant","aria-expanded","aria-posinset","aria-setsize"],superclassRole:["group","widget"],nameFromContent:!0},rowgroup:{type:"structure",requiredContext:["grid","table","treegrid"],requiredOwned:["row"],superclassRole:["structure"],nameFromContent:!0},rowheader:{type:"structure",requiredContext:["row"],allowedAttrs:["aria-sort","aria-colindex","aria-colspan","aria-expanded","aria-readonly","aria-required","aria-rowindex","aria-rowspan","aria-selected"],superclassRole:["cell","gridcell","sectionhead"],accessibleNameRequired:!1,nameFromContent:!0},scrollbar:{type:"widget",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-controls","aria-orientation","aria-valuemax","aria-valuemin","aria-valuetext"],superclassRole:["range"],childrenPresentational:!0},search:{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},searchbox:{type:"widget",allowedAttrs:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-placeholder","aria-readonly","aria-required"],superclassRole:["textbox"],accessibleNameRequired:!0},section:{type:"abstract",superclassRole:["structure"],nameFromContent:!0},sectionhead:{type:"abstract",superclassRole:["structure"],nameFromContent:!0},select:{type:"abstract",superclassRole:["composite","group"]},separator:{type:"structure",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-valuemax","aria-valuemin","aria-orientation","aria-valuetext"],superclassRole:["structure","widget"],childrenPresentational:!0},slider:{type:"widget",requiredAttrs:["aria-valuenow"],allowedAttrs:["aria-valuemax","aria-valuemin","aria-orientation","aria-readonly","aria-required","aria-valuetext"],superclassRole:["input","range"],accessibleNameRequired:!0,childrenPresentational:!0},spinbutton:{type:"widget",allowedAttrs:["aria-valuemax","aria-valuemin","aria-readonly","aria-required","aria-activedescendant","aria-valuetext","aria-valuenow"],superclassRole:["composite","input","range"],accessibleNameRequired:!0},status:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"]},strong:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},structure:{type:"abstract",superclassRole:["roletype"]},subscript:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},superscript:{type:"structure",superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},switch:{type:"widget",requiredAttrs:["aria-checked"],allowedAttrs:["aria-expanded","aria-readonly","aria-required"],superclassRole:["checkbox"],accessibleNameRequired:!0,nameFromContent:!0,childrenPresentational:!0},suggestion:{type:"structure",requiredOwned:["insertion","deletion"],superclassRole:["section"],prohibitedAttrs:["aria-label","aria-labelledby"]},tab:{type:"widget",requiredContext:["tablist"],allowedAttrs:["aria-posinset","aria-selected","aria-setsize","aria-expanded"],superclassRole:["sectionhead","widget"],nameFromContent:!0,childrenPresentational:!0},table:{type:"structure",requiredOwned:["rowgroup","row"],allowedAttrs:["aria-colcount","aria-rowcount","aria-expanded"],superclassRole:["section"],accessibleNameRequired:!1,nameFromContent:!0},tablist:{type:"composite",requiredOwned:["tab"],allowedAttrs:["aria-level","aria-multiselectable","aria-orientation","aria-activedescendant","aria-expanded"],superclassRole:["composite"]},tabpanel:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["section"],accessibleNameRequired:!1},term:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],nameFromContent:!0},text:{type:"structure",superclassRole:["section"],nameFromContent:!0},textbox:{type:"widget",allowedAttrs:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-placeholder","aria-readonly","aria-required"],superclassRole:["input"],accessibleNameRequired:!0},time:{type:"structure",superclassRole:["section"]},timer:{type:"widget",allowedAttrs:["aria-expanded"],superclassRole:["status"]},toolbar:{type:"structure",allowedAttrs:["aria-orientation","aria-activedescendant","aria-expanded"],superclassRole:["group"],accessibleNameRequired:!0},tooltip:{type:"structure",allowedAttrs:["aria-expanded"],superclassRole:["section"],nameFromContent:!0},tree:{type:"composite",requiredOwned:["group","treeitem"],allowedAttrs:["aria-multiselectable","aria-required","aria-activedescendant","aria-expanded","aria-orientation"],superclassRole:["select"],accessibleNameRequired:!1},treegrid:{type:"composite",requiredOwned:["rowgroup","row"],allowedAttrs:["aria-activedescendant","aria-colcount","aria-expanded","aria-level","aria-multiselectable","aria-orientation","aria-readonly","aria-required","aria-rowcount"],superclassRole:["grid","tree"],accessibleNameRequired:!1},treeitem:{type:"widget",requiredContext:["group","tree"],allowedAttrs:["aria-checked","aria-expanded","aria-level","aria-posinset","aria-selected","aria-setsize"],superclassRole:["listitem","option"],accessibleNameRequired:!0,nameFromContent:!0},widget:{type:"abstract",superclassRole:["roletype"]},window:{type:"abstract",superclassRole:["roletype"]}},Xl=Hb,$b={"doc-abstract":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-acknowledgments":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-afterword":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-appendix":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-backlink":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-biblioentry":{type:"listitem",allowedAttrs:["aria-expanded","aria-level","aria-posinset","aria-setsize"],superclassRole:["listitem"],deprecated:!0},"doc-bibliography":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-biblioref":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-chapter":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-colophon":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-conclusion":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-cover":{type:"img",allowedAttrs:["aria-expanded"],superclassRole:["img"]},"doc-credit":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-credits":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-dedication":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-endnote":{type:"listitem",allowedAttrs:["aria-expanded","aria-level","aria-posinset","aria-setsize"],superclassRole:["listitem"],deprecated:!0},"doc-endnotes":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-epigraph":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-epilogue":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-errata":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-example":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-footnote":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-foreword":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-glossary":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-glossref":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-index":{type:"navigation",allowedAttrs:["aria-expanded"],superclassRole:["navigation"]},"doc-introduction":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-noteref":{type:"link",allowedAttrs:["aria-expanded"],nameFromContent:!0,superclassRole:["link"]},"doc-notice":{type:"note",allowedAttrs:["aria-expanded"],superclassRole:["note"]},"doc-pagebreak":{type:"separator",allowedAttrs:["aria-expanded","aria-orientation"],superclassRole:["separator"],childrenPresentational:!0},"doc-pagelist":{type:"navigation",allowedAttrs:["aria-expanded"],superclassRole:["navigation"]},"doc-part":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-preface":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-prologue":{type:"landmark",allowedAttrs:["aria-expanded"],superclassRole:["landmark"]},"doc-pullquote":{type:"none",superclassRole:["none"]},"doc-qna":{type:"section",allowedAttrs:["aria-expanded"],superclassRole:["section"]},"doc-subtitle":{type:"sectionhead",allowedAttrs:["aria-expanded"],superclassRole:["sectionhead"]},"doc-tip":{type:"note",allowedAttrs:["aria-expanded"],superclassRole:["note"]},"doc-toc":{type:"navigation",allowedAttrs:["aria-expanded"],superclassRole:["navigation"]}},Ub=$b,Gb={"graphics-document":{type:"structure",superclassRole:["document"],accessibleNameRequired:!0},"graphics-object":{type:"structure",superclassRole:["group"],nameFromContent:!0},"graphics-symbol":{type:"structure",superclassRole:["img"],accessibleNameRequired:!0,childrenPresentational:!0}},Wb=Gb,Yb={a:{variant:{href:{matches:"[href]",contentTypes:["interactive","phrasing","flow"],allowedRoles:["button","checkbox","menuitem","menuitemcheckbox","menuitemradio","option","radio","switch","tab","treeitem","doc-backlink","doc-biblioref","doc-glossref","doc-noteref"],namingMethods:["subtreeText"]},default:{contentTypes:["phrasing","flow"],allowedRoles:!0}}},abbr:{contentTypes:["phrasing","flow"],allowedRoles:!0},address:{contentTypes:["flow"],allowedRoles:!0},area:{variant:{href:{matches:"[href]",allowedRoles:!1},default:{allowedRoles:["button","link"]}},contentTypes:["phrasing","flow"],namingMethods:["altText"]},article:{contentTypes:["sectioning","flow"],allowedRoles:["feed","presentation","none","document","application","main","region"],shadowRoot:!0},aside:{contentTypes:["sectioning","flow"],allowedRoles:["feed","note","presentation","none","region","search","doc-dedication","doc-example","doc-footnote","doc-glossary","doc-pullquote","doc-tip"]},audio:{variant:{controls:{matches:"[controls]",contentTypes:["interactive","embedded","phrasing","flow"]},default:{contentTypes:["embedded","phrasing","flow"]}},allowedRoles:["application"],chromiumRole:"Audio"},b:{contentTypes:["phrasing","flow"],allowedRoles:!0},base:{allowedRoles:!1,noAriaAttrs:!0},bdi:{contentTypes:["phrasing","flow"],allowedRoles:!0},bdo:{contentTypes:["phrasing","flow"],allowedRoles:!0},blockquote:{contentTypes:["flow"],allowedRoles:!0,shadowRoot:!0},body:{allowedRoles:!1,shadowRoot:!0},br:{contentTypes:["phrasing","flow"],allowedRoles:["presentation","none"],namingMethods:["titleText","singleSpace"]},button:{contentTypes:["interactive","phrasing","flow"],allowedRoles:["checkbox","combobox","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","switch","tab"],namingMethods:["subtreeText"]},canvas:{allowedRoles:!0,contentTypes:["embedded","phrasing","flow"],chromiumRole:"Canvas"},caption:{allowedRoles:!1},cite:{contentTypes:["phrasing","flow"],allowedRoles:!0},code:{contentTypes:["phrasing","flow"],allowedRoles:!0},col:{allowedRoles:!1,noAriaAttrs:!0},colgroup:{allowedRoles:!1,noAriaAttrs:!0},data:{contentTypes:["phrasing","flow"],allowedRoles:!0},datalist:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0,implicitAttrs:{"aria-multiselectable":"false"}},dd:{allowedRoles:!1},del:{contentTypes:["phrasing","flow"],allowedRoles:!0},dfn:{contentTypes:["phrasing","flow"],allowedRoles:!0},details:{contentTypes:["interactive","flow"],allowedRoles:!1},dialog:{contentTypes:["flow"],allowedRoles:["alertdialog"]},div:{contentTypes:["flow"],allowedRoles:!0,shadowRoot:!0},dl:{contentTypes:["flow"],allowedRoles:["group","list","presentation","none"],chromiumRole:"DescriptionList"},dt:{allowedRoles:["listitem"]},em:{contentTypes:["phrasing","flow"],allowedRoles:!0},embed:{contentTypes:["interactive","embedded","phrasing","flow"],allowedRoles:["application","document","img","presentation","none"],chromiumRole:"EmbeddedObject"},fieldset:{contentTypes:["flow"],allowedRoles:["none","presentation","radiogroup"],namingMethods:["fieldsetLegendText"]},figcaption:{allowedRoles:["group","none","presentation"]},figure:{contentTypes:["flow"],allowedRoles:!0,namingMethods:["figureText","titleText"]},footer:{contentTypes:["flow"],allowedRoles:["group","none","presentation","doc-footnote"],shadowRoot:!0},form:{contentTypes:["flow"],allowedRoles:["search","none","presentation"]},h1:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"1"}},h2:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"2"}},h3:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"3"}},h4:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"4"}},h5:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"5"}},h6:{contentTypes:["heading","flow"],allowedRoles:["none","presentation","tab","doc-subtitle"],shadowRoot:!0,implicitAttrs:{"aria-level":"6"}},head:{allowedRoles:!1,noAriaAttrs:!0},header:{contentTypes:["flow"],allowedRoles:["group","none","presentation","doc-footnote"],shadowRoot:!0},hgroup:{contentTypes:["heading","flow"],allowedRoles:!0},hr:{contentTypes:["flow"],allowedRoles:["none","presentation","doc-pagebreak"],namingMethods:["titleText","singleSpace"]},html:{allowedRoles:!1,noAriaAttrs:!0},i:{contentTypes:["phrasing","flow"],allowedRoles:!0},iframe:{contentTypes:["interactive","embedded","phrasing","flow"],allowedRoles:["application","document","img","none","presentation"],chromiumRole:"Iframe"},img:{variant:{nonEmptyAlt:{matches:[{attributes:{alt:"/.+/"}},{hasAccessibleName:!0}],allowedRoles:["button","checkbox","link","menuitem","menuitemcheckbox","menuitemradio","meter","option","progressbar","radio","scrollbar","separator","slider","switch","tab","treeitem","doc-cover"]},usemap:{matches:"[usemap]",contentTypes:["interactive","embedded","flow"]},default:{allowedRoles:["presentation","none"],contentTypes:["embedded","flow"]}},namingMethods:["altText"]},input:{variant:{button:{matches:{properties:{type:"button"}},allowedRoles:["checkbox","combobox","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","switch","tab"]},buttonType:{matches:{properties:{type:["button","submit","reset"]}},namingMethods:["valueText","titleText","buttonDefaultText"]},checkboxPressed:{matches:{properties:{type:"checkbox"},attributes:{"aria-pressed":"/.*/"}},allowedRoles:["button","menuitemcheckbox","option","switch"],implicitAttrs:{"aria-checked":"false"}},checkbox:{matches:{properties:{type:"checkbox"},attributes:{"aria-pressed":null}},allowedRoles:["menuitemcheckbox","option","switch"],implicitAttrs:{"aria-checked":"false"}},noRoles:{matches:{properties:{type:["color","date","datetime-local","file","month","number","password","range","reset","submit","time","week"]}},allowedRoles:!1},hidden:{matches:{properties:{type:"hidden"}},contentTypes:["flow"],allowedRoles:!1,noAriaAttrs:!0},image:{matches:{properties:{type:"image"}},allowedRoles:["link","menuitem","menuitemcheckbox","menuitemradio","radio","switch"],namingMethods:["altText","valueText","labelText","titleText","buttonDefaultText"]},radio:{matches:{properties:{type:"radio"}},allowedRoles:["menuitemradio"],implicitAttrs:{"aria-checked":"false"}},textWithList:{matches:{properties:{type:"text"},attributes:{list:"/.*/"}},allowedRoles:!1},default:{contentTypes:["interactive","flow"],allowedRoles:["combobox","searchbox","spinbutton"],implicitAttrs:{"aria-valuenow":""},namingMethods:["labelText","placeholderText"]}}},ins:{contentTypes:["phrasing","flow"],allowedRoles:!0},kbd:{contentTypes:["phrasing","flow"],allowedRoles:!0},label:{contentTypes:["interactive","phrasing","flow"],allowedRoles:!1,chromiumRole:"Label"},legend:{allowedRoles:!1},li:{allowedRoles:["menuitem","menuitemcheckbox","menuitemradio","option","none","presentation","radio","separator","tab","treeitem","doc-biblioentry","doc-endnote"],implicitAttrs:{"aria-setsize":"1","aria-posinset":"1"}},link:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},main:{contentTypes:["flow"],allowedRoles:!1,shadowRoot:!0},map:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},math:{contentTypes:["embedded","phrasing","flow"],allowedRoles:!1},mark:{contentTypes:["phrasing","flow"],allowedRoles:!0},menu:{contentTypes:["flow"],allowedRoles:["directory","group","listbox","menu","menubar","none","presentation","radiogroup","tablist","toolbar","tree"]},meta:{variant:{itemprop:{matches:"[itemprop]",contentTypes:["phrasing","flow"]}},allowedRoles:!1,noAriaAttrs:!0},meter:{contentTypes:["phrasing","flow"],allowedRoles:!1,chromiumRole:"progressbar"},nav:{contentTypes:["sectioning","flow"],allowedRoles:["doc-index","doc-pagelist","doc-toc","menu","menubar","none","presentation","tablist"],shadowRoot:!0},noscript:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},object:{variant:{usemap:{matches:"[usemap]",contentTypes:["interactive","embedded","phrasing","flow"]},default:{contentTypes:["embedded","phrasing","flow"]}},allowedRoles:["application","document","img"],chromiumRole:"PluginObject"},ol:{contentTypes:["flow"],allowedRoles:["directory","group","listbox","menu","menubar","none","presentation","radiogroup","tablist","toolbar","tree"]},optgroup:{allowedRoles:!1},option:{allowedRoles:!1,implicitAttrs:{"aria-selected":"false"}},output:{contentTypes:["phrasing","flow"],allowedRoles:!0,namingMethods:["subtreeText"]},p:{contentTypes:["flow"],allowedRoles:!0,shadowRoot:!0},param:{allowedRoles:!1,noAriaAttrs:!0},picture:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},pre:{contentTypes:["flow"],allowedRoles:!0},progress:{contentTypes:["phrasing","flow"],allowedRoles:!1,implicitAttrs:{"aria-valuemax":"100","aria-valuemin":"0","aria-valuenow":"0"}},q:{contentTypes:["phrasing","flow"],allowedRoles:!0},rp:{allowedRoles:!0},rt:{allowedRoles:!0},ruby:{contentTypes:["phrasing","flow"],allowedRoles:!0},s:{contentTypes:["phrasing","flow"],allowedRoles:!0},samp:{contentTypes:["phrasing","flow"],allowedRoles:!0},script:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},search:{contentTypes:["flow"],allowedRoles:["form","group","none","presentation","region","search"]},section:{contentTypes:["sectioning","flow"],allowedRoles:["alert","alertdialog","application","banner","complementary","contentinfo","dialog","document","feed","group","log","main","marquee","navigation","none","note","presentation","search","status","tabpanel","doc-abstract","doc-acknowledgments","doc-afterword","doc-appendix","doc-bibliography","doc-chapter","doc-colophon","doc-conclusion","doc-credit","doc-credits","doc-dedication","doc-endnotes","doc-epigraph","doc-epilogue","doc-errata","doc-example","doc-foreword","doc-glossary","doc-index","doc-introduction","doc-notice","doc-pagelist","doc-part","doc-preface","doc-prologue","doc-pullquote","doc-qna","doc-toc"],shadowRoot:!0},select:{variant:{combobox:{matches:{attributes:{multiple:null,size:[null,"1"]}},allowedRoles:["menu"]},default:{allowedRoles:!1}},contentTypes:["interactive","phrasing","flow"],implicitAttrs:{"aria-valuenow":""},namingMethods:["labelText"]},slot:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},small:{contentTypes:["phrasing","flow"],allowedRoles:!0},source:{allowedRoles:!1,noAriaAttrs:!0},span:{contentTypes:["phrasing","flow"],allowedRoles:!0,shadowRoot:!0},strong:{contentTypes:["phrasing","flow"],allowedRoles:!0},style:{allowedRoles:!1,noAriaAttrs:!0},svg:{contentTypes:["embedded","phrasing","flow"],allowedRoles:!0,chromiumRole:"SVGRoot",namingMethods:["svgTitleText"]},sub:{contentTypes:["phrasing","flow"],allowedRoles:!0},summary:{allowedRoles:!1,namingMethods:["subtreeText"]},sup:{contentTypes:["phrasing","flow"],allowedRoles:!0},table:{contentTypes:["flow"],allowedRoles:!0,namingMethods:["tableCaptionText","tableSummaryText"]},tbody:{allowedRoles:!0},template:{contentTypes:["phrasing","flow"],allowedRoles:!1,noAriaAttrs:!0},textarea:{contentTypes:["interactive","phrasing","flow"],allowedRoles:!1,implicitAttrs:{"aria-valuenow":"","aria-multiline":"true"},namingMethods:["labelText","placeholderText"]},tfoot:{allowedRoles:!0},thead:{allowedRoles:!0},time:{contentTypes:["phrasing","flow"],allowedRoles:!0},title:{allowedRoles:!1,noAriaAttrs:!0},td:{allowedRoles:!0},th:{allowedRoles:!0},tr:{allowedRoles:!0},track:{allowedRoles:!1,noAriaAttrs:!0},u:{contentTypes:["phrasing","flow"],allowedRoles:!0},ul:{contentTypes:["flow"],allowedRoles:["directory","group","listbox","menu","menubar","none","presentation","radiogroup","tablist","toolbar","tree"]},var:{contentTypes:["phrasing","flow"],allowedRoles:!0},video:{variant:{controls:{matches:"[controls]",contentTypes:["interactive","embedded","phrasing","flow"]},default:{contentTypes:["embedded","phrasing","flow"]}},allowedRoles:["application"],chromiumRole:"video"},wbr:{contentTypes:["phrasing","flow"],allowedRoles:["presentation","none"]}},Kb=Yb,Xb={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Zb=Xb,Zl={ariaAttrs:Kl,ariaRoles:le({},Xl,Ub,Wb),htmlElms:Kb,cssColors:Zb},qr=le({},Zl);function Jb(e){Object.keys(qr).forEach(function(t){e[t]&&(qr[t]=zi(qr[t],e[t]))})}function Qb(){Object.keys(qr).forEach(function(e){qr[e]=Zl[e]})}var ve=qr;function e0(e){var t=ve.ariaRoles[e];return t?!!t.unsupported:!1}var io=e0;function t0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.allowAbstract,a=t.flagUnsupported,n=a===void 0?!1:a,i=ve.ariaRoles[e],o=io(e);return!i||n&&o?!1:r?!0:i.type!=="abstract"}var jr=t0;function r0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.fallback,a=t.abstracts,n=t.dpub;if(e=e instanceof Ge?e:se(e),e.props.nodeType!==1)return null;var i=(e.attr("role")||"").trim().toLowerCase(),o=r?Qe(i):[i],u=o.find(function(s){return!n&&s.substr(0,4)==="doc-"?!1:jr(s,{allowAbstract:a})});return u||null}var ye=r0;function a0(e){return Object.keys(ve.htmlElms).filter(function(t){var r=ve.htmlElms[t];return r.contentTypes?r.contentTypes.includes(e):r.variant&&r.variant.default&&r.variant.default.contentTypes?r.variant.default.contentTypes.includes(e):!1})}var oo=a0;function n0(){return oe.get("globalAriaAttrs",function(){return Object.keys(ve.ariaAttrs).filter(function(e){return ve.ariaAttrs[e].global})})}var br=n0;function i0(e){for(var t=[],r=e.rows,a=0,n=r.length;a1?"listbox":"combobox"},summary:"button",table:"table",tbody:"rowgroup",td:function(t){var r=lt(t,"table"),a=ye(r);return["grid","treegrid"].includes(a)?"gridcell":"cell"},textarea:"textbox",tfoot:"rowgroup",th:function(t){if(zr(t))return"columnheader";if(Vr(t))return"rowheader"},thead:"rowgroup",tr:"row",ul:"list"},so=c0;function d0(e,t){var r=O(t);if(Array.isArray(t)&&typeof e<"u")return t.includes(e);if(r==="function")return!!t(e);if(e!=null){if(t instanceof RegExp)return t.test(e);if(/^\/.*\/$/.test(t)){var a=t.substring(1,t.length-1);return new RegExp(a).test(e)}}return t===e}var yr=d0;function f0(e,t){return yr(!!Ye(e),t)}var ec=f0;function p0(e,t){var r=O(t);if(r!=="object"||Array.isArray(t)||t instanceof RegExp)throw new Error("Expect matcher to be an object");return Object.keys(t).every(function(a){return yr(e(a),t[a])})}var lo=p0;function m0(e,t){return e=be(e).vNode,lo(function(r){return e.attr(r)},t)}var tc=m0;function rc(e,t){return!!t(e)}function h0(e,t){return yr(ye(e),t)}var ac=h0;function v0(e,t){return yr(Rt(e),t)}var nc=v0;function g0(e,t){return e=be(e).vNode,yr(e.props.nodeName,t)}var ic=g0;function b0(e,t){return e=be(e).vNode,lo(function(r){return e.props[r]},t)}var oc=b0;function y0(e,t){return yr(de(e),t)}var uc=y0,sc={hasAccessibleName:ec,attributes:tc,condition:rc,explicitRole:ac,implicitRole:nc,nodeName:ic,properties:oc,semanticRole:uc};function lc(e,t){return e=be(e).vNode,Array.isArray(t)?t.some(function(r){return lc(e,r)}):typeof t=="string"?Fi(e,t):Object.keys(t).every(function(r){if(!sc[r])throw new Error('Unknown matcher type "'.concat(r,'"'));var a=sc[r],n=t[r];return a(e,n)})}var cc=lc;function w0(e,t){return cc(e,t)}var dt=w0;dt.hasAccessibleName=ec,dt.attributes=tc,dt.condition=rc,dt.explicitRole=ac,dt.fromDefinition=cc,dt.fromFunction=lo,dt.fromPrimative=yr,dt.implicitRole=nc,dt.nodeName=ic,dt.properties=oc,dt.semanticRole=uc;var wa=dt;function D0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.noMatchAccessibleName,a=r===void 0?!1:r,n=ve.htmlElms[e.props.nodeName];if(!n)return{};if(!n.variant)return n;var i=n.variant,o=je(n,Gp);for(var u in i)if(!(!i.hasOwnProperty(u)||u==="default")){for(var s=i[u],c=s.matches,l=je(s,Wp),d=Array.isArray(c)?c:[c],f=0;f"u"&&(o[m]=i.default[m]);return o}var wr=D0;function _0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.chromium,a=e instanceof Ge?e:se(e);if(e=a.actualNode,!a)throw new ReferenceError("Cannot get implicit role of a node outside the current scope.");var n=a.props.nodeName,i=so[n];if(!i&&r){var o=wr(a),u=o.chromiumRole;return u||null}return typeof i=="function"?i(a):i||null}var Rt=_0,x0={td:["tr"],th:["tr"],tr:["thead","tbody","tfoot","table"],thead:["table"],tbody:["table"],tfoot:["table"],li:["ol","ul"],dt:["dl","div"],dd:["dl","div"],div:["dl"]};function dc(e,t){var r=x0[e.props.nodeName];if(!r)return null;if(!e.parent){if(!e.actualNode)return null;throw new ReferenceError("Cannot determine role presentational inheritance of a required parent outside the current scope.")}if(!r.includes(e.parent.props.nodeName))return null;var a=ye(e.parent,t);return["none","presentation"].includes(a)&&!pc(e.parent)?a:a?null:dc(e.parent,t)}function fc(e,t){var r=t.chromium,a=je(t,Yp),n=Rt(e,{chromium:r});if(!n)return null;var i=dc(e,a);return i||n}function pc(e){var t=br().some(function(r){return e.hasAttr(r)});return t||Ne(e)}function E0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.noImplicit,a=je(t,Kp),n=be(e),i=n.vNode;if(i.props.nodeType!==1)return null;var o=ye(i,a);return o?["presentation","none"].includes(o)&&pc(i)?r?null:fc(i,a):o:r?null:fc(i,a)}function C0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.noPresentational,a=je(t,Xp),n=E0(e,a);return r&&["presentation","none"].includes(n)?null:n}var de=C0,A0=["iframe"];function F0(e){var t=be(e),r=t.vNode;return r.props.nodeType!==1||!e.hasAttr("title")||!dt(r,A0)&&["none","presentation"].includes(de(r))?"":r.attr("title")}var wn=F0;function T0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.strict;if(e=e instanceof Ge?e:se(e),e.props.nodeType!==1)return!1;var a=de(e),n=ve.ariaRoles[a];return n&&n.nameFromContent?!0:r?!1:!n||["presentation","none"].includes(a)}var mc=T0;function R0(e){var t=e.actualNode,r=e.children;if(!r)throw new Error("getOwnedVirtual requires a virtual node");if(e.hasAttr("aria-owns")){var a=Tt(t,"aria-owns").filter(function(n){return!!n}).map(function(n){return w.utils.getNodeFromTree(n)});return[].concat(ae(r),ae(a))}return ae(r)}var Da=R0,hc={accessibleNameFromFieldValue:["progressbar"]};function Te(e){return e=be(e).vNode,co(e)}var co=ze(function(t,r){return yl(t)||gn(t,{skipAncestors:!0,isAncestor:r})?!1:t.actualNode&&t.props.nodeName==="area"?!Ui(t,co):Zt(t,{skipAncestors:!0,isAncestor:r})?!1:t.parent?co(t.parent,!0):!0});function vc(e,t,r){var a=be(e),n=a.vNode,i=t?Te:ct,o=!e.actualNode||e.actualNode&&i(e),u=n.children.map(function(s){var c=s.props,l=c.nodeType,d=c.nodeValue;if(l===3){if(d&&o)return d}else if(!r)return vc(s,t)}).join("");return ne(u)}var kt=vc,k0=["button","checkbox","color","file","hidden","image","password","radio","reset","submit"];function S0(e){e=e instanceof Ge?e:se(e);var t=e.props.nodeName;return t==="textarea"||t==="input"&&!k0.includes((e.attr("type")||"").toLowerCase())}var gc=S0;function O0(e){e=e instanceof Ge?e:se(e);var t=e.props.nodeName;return t==="select"}var bc=O0;function M0(e){var t=ye(e);return t==="textbox"}var yc=M0;function N0(e){var t=ye(e);return t==="listbox"}var wc=N0;function I0(e){var t=ye(e);return t==="combobox"}var Dc=I0,P0=["progressbar","scrollbar","slider","spinbutton"];function L0(e){var t=ye(e);return P0.includes(t)}var _c=L0,xc=["textbox","progressbar","scrollbar","slider","spinbutton","combobox","listbox"],fo={nativeTextboxValue:q0,nativeSelectValue:j0,ariaTextboxValue:z0,ariaListboxValue:Ec,ariaComboboxValue:V0,ariaRangeValue:H0};function B0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=e.actualNode,a=hc.accessibleNameFromFieldValue||[],n=de(e);if(t.startNode===e||!xc.includes(n)||a.includes(n))return"";var i=Object.keys(fo).map(function(u){return fo[u]}),o=i.reduce(function(u,s){return u||s(e,t)},"");return t.debug&&fr(o||"{empty-value}",r,t),o}function q0(e){var t=be(e),r=t.vNode;return gc(r)&&r.props.value||""}function j0(e){var t=be(e),r=t.vNode;if(!bc(r))return"";var a=vt(r,"option"),n=a.filter(function(i){return i.props.selected});return n.length||n.push(a[0]),n.map(function(i){return kt(i)}).join(" ")||""}function z0(e){var t=be(e),r=t.vNode,a=t.domNode;return yc(r)?!a||a&&!Zt(a)?kt(r,!0):a.textContent:""}function Ec(e,t){var r=be(e),a=r.vNode;if(!wc(a))return"";var n=Da(a).filter(function(i){return de(i)==="option"&&i.attr("aria-selected")==="true"});return n.length===0?"":Ye(n[0],t)}function V0(e,t){var r=be(e),a=r.vNode;if(!Dc(a))return"";var n=Da(a).filter(function(i){return de(i)==="listbox"})[0];return n?Ec(n,t):""}function H0(e){var t=be(e),r=t.vNode;if(!_c(r)||!r.hasAttr("aria-valuenow"))return"";var a=+r.attr("aria-valuenow");return isNaN(a)?"0":String(a)}var Cc=B0;function $0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=Ye.alreadyProcessed;t.startNode=t.startNode||e;var a=t,n=a.strict,i=a.inControlContext,o=a.inLabelledByContext,u=de(e),s=wr(e,{noMatchAccessibleName:!0}),c=s.contentTypes;if(r(e,t)||e.props.nodeType!==1||c!=null&&c.includes("embedded")||xc.includes(u)||!t.subtreeDescendant&&!t.inLabelledByContext&&!mc(e,{strict:n}))return"";if(!n){var l=!i&&!o;t=le({subtreeDescendant:l},t)}return Da(e).reduce(function(d,f){return G0(d,f,t)},"")}var U0=oo("phrasing").concat(["#text"]);function G0(e,t,r){var a=t.props.nodeName,n=Ye(t,r);return n?(U0.includes(a)||(n[0]!==" "&&(n+=" "),e&&e[e.length-1]!==" "&&(n=" "+n)),e+n):e}var Jt=$0;function W0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=Ye.alreadyProcessed;if(t.inControlContext||t.inLabelledByContext||r(e,t))return"";t.startNode||(t.startNode=e);var a=le({inControlContext:!0},t),n=Y0(e),i=lt(e,"label"),o;return i?(o=[].concat(ae(n),[i.actualNode]),o.sort(hu)):o=n,o.map(function(u){return gr(u,a)}).filter(function(u){return u!==""}).join(" ")}function Y0(e){if(!e.attr("id"))return[];if(!e.actualNode)throw new TypeError("Cannot resolve explicit label reference for non-DOM nodes");return pl({elm:"label",attr:"for",value:e.attr("id"),context:e.actualNode})}var po=W0,K0={submit:"Submit",image:"Submit",reset:"Reset",button:""},X0={valueText:function(t){var r=t.actualNode;return r.value||""},buttonDefaultText:function(t){var r=t.actualNode;return K0[r.type]||""},tableCaptionText:Dn.bind(null,"caption"),figureText:Dn.bind(null,"figcaption"),svgTitleText:Dn.bind(null,"title"),fieldsetLegendText:Dn.bind(null,"legend"),altText:mo.bind(null,"alt"),tableSummaryText:mo.bind(null,"summary"),titleText:wn,subtreeText:Jt,labelText:po,singleSpace:function(){return" "},placeholderText:mo.bind(null,"placeholder")};function mo(e,t){return t.attr(e)||""}function Dn(e,t,r){var a=t.actualNode;e=e.toLowerCase();var n=[e,a.nodeName.toLowerCase()].join(","),i=a.querySelector(n);return!i||i.nodeName.toLowerCase()!==e?"":gr(i,r)}var Ac=X0;function Fc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=e.actualNode;if(e.props.nodeType!==1||["presentation","none"].includes(de(e)))return"";var a=Z0(e),n=a.reduce(function(i,o){return i||o(e,t)},"");return t.debug&&w.log(n||"{empty-value}",r,t),n}function Z0(e){var t=wr(e,{noMatchAccessibleName:!0}),r=t.namingMethods||[];return r.map(function(a){return Ac[a]})}function Tc(){return/[\u1D00-\u1D7F\u1D80-\u1DBF\u1DC0-\u1DFF\u20A0-\u20CF\u20D0-\u20FF\u2100-\u214F\u2150-\u218F\u2190-\u21FF\u2200-\u22FF\u2300-\u23FF\u2400-\u243F\u2440-\u245F\u2460-\u24FF\u2500-\u257F\u2580-\u259F\u25A0-\u25FF\u2600-\u26FF\u2700-\u27BF\uE000-\uF8FF]/g}function Rc(){return/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&\xa3\xa2\xa5\xa7\u20ac()*+,\-.\/:;<=>?@\[\]^_`{|}~\xb1]/g}function kc(){return/[\uDB80-\uDBBF][\uDC00-\uDFFF]/g}function Sc(){return/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC38]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/g}var ho=function(){return/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g};function J0(e,t){var r=t.emoji,a=t.nonBmp,n=t.punctuations,i=!1;return r&&(i||(i=ho().test(e))),a&&(i||(i=Tc().test(e)||kc().test(e)||Sc().test(e))),n&&(i||(i=Rc().test(e))),i}var vo=J0;function go(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.15,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:3,a=e.actualNode.nodeValue.trim();if(!ne(a)||vo(a,{emoji:!0,nonBmp:!0}))return!1;var n=oe.get("canvasContext",function(){return L.createElement("canvas").getContext("2d",{willReadFrequently:!0})}),i=n.canvas,o=oe.get("fonts",function(){return{}}),u=D.getComputedStyle(e.parent.actualNode),s=u.getPropertyValue("font-family");o[s]||(o[s]={occurrences:0,numLigatures:0});var c=o[s];if(c.occurrences>=r){if(c.numLigatures/c.occurrences===1)return!0;if(c.numLigatures===0)return!1}c.occurrences++;var l=30,d="".concat(l,"px ").concat(s);n.font=d;var f=a.charAt(0),p=n.measureText(f).width;if(p===0)return c.numLigatures++,!0;if(p<30){var m=30/p;p*=m,l*=m,d="".concat(l,"px ").concat(s)}i.width=p,i.height=l,n.font=d,n.textAlign="left",n.textBaseline="top",n.fillText(f,0,0);var h=new Uint32Array(n.getImageData(0,0,p,l).data.buffer);if(!h.some(function(R){return R}))return c.numLigatures++,!0;n.clearRect(0,0,p,l),n.fillText(a,0,0);var v=new Uint32Array(n.getImageData(0,0,p,l).data.buffer),g=h.reduce(function(R,S,q){return S===0&&v[q]===0||S!==0&&v[q]!==0?R:++R},0),b=a.split("").reduce(function(R,S){return R+n.measureText(S).width},0),y=n.measureText(a).width,_=g/h.length,A=1-y/b;return _>=t&&A>=t?(c.numLigatures++,!0):!1}function Ye(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t=ry(e,t),ey(e,t)||ty(e,t))return"";var r=[ba,ya,Fc,Cc,Jt,Q0,wn],a=r.reduce(function(n,i){return t.startNode===e&&(n=ne(n)),n!==""?n:i(e,t)},"");return t.debug&&w.log(a||"{empty-value}",e.actualNode,t),a}function Q0(e){return e.props.nodeType!==3?"":e.props.nodeValue}function ey(e,t){return!e||e.props.nodeType!==1||t.includeHidden?!1:!Te(e)}function ty(e,t){var r,a=t.ignoreIconLigature,n=t.pixelThreshold,i=(r=t.occurrenceThreshold)!==null&&r!==void 0?r:t.occuranceThreshold;return e.props.nodeType!==3||!a?!1:go(e,n,i)}function ry(e,t){return t.startNode||(t=le({startNode:e},t)),e.props.nodeType===1&&t.inLabelledByContext&&t.includeHidden===void 0&&(t=le({includeHidden:!Te(e)},t)),t}Ye.alreadyProcessed=function(t,r){return r.processed=r.processed||[],r.processed.includes(t)?!0:(r.processed.push(t),!1)};function ay(e,t){var r=t.emoji,a=t.nonBmp,n=t.punctuations;return r&&(e=e.replace(ho(),"")),a&&(e=e.replace(Tc(),"").replace(kc(),"").replace(Sc(),"")),n&&(e=e.replace(Rc(),"")),e}var _a=ay;function ny(e){if(!e.length)return 0;var t=["x","i"];if(t.includes(e))return 0;var r=_a(e,{emoji:!0,nonBmp:!0,punctuations:!0});return ne(r)?1:0}var bo=ny,Dr={stateTerms:["on","off"],standaloneTerms:["name","honorific-prefix","given-name","additional-name","family-name","honorific-suffix","nickname","username","new-password","current-password","organization-title","organization","street-address","address-line1","address-line2","address-line3","address-level4","address-level3","address-level2","address-level1","country","country-name","postal-code","cc-name","cc-given-name","cc-additional-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type","transaction-currency","transaction-amount","language","bday","bday-day","bday-month","bday-year","sex","url","photo","one-time-code"],qualifiers:["home","work","mobile","fax","pager"],qualifiedTerms:["tel","tel-country-code","tel-national","tel-area-code","tel-local","tel-local-prefix","tel-local-suffix","tel-extension","email","impp"],locations:["billing","shipping"]};function iy(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.looseTyped,a=r===void 0?!1:r,n=t.stateTerms,i=n===void 0?[]:n,o=t.locations,u=o===void 0?[]:o,s=t.qualifiers,c=s===void 0?[]:s,l=t.standaloneTerms,d=l===void 0?[]:l,f=t.qualifiedTerms,p=f===void 0?[]:f;if(e=e.toLowerCase().trim(),i=i.concat(Dr.stateTerms),i.includes(e)||e==="")return!0;c=c.concat(Dr.qualifiers),u=u.concat(Dr.locations),d=d.concat(Dr.standaloneTerms),p=p.concat(Dr.qualifiedTerms);var m=e.split(/\s+/g);if(m[m.length-1]==="webauthn"&&(m.pop(),m.length===0)||!a&&(m[0].length>8&&m[0].substr(0,8)==="section-"&&m.shift(),u.includes(m[0])&&m.shift(),c.includes(m[0])&&(m.shift(),d=[]),m.length!==1))return!1;var h=m[m.length-1];return d.includes(h)||p.includes(h)}var Oc=iy;function oy(e){var t,r;return e.attr("aria-labelledby")&&(t=Tt(e.actualNode,"aria-labelledby"),r=t.map(function(a){var n=se(a);return n?kt(n):""}).join(" ").trim(),r)||(r=e.attr("aria-label"),r&&(r=ne(r),r))?r:null}var _n=oy;function uy(e,t,r){return e=se(e),kt(e,t,r)}var Mc=uy;function sy(e){var t,r,a;if(r=_n(e),r)return r;if(e.attr("id")){if(!e.actualNode)throw new TypeError("Cannot resolve explicit label reference for non-DOM nodes");var n=Me(e.attr("id"));if(a=Je(e.actualNode),t=a.querySelector('label[for="'+n+'"]'),r=t&&Mc(t,!0),r)return r}return t=lt(e,"label"),r=t&&kt(t,!0),r||null}var xn=sy;function ly(e){return e=se(e),xn(e)}var cy=ly,dy=[{matches:[{nodeName:"textarea"},{nodeName:"input",properties:{type:["text","password","search","tel","email","url"]}}],namingMethods:"labelText"},{matches:{nodeName:"input",properties:{type:["button","submit","reset"]}},namingMethods:["valueText","titleText","buttonDefaultText"]},{matches:{nodeName:"input",properties:{type:"image"}},namingMethods:["altText","valueText","labelText","titleText","buttonDefaultText"]},{matches:"button",namingMethods:"subtreeText"},{matches:"fieldset",namingMethods:"fieldsetLegendText"},{matches:"OUTPUT",namingMethods:"subtreeText"},{matches:[{nodeName:"select"},{nodeName:"input",properties:{type:/^(?!text|password|search|tel|email|url|button|submit|reset)/}}],namingMethods:"labelText"},{matches:"summary",namingMethods:"subtreeText"},{matches:"figure",namingMethods:["figureText","titleText"]},{matches:"img",namingMethods:"altText"},{matches:"table",namingMethods:["tableCaptionText","tableSummaryText"]},{matches:["hr","br"],namingMethods:["titleText","singleSpace"]}],fy=dy;function Nc(e){var t=ct(e),r=[];return e.children.forEach(function(a){a.actualNode.nodeType===3?t&&r.push(a):r=r.concat(Nc(a))}),r}var py=Nc,my=ze(function(t){var r=se(t),a=r.boundingClientRect,n=[],i=ha(r);return t.childNodes.forEach(function(o){if(!(o.nodeType!==3||ne(o.nodeValue)==="")){var u=hy(o);vy(u,a)||n.push.apply(n,ae(Ic(u,i)))}}),n.length?n:Ic([a],i)}),yo=my;function hy(e){var t=L.createRange();return t.selectNodeContents(e),Array.from(t.getClientRects())}function vy(e,t){return e.some(function(r){var a=va(r);return!pn(a,t)})}function Ic(e,t){var r=[];return e.forEach(function(a){if(!(a.width<1||a.height<1)){var n=t.reduce(function(i,o){return i&&mn(i,o.boundingClientRect)},a);n&&r.push(n)}}),r}function gy(e){vr();var t=se(e),r=t._grid;if(!r)return[];var a=yo(e);return a.map(function(n){return ao(r,n)})}var wo=gy,by=["checkbox","img","meter","progressbar","scrollbar","radio","slider","spinbutton","textbox"];function yy(e){var t=be(e),r=t.vNode,a=w.commons.aria.getExplicitRole(r);if(a)return by.indexOf(a)!==-1;switch(r.props.nodeName){case"img":case"iframe":case"object":case"video":case"audio":case"canvas":case"svg":case"math":case"button":case"select":case"textarea":case"keygen":case"progress":case"meter":return!0;case"input":return r.props.type!=="hidden";default:return!1}}var Do=yy,wy=["head","title","template","script","style","iframe","object","video","audio","noscript"];function Pc(e){return wy.includes(e.props.nodeName)?!1:e.children.some(function(t){var r=t.props;return r.nodeType===3&&r.nodeValue.trim()})}function Lc(e,t,r){return Pc(e)||Do(e.actualNode)||!r&&!!_n(e)||!t&&e.children.some(function(a){return a.actualNode.nodeType===1&&Lc(a)})}var xa=Lc;function Dy(e,t,r){return e=se(e),xa(e,t,r)}var En=Dy;function _o(e){return typeof e.children>"u"||Pc(e)?!0:e.props.nodeType===1&&Do(e)?!!w.commons.text.accessibleTextVirtual(e):e.children.some(function(t){return!t.attr("lang")&&_o(t)&&!Zt(t)})}function _y(e){var t=parseInt(e.getAttribute("tabindex"),10);return t>-1&&Ne(e)&&!no(e)}var Bc=_y;function qc(e,t){var r=be(e),a=r.vNode,n=r.domNode;return a?(a._isHiddenWithCSS===void 0&&(a._isHiddenWithCSS=jc(n,t)),a._isHiddenWithCSS):jc(n,t)}function jc(e,t){if(e.nodeType===9||(e.nodeType===11&&(e=e.host),["STYLE","SCRIPT"].includes(e.nodeName.toUpperCase())))return!1;var r=D.getComputedStyle(e,null);if(!r)throw new Error("Style does not exist for the given element.");var a=r.getPropertyValue("display");if(a==="none")return!0;var n=["hidden","collapse"],i=r.getPropertyValue("visibility");if(n.includes(i)&&!t||n.includes(i)&&t&&n.includes(t))return!0;var o=We(e);return o&&!n.includes(i)?qc(o,i):!1}var xy=qc;function Ey(e){var t=e.doctype;return t===null?!1:t.name==="html"&&!t.publicId&&!t.systemId}var zc=Ey;function Cy(e){var t;(e instanceof Ge||(t=D)!==null&&t!==void 0&&t.Node&&e instanceof D.Node)&&(e=w.commons.aria.getRole(e));var r=ve.ariaRoles[e];return(r==null?void 0:r.type)||null}var St=Cy;function Vc(e,t){t(e.actualNode)!==!1&&e.children.forEach(function(r){return Vc(r,t)})}var Ay=["block","list-item","table","flex","grid","inline-block"];function Hc(e){var t=D.getComputedStyle(e).getPropertyValue("display");return Ay.includes(t)||t.substr(0,6)==="table-"}function Fy(e){for(var t=We(e);t&&!Hc(t);)t=We(t);return se(t)}function Ty(e,t){if(Hc(e))return!1;var r=Fy(e),a="",n="",i=0;return Vc(r,function(o){if(i===2)return!1;if(o.nodeType===3&&(a+=o.nodeValue),o.nodeType===1){var u=(o.nodeName||"").toUpperCase();if(o===e&&(i=1),["BR","HR"].includes(u))i===0?(a="",n=""):i=2;else{if(o.style.display==="none"||o.style.overflow==="hidden"||!["",null,"none"].includes(o.style.float)||!["",null,"relative"].includes(o.style.position))return!1;if(St(o)==="widget")return n+=o.textContent,!1}}}),a=ne(a),t!=null&&t.noLengthCompare?a.length!==0:(n=ne(n),a.length>n.length)}var xo=Ty;function Ry(e){e=e||{};var t=e.modalPercent||.75;if(oe.get("isModalOpen"))return oe.get("isModalOpen");var r=Nt(w._tree[0],"dialog, [role=dialog], [aria-modal=true]",ct);if(r.length)return oe.set("isModalOpen",!0),!0;for(var a=cn(D),n=a.width*t,i=a.height*t,o=(a.width-n)/2,u=(a.height-i)/2,s=[{x:o,y:u},{x:a.width-o,y:u},{x:a.width/2,y:a.height/2},{x:o,y:a.height-u},{x:a.width-o,y:a.height-u}],c=s.map(function(p){return Array.from(L.elementsFromPoint(p.x,p.y))}),l=function(){var m=c[f].find(function(h){var v=D.getComputedStyle(h);return parseInt(v.width,10)>=n&&parseInt(v.height,10)>=i&&v.getPropertyValue("pointer-events")!=="none"&&(v.position==="absolute"||v.position==="fixed")});if(m&&c.every(function(h){return h.includes(m)}))return oe.set("isModalOpen",!0),{v:!0}},d,f=0;f1&&arguments[1]!==void 0?arguments[1]:2,r=e.ownerDocument.createRange();r.setStart(e,0),r.setEnd(e,e.childNodes.length);var a=0,n=0,i=Fe(r.getClientRects()),o;try{for(i.s();!(o=i.n()).done;){var u=o.value;if(!(u.height<=t))if(a>u.top+t)a=Math.max(a,u.bottom);else if(n===0)a=u.bottom,n++;else return!0}}catch(s){i.e(s)}finally{i.f()}return!1}function ky(e){return e instanceof D.Node}var Sy=ky,Eo="color.incompleteData",Oy={set:function(t,r){if(typeof t!="string")throw new Error("Incomplete data: key must be a string");var a=oe.get(Eo,function(){return{}});return r&&(a[t]=r),a[t]},get:function(t){var r=oe.get(Eo);return r==null?void 0:r[t]},clear:function(){oe.set(Eo,{})}},Ke=Oy;function My(e,t){var r=["IMG","CANVAS","OBJECT","IFRAME","VIDEO","SVG"],a=e.nodeName.toUpperCase();if(r.includes(a))return Ke.set("bgColor","imgNode"),!0;t=t||D.getComputedStyle(e);var n=t.getPropertyValue("background-image"),i=n!=="none";if(i){var o=/gradient/.test(n);Ke.set("bgColor",o?"bgGradient":"bgImage")}return i}var Cn=My,Uc={};yt(Uc,{Colorjs:function(){return ot},CssSelectorParser:function(){return By.CssSelectorParser},doT:function(){return Gc.default},emojiRegexText:function(){return ho},memoize:function(){return qy.default}});var Ny=wt(Lh()),Iy=wt(Bh());wt(qh());var Py=wt(dv()),Ly=wt(Tv());"hasOwn"in Object||(Object.hasOwn=Py.default),"values"in Object||(Object.values=Ly.default),"Promise"in D||Ny.default.polyfill(),"Uint32Array"in D||(D.Uint32Array=Iy.Uint32Array),D.Uint32Array&&("some"in D.Uint32Array.prototype||Object.defineProperty(D.Uint32Array.prototype,"some",{value:Array.prototype.some}),"reduce"in D.Uint32Array.prototype||Object.defineProperty(D.Uint32Array.prototype,"reduce",{value:Array.prototype.reduce})),typeof Object.assign!="function"&&function(){Object.assign=function(e){if(e==null)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1;r>>0,n=arguments[1],i,o=0;o>>0,i,o=0;o=0?i=n:(i=a+n,i<0&&(i=0));for(var o;i>>0,n=arguments.length>=2?arguments[1]:void 0,i=0;i0?1:-1)*Math.floor(Math.abs(u))},a=Math.pow(2,53)-1,n=function(o){var u=r(o);return Math.min(Math.max(u,0),a)};return function(o){var u=this,s=Object(o);if(o==null)throw new TypeError("Array.from requires an array-like object - not null or undefined");var c=arguments.length>1?arguments[1]:void 0,l;if(typeof c<"u"){if(!t(c))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(l=arguments[2])}for(var d=n(s.length),f=t(u)?Object(new u(d)):new Array(d),p=0,m;p"u"?c(m,p):c.call(l,m,p):f[p]=m,p+=1;return f.length=d,f}}()}),String.prototype.includes||(String.prototype.includes=function(e,t){return typeof t!="number"&&(t=0),t+e.length>this.length?!1:this.indexOf(e,t)!==-1}),Array.prototype.flat||Object.defineProperty(Array.prototype,"flat",{configurable:!0,value:function e(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(r,a){return Array.isArray(a)?r.push.apply(r,e.call(a,t-1)):r.push(a),r},[]):Array.prototype.slice.call(this)},writable:!0}),D.Node&&!("isConnected"in D.Node.prototype)&&Object.defineProperty(D.Node.prototype,"isConnected",{get:function(){return!this.ownerDocument||!(this.ownerDocument.compareDocumentPosition(this)&this.DOCUMENT_POSITION_DISCONNECTED)}});var By=wt(fs()),Gc=wt(Ss()),qy=wt(cs());function Ee(e,t){var r=e.length;Array.isArray(e[0])||(e=[e]),Array.isArray(t[0])||(t=t.map(function(o){return[o]}));var a=t[0].length,n=t[0].map(function(o,u){return t.map(function(s){return s[u]})}),i=e.map(function(o){return n.map(function(u){var s=0;if(!Array.isArray(o)){var c=Fe(u),l;try{for(c.s();!(l=c.n()).done;){var d=l.value;s+=o*d}}catch(p){c.e(p)}finally{c.f()}return s}for(var f=0;f)\[(-?[.\d]+),\s*(-?[.\d]+)\]?$/);if(a){var n=new String(a[1]);return n.range=[+a[2],+a[3]],n}return r})})}function Jc(e,t,r){return Math.max(Math.min(r,t),e)}function Fn(e,t){return Math.sign(e)===Math.sign(t)?e:-e}function Ot(e,t){return Fn(Math.pow(Math.abs(e),t),e)}function Ao(e,t){return t===0?0:e/t}function Qc(e,t){for(var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:e.length;r>1;e[n]3&&arguments[3]!==void 0?arguments[3]:{};if(e=Fo(e),t=Fo(t),!e||!t)throw new TypeError("Missing white point to convert ".concat(e?"":"from").concat(!e&&!t?"/":"").concat(t?"":"to"));if(e===t)return r;var n={W1:e,W2:t,XYZ:r,options:a};if(tr.run("chromatic-adaptation-start",n),n.M||(n.W1===nt.D65&&n.W2===nt.D50?n.M=[[1.0479297925449969,.022946870601609652,-.05019226628920524],[.02962780877005599,.9904344267538799,-.017073799063418826],[-.009243040646204504,.015055191490298152,.7518742814281371]]:n.W1===nt.D50&&n.W2===nt.D65&&(n.M=[[.955473421488075,-.02309845494876471,.06325924320057072],[-.0283697093338637,1.0099953980813041,.021041441191917323],[.012314014864481998,-.020507649298898964,1.330365926242124]])),tr.run("chromatic-adaptation-end",n),n.M)return Ee(n.M,n.XYZ);throw new TypeError("Only Bradford CAT with white points D50 and D65 supported for now.")}var Hy=new Set(["","",""]);function e1(e,t,r,a){var n=Object.entries(e.coords).map(function(i,o){var u=P(i,2),s=u[0],c=u[1],l=t.coordGrammar[o],d=a[o],f=d==null?void 0:d.type,p;if(d.none?p=l.find(function(g){return Hy.has(g)}):p=l.find(function(g){return g==f}),!p){var m=c.name||s;throw new TypeError("".concat(f??d.raw," not allowed for ").concat(m," in ").concat(r,"()"))}var h=p.range;f===""&&(h||(h=[0,1]));var v=c.range||c.refRange;return h&&v&&(a[o]=Co(h,v,a[o])),p});return n}function t1(e){var t,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=r.meta,n={str:(t=String(e))===null||t===void 0?void 0:t.trim()};if(tr.run("parse-start",n),n.color)return n.color;if(n.parsed=Yc(n.str),n.parsed){var i=n.parsed.name;if(i==="color"){var o=n.parsed.args.shift(),u=o.startsWith("--")?o.substring(2):"--".concat(o),s=[o,u],c=n.parsed.rawArgs.indexOf("/")>0?n.parsed.args.pop():1,l=Fe(Y.all),d;try{for(l.s();!(d=l.n()).done;){var f=d.value,p=f.getFormat("color");if(p){var m;if(s.includes(p.id)||(m=p.ids)!==null&&m!==void 0&&m.filter(function(Q){return s.includes(Q)}).length){var h=Object.keys(f.coords).map(function(Q,C){return n.parsed.args[C]||0}),v=void 0;return p.coordGrammar&&(v=e1(f,p,"color",h)),a&&Object.assign(a,{formatId:"color",types:v}),p.id.startsWith("--")&&!o.startsWith("--")&&ft.warn("".concat(f.name," is a non-standard space and not currently supported in the CSS spec. Use prefixed color(").concat(p.id,") instead of color(").concat(o,").")),o.startsWith("--")&&!p.id.startsWith("--")&&ft.warn("".concat(f.name," is a standard space and supported in the CSS spec. Use color(").concat(p.id,") instead of prefixed color(").concat(o,").")),{spaceId:f.id,coords:h,alpha:c}}}}}catch(Q){l.e(Q)}finally{l.f()}var g="",b=o in Y.registry?o:u;if(b in Y.registry){var y,_=(y=Y.registry[b].formats)===null||y===void 0||(y=y.color)===null||y===void 0?void 0:y.id;_&&(g="Did you mean color(".concat(_,")?"))}throw new TypeError("Cannot parse color(".concat(o,"). ")+(g||"Missing a plugin?"))}else{var A=Fe(Y.all),R;try{for(A.s();!(R=A.n()).done;){var S=R.value,q=S.getFormat(i);if(q&&q.type==="function"){var $=1;(q.lastAlpha||Kc(n.parsed.args).alpha)&&($=n.parsed.args.pop());var k=n.parsed.args,V=void 0;return q.coordGrammar&&(V=e1(S,q,i,k)),a&&Object.assign(a,{formatId:q.name,types:V}),{spaceId:S.id,coords:k,alpha:$}}}}catch(Q){A.e(Q)}finally{A.f()}}}else{var z=Fe(Y.all),U;try{for(z.s();!(U=z.n()).done;){var J=U.value;for(var ee in J.formats){var K=J.formats[ee];if(K.type==="custom"&&!(K.test&&!K.test(n.str))){var re=K.parse(n.str);if(re){var N;return(N=re.alpha)!==null&&N!==void 0||(re.alpha=1),a&&(a.formatId=ee),re}}}}}catch(Q){z.e(Q)}finally{z.f()}}throw new TypeError("Could not parse ".concat(e," as a color. Missing a plugin?"))}function ue(e){if(Array.isArray(e))return e.map(ue);if(!e)throw new TypeError("Empty color reference");Ca(e)&&(e=t1(e));var t=e.space||e.spaceId;return t instanceof Y||(e.space=Y.get(t)),e.alpha===void 0&&(e.alpha=1),e}var $y=75e-6,Uy=function(){function e(t){var r,a,n,i,o;Et(this,e),this.id=t.id,this.name=t.name,this.base=t.base?e.get(t.base):null,this.aliases=t.aliases,this.base&&(this.fromBase=t.fromBase,this.toBase=t.toBase);var u=(r=t.coords)!==null&&r!==void 0?r:this.base.coords;for(var s in u)"name"in u[s]||(u[s].name=s);this.coords=u;var c=(a=(n=t.white)!==null&&n!==void 0?n:this.base.white)!==null&&a!==void 0?a:"D65";this.white=Fo(c),this.formats=(i=t.formats)!==null&&i!==void 0?i:{};for(var l in this.formats){var d=this.formats[l];d.type||(d.type="function"),d.name||(d.name=l)}if(!((o=this.formats.color)!==null&&o!==void 0&&o.id)){var f;this.formats.color=le({},(f=this.formats.color)!==null&&f!==void 0?f:{},{id:t.cssId||this.id})}t.gamutSpace?this.gamutSpace=t.gamutSpace==="self"?this:e.get(t.gamutSpace):this.isPolar?this.gamutSpace=this.base:this.gamutSpace=this,this.gamutSpace.isUnbounded&&(this.inGamut=function(p,m){return!0}),this.referred=t.referred,Object.defineProperty(this,"path",{value:Gy(this).reverse(),writable:!1,enumerable:!0,configurable:!0}),tr.run("colorspace-init-end",this)}return Ct(e,[{key:"inGamut",value:function(r){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=a.epsilon,i=n===void 0?$y:n;if(!this.equals(this.gamutSpace))return r=this.to(this.gamutSpace,r),this.gamutSpace.inGamut(r,{epsilon:i});var o=Object.values(this.coords);return r.every(function(u,s){var c=o[s];if(c.type!=="angle"&&c.range){if(Number.isNaN(u))return!0;var l=P(c.range,2),d=l[0],f=l[1];return(d===void 0||u>=d-i)&&(f===void 0||u<=f+i)}return!0})}},{key:"isUnbounded",get:function(){return Object.values(this.coords).every(function(r){return!("range"in r)})}},{key:"cssId",get:function(){var r;return((r=this.formats)===null||r===void 0||(r=r.color)===null||r===void 0?void 0:r.id)||this.id}},{key:"isPolar",get:function(){for(var r in this.coords)if(this.coords[r].type==="angle")return!0;return!1}},{key:"getFormat",value:function(r){if(O(r)==="object")return r=r1(r,this),r;var a;return r==="default"?a=Object.values(this.formats)[0]:a=this.formats[r],a?(a=r1(a,this),a):null}},{key:"equals",value:function(r){return r?this===r||this.id===r||this.id===r.id:!1}},{key:"to",value:function(r,a){if(arguments.length===1){var n=ue(r),i=[n.space,n.coords];r=i[0],a=i[1]}if(r=e.get(r),this.equals(r))return a;a=a.map(function(p){return Number.isNaN(p)?0:p});for(var o=this.path,u=r.path,s,c,l=0;lc;d--)a=o[d].toBase(a);for(var f=c+1;f1?i-1:0),u=1;u=0){var l=Object.entries(i.coords)[o];if(l)return le({space:i,id:l[0],index:o},l[1])}i=e.get(i);var d=o.toLowerCase(),f=0;for(var p in i.coords){var m,h=i.coords[p];if(p.toLowerCase()===d||((m=h.name)===null||m===void 0?void 0:m.toLowerCase())===d)return le({space:i,id:p,index:f},h);f++}throw new TypeError('No "'.concat(o,'" coordinate found in ').concat(i.name,". Its coordinates are: ").concat(Object.keys(i.coords).join(", ")))}}]),e}(),Y=Uy;Qu(Y,"registry",{}),Qu(Y,"DEFAULT_FORMAT",{type:"functions",name:"color"});function Gy(e){for(var t=[e],r=e;r=r.base;)t.push(r);return t}function r1(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.coords;if(e.coords&&!e.coordGrammar){e.type||(e.type="function"),e.name||(e.name="color"),e.coordGrammar=Zc(e.coords);var a=Object.entries(r).map(function(n,i){var o=P(n,2);o[0];var u=o[1],s=e.coordGrammar[i][0],c=u.range||u.refRange,l=s.range,d="";return s==""?(l=[0,100],d="%"):s==""&&(d="deg"),{fromRange:c,toRange:l,suffix:d}});e.serializeCoords=function(n,i){return n.map(function(o,u){var s=a[u],c=s.fromRange,l=s.toRange,d=s.suffix;return c&&l&&(o=Co(c,l,o)),o=An(o,{precision:i,unit:d}),o})}}return e}var Xe=new Y({id:"xyz-d65",name:"XYZ D65",coords:{x:{name:"X"},y:{name:"Y"},z:{name:"Z"}},white:"D65",formats:{color:{ids:["xyz-d65","xyz"]}},aliases:["xyz"]}),it=function(e){di(t,e);function t(r){var a,n;if(Et(this,t),r.coords||(r.coords={r:{range:[0,1],name:"Red"},g:{range:[0,1],name:"Green"},b:{range:[0,1],name:"Blue"}}),r.base||(r.base=Xe),r.toXYZ_M&&r.fromXYZ_M){var i,o;(i=r.toBase)!==null&&i!==void 0||(r.toBase=function(u){var s=Ee(r.toXYZ_M,u);return n.white!==n.base.white&&(s=Tn(n.white,n.base.white,s)),s}),(o=r.fromBase)!==null&&o!==void 0||(r.fromBase=function(u){return u=Tn(n.base.white,n.white,u),Ee(r.fromXYZ_M,u)})}return(a=r.referred)!==null&&a!==void 0||(r.referred="display"),n=li(this,t,[r])}return Ct(t)}(Y);function Fa(e,t){return e=ue(e),!t||e.space.equals(t)?e.coords.slice():(t=Y.get(t),t.from(e))}function pt(e,t){e=ue(e);var r=Y.resolveCoord(t,e.space),a=r.space,n=r.index,i=Fa(e,a);return i[n]}function To(e,t,r){return e=ue(e),t=Y.get(t),e.coords=t.to(e.space,r),e}To.returns="color";function Vt(e,t,r){if(e=ue(e),arguments.length===2&&Qt(arguments[1])==="object"){var a=arguments[1];for(var n in a)Vt(e,n,a[n])}else{typeof r=="function"&&(r=r(pt(e,t)));var i=Y.resolveCoord(t,e.space),o=i.space,u=i.index,s=Fa(e,o);s[u]=r,To(e,o,s)}return e}Vt.returns="color";var Ro=new Y({id:"xyz-d50",name:"XYZ D50",white:"D50",base:Xe,fromBase:function(t){return Tn(Xe.white,"D50",t)},toBase:function(t){return Tn("D50",Xe.white,t)}}),Wy=216/24389,a1=24/116,Rn=24389/27,ko=nt.D50,mt=new Y({id:"lab",name:"Lab",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:ko,base:Ro,fromBase:function(t){var r=t.map(function(n,i){return n/ko[i]}),a=r.map(function(n){return n>Wy?Math.cbrt(n):(Rn*n+16)/116});return[116*a[1]-16,500*(a[0]-a[1]),200*(a[1]-a[2])]},toBase:function(t){var r=[];r[1]=(t[0]+16)/116,r[0]=t[1]/500+r[1],r[2]=r[1]-t[2]/200;var a=[r[0]>a1?Math.pow(r[0],3):(116*r[0]-16)/Rn,t[0]>8?Math.pow((t[0]+16)/116,3):t[0]/Rn,r[2]>a1?Math.pow(r[2],3):(116*r[2]-16)/Rn];return a.map(function(n,i){return n*ko[i]})},formats:{lab:{coords:[" | "," | [-1,1]"," | [-1,1]"]}}});function Mt(e){return(e%360+360)%360}function Yy(e,t){if(e==="raw")return t;var r=t.map(Mt),a=P(r,2),n=a[0],i=a[1],o=i-n;return e==="increasing"?o<0&&(i+=360):e==="decreasing"?o>0&&(n+=360):e==="longer"?-1800?n+=360:i+=360):e==="shorter"&&(o>180?n+=360:o<-180&&(i+=360)),[n,i]}var Ta=new Y({id:"lch",name:"LCH",coords:{l:{refRange:[0,100],name:"Lightness"},c:{refRange:[0,150],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:mt,fromBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2],o,u=.02;return Math.abs(n) | "," | "," | "]}}}),n1=Math.pow(25,7),kn=Math.PI,i1=180/kn,Hr=kn/180;function o1(e){var t=e*e,r=t*t*t*e;return r}function u1(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=r.kL,n=a===void 0?1:a,i=r.kC,o=i===void 0?1:i,u=r.kH,s=u===void 0?1:u,c=ue([e,t]),l=P(c,2);e=l[0],t=l[1];var d=mt.from(e),f=P(d,3),p=f[0],m=f[1],h=f[2],v=Ta.from(mt,[p,m,h])[1],g=mt.from(t),b=P(g,3),y=b[0],_=b[1],A=b[2],R=Ta.from(mt,[y,_,A])[1];v<0&&(v=0),R<0&&(R=0);var S=(v+R)/2,q=o1(S),$=.5*(1-Math.sqrt(q/(q+n1))),k=(1+$)*m,V=(1+$)*_,z=Math.sqrt(Math.pow(k,2)+Math.pow(h,2)),U=Math.sqrt(Math.pow(V,2)+Math.pow(A,2)),J=k===0&&h===0?0:Math.atan2(h,k),ee=V===0&&A===0?0:Math.atan2(A,V);J<0&&(J+=2*kn),ee<0&&(ee+=2*kn),J*=i1,ee*=i1;var K=y-p,re=U-z,N=ee-J,Q=J+ee,C=Math.abs(N),G;z*U===0?G=0:C<=180?G=N:N>180?G=N-360:N<-180?G=N+360:ft.warn("the unthinkable has happened");var j=2*Math.sqrt(U*z)*Math.sin(G*Hr/2),te=(p+y)/2,pe=(z+U)/2,X=o1(pe),H;z*U===0?H=Q:C<=180?H=Q/2:Q<360?H=(Q+360)/2:H=(Q-360)/2;var we=Math.pow(te-50,2),ke=1+.015*we/Math.sqrt(20+we),_e=1+.045*pe,xe=1;xe-=.17*Math.cos((H-30)*Hr),xe+=.24*Math.cos(2*H*Hr),xe+=.32*Math.cos((3*H+6)*Hr),xe-=.2*Math.cos((4*H-63)*Hr);var Be=1+.015*pe*xe,qe=30*Math.exp(-1*Math.pow((H-275)/25,2)),Ie=2*Math.sqrt(X/(X+n1)),ur=-1*Math.sin(2*qe*Hr)*Ie,Se=Math.pow(K/(n*ke),2);return Se+=Math.pow(re/(o*_e),2),Se+=Math.pow(j/(s*Be),2),Se+=ur*(re/(o*_e))*(j/(s*Be)),Math.sqrt(Se)}var Ky=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],Xy=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],Zy=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],Jy=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],$r=new Y({id:"oklab",name:"Oklab",coords:{l:{refRange:[0,1],name:"Lightness"},a:{refRange:[-.4,.4]},b:{refRange:[-.4,.4]}},white:"D65",base:Xe,fromBase:function(t){var r=Ee(Ky,t),a=r.map(function(n){return Math.cbrt(n)});return Ee(Zy,a)},toBase:function(t){var r=Ee(Jy,t),a=r.map(function(n){return Math.pow(n,3)});return Ee(Xy,a)},formats:{oklab:{coords:[" | "," | [-1,1]"," | [-1,1]"]}}});function So(e,t){var r=ue([e,t]),a=P(r,2);e=a[0],t=a[1];var n=$r.from(e),i=P(n,3),o=i[0],u=i[1],s=i[2],c=$r.from(t),l=P(c,3),d=l[0],f=l[1],p=l[2],m=o-d,h=u-f,v=s-p;return Math.sqrt(Math.pow(m,2)+Math.pow(h,2)+Math.pow(v,2))}var Qy=75e-6;function _r(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=r.epsilon,n=a===void 0?Qy:a;e=ue(e),t||(t=e.space),t=Y.get(t);var i=e.coords;return t!==e.space&&(i=t.from(e)),t.inGamut(i,{epsilon:n})}function Ur(e){return{space:e.space,coords:e.coords.slice(),alpha:e.alpha}}function s1(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"lab";r=Y.get(r);var a=r.from(e),n=r.from(t);return Math.sqrt(a.reduce(function(i,o,u){var s=n[u];return isNaN(o)||isNaN(s)?i:i+Math.pow(s-o,2)},0))}function e2(e,t){return s1(e,t,"lab")}var t2=Math.PI,l1=t2/180;function r2(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=r.l,n=a===void 0?2:a,i=r.c,o=i===void 0?1:i,u=ue([e,t]),s=P(u,2);e=s[0],t=s[1];var c=mt.from(e),l=P(c,3),d=l[0],f=l[1],p=l[2],m=Ta.from(mt,[d,f,p]),h=P(m,3),v=h[1],g=h[2],b=mt.from(t),y=P(b,3),_=y[0],A=y[1],R=y[2],S=Ta.from(mt,[_,A,R])[1];v<0&&(v=0),S<0&&(S=0);var q=d-_,$=v-S,k=f-A,V=p-R,z=Math.pow(k,2)+Math.pow(V,2)-Math.pow($,2),U=.511;d>=16&&(U=.040975*d/(1+.01765*d));var J=.0638*v/(1+.0131*v)+.638,ee;Number.isNaN(g)&&(g=0),g>=164&&g<=345?ee=.56+Math.abs(.2*Math.cos((g+168)*l1)):ee=.36+Math.abs(.4*Math.cos((g+35)*l1));var K=Math.pow(v,4),re=Math.sqrt(K/(K+1900)),N=J*(re*ee+1-re),Q=Math.pow(q/(n*U),2);return Q+=Math.pow($/(o*J),2),Q+=z/Math.pow(N,2),Math.sqrt(Q)}var c1=203,Oo=new Y({id:"xyz-abs-d65",cssId:"--xyz-abs-d65",name:"Absolute XYZ D65",coords:{x:{refRange:[0,9504.7],name:"Xa"},y:{refRange:[0,1e4],name:"Ya"},z:{refRange:[0,10888.3],name:"Za"}},base:Xe,fromBase:function(t){return t.map(function(r){return Math.max(r*c1,0)})},toBase:function(t){return t.map(function(r){return Math.max(r/c1,0)})}}),Sn=1.15,On=.66,d1=2610/Math.pow(2,14),a2=Math.pow(2,14)/2610,f1=3424/Math.pow(2,12),p1=2413/Math.pow(2,7),m1=2392/Math.pow(2,7),n2=1.7*2523/Math.pow(2,5),h1=Math.pow(2,5)/(1.7*2523),Mn=-.56,Mo=16295499532821565e-27,i2=[[.41478972,.579999,.014648],[-.20151,1.120649,.0531008],[-.0166008,.2648,.6684799]],o2=[[1.9242264357876067,-1.0047923125953657,.037651404030618],[.35031676209499907,.7264811939316552,-.06538442294808501],[-.09098281098284752,-.3127282905230739,1.5227665613052603]],u2=[[.5,.5,0],[3.524,-4.066708,.542708],[.199076,1.096799,-1.295875]],s2=[[1,.1386050432715393,.05804731615611886],[.9999999999999999,-.1386050432715393,-.05804731615611886],[.9999999999999998,-.09601924202631895,-.8118918960560388]],v1=new Y({id:"jzazbz",name:"Jzazbz",coords:{jz:{refRange:[0,1],name:"Jz"},az:{refRange:[-.5,.5]},bz:{refRange:[-.5,.5]}},base:Oo,fromBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2],o=Sn*a-(Sn-1)*i,u=On*n-(On-1)*a,s=Ee(i2,[o,u,i]),c=s.map(function(v){var g=f1+p1*Math.pow(v/1e4,d1),b=1+m1*Math.pow(v/1e4,d1);return Math.pow(g/b,n2)}),l=Ee(u2,c),d=P(l,3),f=d[0],p=d[1],m=d[2],h=(1+Mn)*f/(1+Mn*f)-Mo;return[h,p,m]},toBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2],o=(a+Mo)/(1+Mn-Mn*(a+Mo)),u=Ee(s2,[o,n,i]),s=u.map(function(v){var g=f1-Math.pow(v,h1),b=m1*Math.pow(v,h1)-p1,y=1e4*Math.pow(g/b,a2);return y}),c=Ee(o2,s),l=P(c,3),d=l[0],f=l[1],p=l[2],m=(d+(Sn-1)*p)/Sn,h=(f+(On-1)*m)/On;return[m,h,p]},formats:{color:{coords:[" | "," | [-1,1]"," | [-1,1]"]}}}),No=new Y({id:"jzczhz",name:"JzCzHz",coords:{jz:{refRange:[0,1],name:"Jz"},cz:{refRange:[0,1],name:"Chroma"},hz:{refRange:[0,360],type:"angle",name:"Hue"}},base:v1,fromBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2],o,u=2e-4;return Math.abs(n)R2?Math.cbrt(e):(k1*e+16)/116;return 116*t-16}function Bo(e){return e>8?Math.pow((e+16)/116,3):e/k1}function S2(e,t){var r=P(e,3),a=r[0],n=r[1],i=r[2],o=[],u=0;if(i===0)return[0,0,0];var s=Bo(i);i>0?u=.00379058511492914*Math.pow(i,2)+.608983189401032*i+.9155088574762233:u=9514440756550361e-21*Math.pow(i,2)+.08693057439788597*i-21.928975842194614;for(var c=2e-12,l=15,d=0,f=1/0;d<=l;){o=Lo({J:u,C:n,h:a},t);var p=Math.abs(o[1]-s);if(p | "," | "," | "]}}}),M2=Math.PI/180,S1=[1,.007,.0228];function O1(e){e[1]<0&&(e=Ra.fromBase(Ra.toBase(e)));var t=Math.log(Math.max(1+S1[2]*e[1]*qo.flRoot,1))/S1[2],r=e[0]*M2,a=t*Math.cos(r),n=t*Math.sin(r);return[e[2],a,n]}function N2(e,t){var r=ue([e,t]),a=P(r,2);e=a[0],t=a[1];var n=O1(Ra.from(e)),i=P(n,3),o=i[0],u=i[1],s=i[2],c=O1(Ra.from(t)),l=P(c,3),d=l[0],f=l[1],p=l[2];return Math.sqrt(Math.pow(o-d,2)+Math.pow(u-f,2)+Math.pow(s-p,2))}var Gr={deltaE76:e2,deltaECMC:r2,deltaE2000:u1,deltaEJz:l2,deltaEITP:b2,deltaEOK:So,deltaEHCT:N2};function I2(e){var t=e?Math.floor(Math.log10(Math.abs(e))):0;return Math.max(parseFloat("1e".concat(t-2)),1e-6)}var M1={hct:{method:"hct.c",jnd:2,deltaEMethod:"hct",blackWhiteClamp:{}},"hct-tonal":{method:"hct.c",jnd:0,deltaEMethod:"hct",blackWhiteClamp:{channel:"hct.t",min:0,max:100}}};function rr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.method,a=r===void 0?ft.gamut_mapping:r,n=t.space,i=n===void 0?void 0:n,o=t.deltaEMethod,u=o===void 0?"":o,s=t.jnd,c=s===void 0?2:s,l=t.blackWhiteClamp,d=l===void 0?{}:l;if(e=ue(e),Ca(arguments[1])?i=arguments[1]:i||(i=e.space),i=Y.get(i),_r(e,i,{epsilon:0}))return e;var f;if(a==="css")f=P2(e,{space:i});else{if(a!=="clip"&&!_r(e,i)){if(Object.prototype.hasOwnProperty.call(M1,a)){var p=M1[a];a=p.method,c=p.jnd,u=p.deltaEMethod,d=p.blackWhiteClamp}var m=u1;if(u!==""){for(var h in Gr)if("deltae"+u.toLowerCase()===h.toLowerCase()){m=Gr[h];break}}var v=rr(Ce(e,i),{method:"clip",space:i});if(m(e,v)>c){if(Object.keys(d).length===3){var g=Y.resolveCoord(d.channel),b=pt(Ce(e,g.space),g.id);if(er(b)&&(b=0),b>=d.max)return Ce({space:"xyz-d65",coords:nt.D65},e.space);if(b<=d.min)return Ce({space:"xyz-d65",coords:[0,0,0]},e.space)}var y=Y.resolveCoord(a),_=y.space,A=y.id,R=Ce(e,_);R.coords.forEach(function(ee,K){er(ee)&&(R.coords[K]=0)});for(var S=y.range||y.refRange,q=S[0],$=I2(c),k=q,V=pt(R,A);V-k>$;){var z=Ur(R);z=rr(z,{space:i,method:"clip"});var U=m(R,z);U-c<$?k=pt(R,A):V=pt(R,A),Vt(R,A,(k+V)/2)}f=Ce(R,i)}else f=v}else f=Ce(e,i);if(a==="clip"||!_r(f,i,{epsilon:0})){var J=Object.values(i.coords).map(function(ee){return ee.range||[]});f.coords=f.coords.map(function(ee,K){var re=P(J[K],2),N=re[0],Q=re[1];return N!==void 0&&(ee=Math.max(N,ee)),Q!==void 0&&(ee=Math.min(ee,Q)),ee})}}return i!==e.space&&(f=Ce(f,e.space)),e.coords=f.coords,e}rr.returns="color";var N1={WHITE:{space:$r,coords:[1,0,0]},BLACK:{space:$r,coords:[0,0,0]}};function P2(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.space,a=.02,n=1e-4;e=ue(e),r||(r=e.space),r=Y.get(r);var i=Y.get("oklch");if(r.isUnbounded)return Ce(e,r);var o=Ce(e,i),u=o.coords[0];if(u>=1){var s=Ce(N1.WHITE,r);return s.alpha=e.alpha,Ce(s,r)}if(u<=0){var c=Ce(N1.BLACK,r);return c.alpha=e.alpha,Ce(c,r)}if(_r(o,r,{epsilon:0}))return Ce(o,r);function l(b){var y=Ce(b,r),_=Object.values(r.coords);return y.coords=y.coords.map(function(A,R){if("range"in _[R]){var S=P(_[R].range,2),q=S[0],$=S[1];return Jc(q,A,$)}return A}),y}var d=0,f=o.coords[1],p=!0,m=Ur(o),h=l(m),v=So(h,m);if(vn;){var g=(d+f)/2;if(m.coords[1]=g,p&&_r(m,r,{epsilon:0}))d=g;else if(h=l(m),v=So(h,m),v2&&arguments[2]!==void 0?arguments[2]:{},a=r.inGamut;e=ue(e),t=Y.get(t);var n=t.from(e),i={space:t,coords:n,alpha:e.alpha};return a&&(i=rr(i,a===!0?void 0:a)),i}Ce.returns="color";function ka(e){var t,r,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=a.precision,i=n===void 0?ft.precision:n,o=a.format,u=o===void 0?"default":o,s=a.inGamut,c=s===void 0?!0:s,l=je(a,Zp),d;e=ue(e);var f=u;u=(t=(r=e.space.getFormat(u))!==null&&r!==void 0?r:e.space.getFormat("default"))!==null&&t!==void 0?t:Y.DEFAULT_FORMAT;var p=e.coords.slice();if(c||(c=u.toGamut),c&&!_r(e)&&(p=rr(Ur(e),c===!0?void 0:c).coords),u.type==="custom")if(l.precision=i,u.serialize)d=u.serialize(p,e.alpha,l);else throw new TypeError("format ".concat(f," can only be used to parse colors, not for serialization"));else{var m=u.name||"color";u.serializeCoords?p=u.serializeCoords(p,i):i!==null&&(p=p.map(function(_){return An(_,{precision:i})}));var h=ae(p);if(m==="color"){var v,g=u.id||((v=u.ids)===null||v===void 0?void 0:v[0])||e.space.id;h.unshift(g)}var b=e.alpha;i!==null&&(b=An(b,{precision:i}));var y=e.alpha>=1||u.noAlpha?"":"".concat(u.commas?",":" /"," ").concat(b);d="".concat(m,"(").concat(h.join(u.commas?", ":" ")).concat(y,")")}return d}var L2=[[.6369580483012914,.14461690358620832,.1688809751641721],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],B2=[[1.716651187971268,-.355670783776392,-.25336628137366],[-.666684351832489,1.616481236634939,.0157685458139111],[.017639857445311,-.042770613257809,.942103121235474]],Nn=new it({id:"rec2020-linear",cssId:"--rec2020-linear",name:"Linear REC.2020",white:"D65",toXYZ_M:L2,fromXYZ_M:B2}),In=1.09929682680944,I1=.018053968510807,P1=new it({id:"rec2020",name:"REC.2020",base:Nn,toBase:function(t){return t.map(function(r){return r=I1?In*Math.pow(r,.45)-(In-1):4.5*r})}}),q2=[[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],j2=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],L1=new it({id:"p3-linear",cssId:"--display-p3-linear",name:"Linear P3",white:"D65",toXYZ_M:q2,fromXYZ_M:j2}),z2=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Ve=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],B1=new it({id:"srgb-linear",name:"Linear sRGB",white:"D65",toXYZ_M:z2,fromXYZ_M:Ve}),q1={aliceblue:[240/255,248/255,1],antiquewhite:[250/255,235/255,215/255],aqua:[0,1,1],aquamarine:[127/255,1,212/255],azure:[240/255,1,1],beige:[245/255,245/255,220/255],bisque:[1,228/255,196/255],black:[0,0,0],blanchedalmond:[1,235/255,205/255],blue:[0,0,1],blueviolet:[138/255,43/255,226/255],brown:[165/255,42/255,42/255],burlywood:[222/255,184/255,135/255],cadetblue:[95/255,158/255,160/255],chartreuse:[127/255,1,0],chocolate:[210/255,105/255,30/255],coral:[1,127/255,80/255],cornflowerblue:[100/255,149/255,237/255],cornsilk:[1,248/255,220/255],crimson:[220/255,20/255,60/255],cyan:[0,1,1],darkblue:[0,0,139/255],darkcyan:[0,139/255,139/255],darkgoldenrod:[184/255,134/255,11/255],darkgray:[169/255,169/255,169/255],darkgreen:[0,100/255,0],darkgrey:[169/255,169/255,169/255],darkkhaki:[189/255,183/255,107/255],darkmagenta:[139/255,0,139/255],darkolivegreen:[85/255,107/255,47/255],darkorange:[1,140/255,0],darkorchid:[153/255,50/255,204/255],darkred:[139/255,0,0],darksalmon:[233/255,150/255,122/255],darkseagreen:[143/255,188/255,143/255],darkslateblue:[72/255,61/255,139/255],darkslategray:[47/255,79/255,79/255],darkslategrey:[47/255,79/255,79/255],darkturquoise:[0,206/255,209/255],darkviolet:[148/255,0,211/255],deeppink:[1,20/255,147/255],deepskyblue:[0,191/255,1],dimgray:[105/255,105/255,105/255],dimgrey:[105/255,105/255,105/255],dodgerblue:[30/255,144/255,1],firebrick:[178/255,34/255,34/255],floralwhite:[1,250/255,240/255],forestgreen:[34/255,139/255,34/255],fuchsia:[1,0,1],gainsboro:[220/255,220/255,220/255],ghostwhite:[248/255,248/255,1],gold:[1,215/255,0],goldenrod:[218/255,165/255,32/255],gray:[128/255,128/255,128/255],green:[0,128/255,0],greenyellow:[173/255,1,47/255],grey:[128/255,128/255,128/255],honeydew:[240/255,1,240/255],hotpink:[1,105/255,180/255],indianred:[205/255,92/255,92/255],indigo:[75/255,0,130/255],ivory:[1,1,240/255],khaki:[240/255,230/255,140/255],lavender:[230/255,230/255,250/255],lavenderblush:[1,240/255,245/255],lawngreen:[124/255,252/255,0],lemonchiffon:[1,250/255,205/255],lightblue:[173/255,216/255,230/255],lightcoral:[240/255,128/255,128/255],lightcyan:[224/255,1,1],lightgoldenrodyellow:[250/255,250/255,210/255],lightgray:[211/255,211/255,211/255],lightgreen:[144/255,238/255,144/255],lightgrey:[211/255,211/255,211/255],lightpink:[1,182/255,193/255],lightsalmon:[1,160/255,122/255],lightseagreen:[32/255,178/255,170/255],lightskyblue:[135/255,206/255,250/255],lightslategray:[119/255,136/255,153/255],lightslategrey:[119/255,136/255,153/255],lightsteelblue:[176/255,196/255,222/255],lightyellow:[1,1,224/255],lime:[0,1,0],limegreen:[50/255,205/255,50/255],linen:[250/255,240/255,230/255],magenta:[1,0,1],maroon:[128/255,0,0],mediumaquamarine:[102/255,205/255,170/255],mediumblue:[0,0,205/255],mediumorchid:[186/255,85/255,211/255],mediumpurple:[147/255,112/255,219/255],mediumseagreen:[60/255,179/255,113/255],mediumslateblue:[123/255,104/255,238/255],mediumspringgreen:[0,250/255,154/255],mediumturquoise:[72/255,209/255,204/255],mediumvioletred:[199/255,21/255,133/255],midnightblue:[25/255,25/255,112/255],mintcream:[245/255,1,250/255],mistyrose:[1,228/255,225/255],moccasin:[1,228/255,181/255],navajowhite:[1,222/255,173/255],navy:[0,0,128/255],oldlace:[253/255,245/255,230/255],olive:[128/255,128/255,0],olivedrab:[107/255,142/255,35/255],orange:[1,165/255,0],orangered:[1,69/255,0],orchid:[218/255,112/255,214/255],palegoldenrod:[238/255,232/255,170/255],palegreen:[152/255,251/255,152/255],paleturquoise:[175/255,238/255,238/255],palevioletred:[219/255,112/255,147/255],papayawhip:[1,239/255,213/255],peachpuff:[1,218/255,185/255],peru:[205/255,133/255,63/255],pink:[1,192/255,203/255],plum:[221/255,160/255,221/255],powderblue:[176/255,224/255,230/255],purple:[128/255,0,128/255],rebeccapurple:[102/255,51/255,153/255],red:[1,0,0],rosybrown:[188/255,143/255,143/255],royalblue:[65/255,105/255,225/255],saddlebrown:[139/255,69/255,19/255],salmon:[250/255,128/255,114/255],sandybrown:[244/255,164/255,96/255],seagreen:[46/255,139/255,87/255],seashell:[1,245/255,238/255],sienna:[160/255,82/255,45/255],silver:[192/255,192/255,192/255],skyblue:[135/255,206/255,235/255],slateblue:[106/255,90/255,205/255],slategray:[112/255,128/255,144/255],slategrey:[112/255,128/255,144/255],snow:[1,250/255,250/255],springgreen:[0,1,127/255],steelblue:[70/255,130/255,180/255],tan:[210/255,180/255,140/255],teal:[0,128/255,128/255],thistle:[216/255,191/255,216/255],tomato:[1,99/255,71/255],turquoise:[64/255,224/255,208/255],violet:[238/255,130/255,238/255],wheat:[245/255,222/255,179/255],white:[1,1,1],whitesmoke:[245/255,245/255,245/255],yellow:[1,1,0],yellowgreen:[154/255,205/255,50/255]},j1=Array(3).fill(" | [0, 255]"),z1=Array(3).fill("[0, 255]"),Wr=new it({id:"srgb",name:"sRGB",base:B1,fromBase:function(t){return t.map(function(r){var a=r<0?-1:1,n=r*a;return n>.0031308?a*(1.055*Math.pow(n,1/2.4)-.055):12.92*r})},toBase:function(t){return t.map(function(r){var a=r<0?-1:1,n=r*a;return n<=.04045?r/12.92:a*Math.pow((n+.055)/1.055,2.4)})},formats:{rgb:{coords:j1},rgb_number:{name:"rgb",commas:!0,coords:z1,noAlpha:!0},color:{},rgba:{coords:j1,commas:!0,lastAlpha:!0},rgba_number:{name:"rgba",commas:!0,coords:z1},hex:{type:"custom",toGamut:!0,test:function(t){return/^#([a-f0-9]{3,4}){1,2}$/i.test(t)},parse:function(t){t.length<=5&&(t=t.replace(/[a-f0-9]/gi,"$&$&"));var r=[];return t.replace(/[a-f0-9]{2}/gi,function(a){r.push(parseInt(a,16)/255)}),{spaceId:"srgb",coords:r.slice(0,3),alpha:r.slice(3)[0]}},serialize:function(t,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=a.collapse,i=n===void 0?!0:n;r<1&&t.push(r),t=t.map(function(s){return Math.round(s*255)});var o=i&&t.every(function(s){return s%17===0}),u=t.map(function(s){return o?(s/17).toString(16):s.toString(16).padStart(2,"0")}).join("");return"#"+u}},keyword:{type:"custom",test:function(t){return/^[a-z]+$/i.test(t)},parse:function(t){t=t.toLowerCase();var r={spaceId:"srgb",coords:null,alpha:1};if(t==="transparent"?(r.coords=q1.black,r.alpha=0):r.coords=q1[t],r.coords)return r}}}}),V1=new it({id:"p3",cssId:"display-p3",name:"P3",base:L1,fromBase:Wr.fromBase,toBase:Wr.toBase});ft.display_space=Wr;var H1;if(typeof CSS<"u"&&CSS.supports)for(var jo=0,$1=[mt,P1,V1];jo<$1.length;jo++){var zo=$1[jo],V2=zo.getMinCoords(),H2={space:zo,coords:V2,alpha:1},$2=ka(H2);if(CSS.supports("color",$2)){ft.display_space=zo;break}}function U2(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.space,a=r===void 0?ft.display_space:r,n=je(t,Jp),i=ka(e,n);if(typeof CSS>"u"||CSS.supports("color",i)||!ft.display_space)i=new String(i),i.color=e;else{var o=e,u=e.coords.some(er)||er(e.alpha);if(u){var s;if(!((s=H1)!==null&&s!==void 0?s:H1=CSS.supports("color","hsl(none 50% 50%)"))&&(o=Ur(e),o.coords=o.coords.map(Le),o.alpha=Le(o.alpha),i=ka(o,n),CSS.supports("color",i)))return i=new String(i),i.color=o,i}o=Ce(o,a),i=new String(ka(o,n)),i.color=o}return i}function G2(e,t){return e=ue(e),t=ue(t),e.space===t.space&&e.alpha===t.alpha&&e.coords.every(function(r,a){return r===t.coords[a]})}function ar(e){return pt(e,[Xe,"y"])}function U1(e,t){Vt(e,[Xe,"y"],t)}function W2(e){Object.defineProperty(e.prototype,"luminance",{get:function(){return ar(this)},set:function(r){U1(this,r)}})}var Y2=Object.freeze({__proto__:null,getLuminance:ar,register:W2,setLuminance:U1});function K2(e,t){e=ue(e),t=ue(t);var r=Math.max(ar(e),0),a=Math.max(ar(t),0);if(a>r){var n=[a,r];r=n[0],a=n[1]}return(r+.05)/(a+.05)}var X2=.56,Z2=.57,J2=.62,Q2=.65,G1=.022,ew=1.414,tw=.1,rw=5e-4,aw=1.14,W1=.027,nw=1.14;function Y1(e){return e>=G1?e:e+Math.pow(G1-e,ew)}function Yr(e){var t=e<0?-1:1,r=Math.abs(e);return t*Math.pow(r,2.4)}function iw(e,t){t=ue(t),e=ue(e);var r,a,n,i,o,u;t=Ce(t,"srgb");var s=P(t.coords,3);i=s[0],o=s[1],u=s[2];var c=Yr(i)*.2126729+Yr(o)*.7151522+Yr(u)*.072175;e=Ce(e,"srgb");var l=P(e.coords,3);i=l[0],o=l[1],u=l[2];var d=Yr(i)*.2126729+Yr(o)*.7151522+Yr(u)*.072175,f=Y1(c),p=Y1(d),m=p>f;return Math.abs(p-f)0?n=a-W1:n=a+W1,n*100}function ow(e,t){e=ue(e),t=ue(t);var r=Math.max(ar(e),0),a=Math.max(ar(t),0);if(a>r){var n=[a,r];r=n[0],a=n[1]}var i=r+a;return i===0?0:(r-a)/i}var uw=5e4;function sw(e,t){e=ue(e),t=ue(t);var r=Math.max(ar(e),0),a=Math.max(ar(t),0);if(a>r){var n=[a,r];r=n[0],a=n[1]}return a===0?uw:(r-a)/a}function lw(e,t){e=ue(e),t=ue(t);var r=pt(e,[mt,"l"]),a=pt(t,[mt,"l"]);return Math.abs(r-a)}var cw=216/24389,K1=24/116,Pn=24389/27,Vo=nt.D65,Ho=new Y({id:"lab-d65",name:"Lab D65",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:Vo,base:Xe,fromBase:function(t){var r=t.map(function(n,i){return n/Vo[i]}),a=r.map(function(n){return n>cw?Math.cbrt(n):(Pn*n+16)/116});return[116*a[1]-16,500*(a[0]-a[1]),200*(a[1]-a[2])]},toBase:function(t){var r=[];r[1]=(t[0]+16)/116,r[0]=t[1]/500+r[1],r[2]=r[1]-t[2]/200;var a=[r[0]>K1?Math.pow(r[0],3):(116*r[0]-16)/Pn,t[0]>8?Math.pow((t[0]+16)/116,3):t[0]/Pn,r[2]>K1?Math.pow(r[2],3):(116*r[2]-16)/Pn];return a.map(function(n,i){return n*Vo[i]})},formats:{"lab-d65":{coords:[" | "," | [-1,1]"," | [-1,1]"]}}}),$o=Math.pow(5,.5)*.5+.5;function dw(e,t){e=ue(e),t=ue(t);var r=pt(e,[Ho,"l"]),a=pt(t,[Ho,"l"]),n=Math.abs(Math.pow(r,$o)-Math.pow(a,$o)),i=Math.pow(n,1/$o)*Math.SQRT2-40;return i<7.5?0:i}var Ln=Object.freeze({__proto__:null,contrastAPCA:iw,contrastDeltaPhi:dw,contrastLstar:lw,contrastMichelson:ow,contrastWCAG21:K2,contrastWeber:sw});function fw(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Ca(r)&&(r={algorithm:r});var a=r,n=a.algorithm,i=je(a,Qp);if(!n){var o=Object.keys(Ln).map(function(s){return s.replace(/^contrast/,"")}).join(", ");throw new TypeError("contrast() function needs a contrast algorithm. Please specify one of: ".concat(o))}e=ue(e),t=ue(t);for(var u in Ln)if("contrast"+n.toLowerCase()===u.toLowerCase())return Ln[u](e,t,i);throw new TypeError("Unknown contrast algorithm: ".concat(n))}function Bn(e){var t=Fa(e,Xe),r=P(t,3),a=r[0],n=r[1],i=r[2],o=a+15*n+3*i;return[4*a/o,9*n/o]}function X1(e){var t=Fa(e,Xe),r=P(t,3),a=r[0],n=r[1],i=r[2],o=a+n+i;return[a/o,n/o]}function pw(e){Object.defineProperty(e.prototype,"uv",{get:function(){return Bn(this)}}),Object.defineProperty(e.prototype,"xy",{get:function(){return X1(this)}})}var mw=Object.freeze({__proto__:null,register:pw,uv:Bn,xy:X1});function Sa(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Ca(r)&&(r={method:r});var a=r,n=a.method,i=n===void 0?ft.deltaE:n,o=je(a,em);for(var u in Gr)if("deltae"+i.toLowerCase()===u.toLowerCase())return Gr[u](e,t,o);throw new TypeError("Unknown deltaE method: ".concat(i))}function hw(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.25,r=Y.get("oklch","lch"),a=[r,"l"];return Vt(e,a,function(n){return n*(1+t)})}function vw(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.25,r=Y.get("oklch","lch"),a=[r,"l"];return Vt(e,a,function(n){return n*(1-t)})}var gw=Object.freeze({__proto__:null,darken:vw,lighten:hw});function Z1(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:.5,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=[ue(e),ue(t)];if(e=n[0],t=n[1],Qt(r)==="object"){var i=[.5,r];r=i[0],a=i[1]}var o=Oa(e,t,a);return o(r)}function J1(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a;if(Uo(e)){a=e,r=t;var n=P(a.rangeArgs.colors,2);e=n[0],t=n[1]}var i=r,o=i.maxDeltaE,u=i.deltaEMethod,s=i.steps,c=s===void 0?2:s,l=i.maxSteps,d=l===void 0?1e3:l,f=je(i,tm);if(!a){var p=[ue(e),ue(t)];e=p[0],t=p[1],a=Oa(e,t,f)}var m=Sa(e,t),h=o>0?Math.max(c,Math.ceil(m/o)+1):c,v=[];if(d!==void 0&&(h=Math.min(h,d)),h===1)v=[{p:.5,color:a(.5)}];else{var g=1/(h-1);v=Array.from({length:h},function(q,$){var k=$*g;return{p:k,color:a(k)}})}if(o>0)for(var b=v.reduce(function(q,$,k){if(k===0)return 0;var V=Sa($.color,v[k-1].color,u);return Math.max(q,V)},0);b>o;){b=0;for(var y=1;y2&&arguments[2]!==void 0?arguments[2]:{};if(Uo(e)){var a=e,n=t;return Oa.apply(void 0,ae(a.rangeArgs.colors).concat([le({},a.rangeArgs.options,n)]))}var i=r.space,o=r.outputSpace,u=r.progression,s=r.premultiplied;e=ue(e),t=ue(t),e=Ur(e),t=Ur(t);var c={colors:[e,t],options:r};if(i?i=Y.get(i):i=Y.registry[ft.interpolationSpace]||e.space,o=o?Y.get(o):i,e=Ce(e,i),t=Ce(t,i),e=rr(e),t=rr(t),i.coords.h&&i.coords.h.type==="angle"){var l=r.hue=r.hue||"shorter",d=[i,"h"],f=[pt(e,d),pt(t,d)],p=f[0],m=f[1];isNaN(p)&&!isNaN(m)?p=m:isNaN(m)&&!isNaN(p)&&(m=p);var h=Yy(l,[p,m]),v=P(h,2);p=v[0],m=v[1],Vt(e,d,p),Vt(t,d,m)}return s&&(e.coords=e.coords.map(function(g){return g*e.alpha}),t.coords=t.coords.map(function(g){return g*t.alpha})),Object.assign(function(g){g=u?u(g):g;var b=e.coords.map(function(A,R){var S=t.coords[R];return Aa(A,S,g)}),y=Aa(e.alpha,t.alpha,g),_={space:i,coords:b,alpha:y};return s&&(_.coords=_.coords.map(function(A){return A/y})),o!==i&&(_=Ce(_,o)),_},{rangeArgs:c})}function Uo(e){return Qt(e)==="function"&&!!e.rangeArgs}ft.interpolationSpace="lab";function bw(e){e.defineFunction("mix",Z1,{returns:"color"}),e.defineFunction("range",Oa,{returns:"function"}),e.defineFunction("steps",J1,{returns:"array"})}var yw=Object.freeze({__proto__:null,isRange:Uo,mix:Z1,range:Oa,register:bw,steps:J1}),Q1=new Y({id:"hsl",name:"HSL",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:Wr,fromBase:function(t){var r=Math.max.apply(Math,ae(t)),a=Math.min.apply(Math,ae(t)),n=P(t,3),i=n[0],o=n[1],u=n[2],s=NaN,c=0,l=(a+r)/2,d=r-a;if(d!==0){switch(c=l===0||l===1?0:(r-l)/Math.min(l,1-l),r){case i:s=(o-u)/d+(o=360&&(s-=360),[s,c*100,l*100]},toBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2];a=a%360,a<0&&(a+=360),n/=100,i/=100;function o(u){var s=(u+a/30)%12,c=n*Math.min(i,1-i);return i-c*Math.max(-1,Math.min(s-3,9-s,1))}return[o(0),o(8),o(4)]},formats:{hsl:{coords:[" | ","",""]},hsla:{coords:[" | ","",""],commas:!0,lastAlpha:!0}}}),ed=new Y({id:"hsv",name:"HSV",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},v:{range:[0,100],name:"Value"}},base:Q1,fromBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2];n/=100,i/=100;var o=i+n*Math.min(i,1-i);return[a,o===0?0:200*(1-i/o),100*o]},toBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2];n/=100,i/=100;var o=i*(1-n/2);return[a,o===0||o===1?0:(i-o)/Math.min(o,1-o)*100,o*100]},formats:{color:{id:"--hsv",coords:[" | "," | "," | "]}}}),ww=new Y({id:"hwb",name:"HWB",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},w:{range:[0,100],name:"Whiteness"},b:{range:[0,100],name:"Blackness"}},base:ed,fromBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2];return[a,i*(100-n)/100,100-i]},toBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2];n/=100,i/=100;var o=n+i;if(o>=1){var u=n/o;return[a,0,u*100]}var s=1-i,c=s===0?0:1-n/s;return[a,c*100,s*100]},formats:{hwb:{coords:[" | "," | "," | "]}}}),Dw=[[.5766690429101305,.1855582379065463,.1882286462349947],[.29734497525053605,.6273635662554661,.07529145849399788],[.02703136138641234,.07068885253582723,.9913375368376388]],_w=[[2.0415879038107465,-.5650069742788596,-.34473135077832956],[-.9692436362808795,1.8759675015077202,.04155505740717557],[.013444280632031142,-.11836239223101838,1.0151749943912054]],td=new it({id:"a98rgb-linear",cssId:"--a98-rgb-linear",name:"Linear Adobe® 98 RGB compatible",white:"D65",toXYZ_M:Dw,fromXYZ_M:_w}),xw=new it({id:"a98rgb",cssId:"a98-rgb",name:"Adobe® 98 RGB compatible",base:td,toBase:function(t){return t.map(function(r){return Math.pow(Math.abs(r),563/256)*Math.sign(r)})},fromBase:function(t){return t.map(function(r){return Math.pow(Math.abs(r),256/563)*Math.sign(r)})}}),Ew=[[.7977666449006423,.13518129740053308,.0313477341283922],[.2880748288194013,.711835234241873,8993693872564e-17],[0,0,.8251046025104602]],Cw=[[1.3457868816471583,-.25557208737979464,-.05110186497554526],[-.5446307051249019,1.5082477428451468,.02052744743642139],[0,0,1.2119675456389452]],rd=new it({id:"prophoto-linear",cssId:"--prophoto-rgb-linear",name:"Linear ProPhoto",white:"D50",base:Ro,toXYZ_M:Ew,fromXYZ_M:Cw}),Aw=1/512,Fw=16/512,Tw=new it({id:"prophoto",cssId:"prophoto-rgb",name:"ProPhoto",base:rd,toBase:function(t){return t.map(function(r){return r=Aw?Math.pow(r,1/1.8):16*r})}}),Rw=new Y({id:"oklch",name:"Oklch",coords:{l:{refRange:[0,1],name:"Lightness"},c:{refRange:[0,.4],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},white:"D65",base:$r,fromBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2],o,u=2e-4;return Math.abs(n) | "," | [0,1]"," | "]}}}),ad=nt.D65,kw=216/24389,nd=24389/27,Sw=Bn({space:Xe,coords:ad}),id=P(Sw,2),od=id[0],ud=id[1],sd=new Y({id:"luv",name:"Luv",coords:{l:{refRange:[0,100],name:"Lightness"},u:{refRange:[-215,215]},v:{refRange:[-215,215]}},white:ad,base:Xe,fromBase:function(t){var r=[Le(t[0]),Le(t[1]),Le(t[2])],a=r[1],n=Bn({space:Xe,coords:r}),i=P(n,2),o=i[0],u=i[1];if(!Number.isFinite(o)||!Number.isFinite(u))return[0,0,0];var s=a<=kw?nd*a:116*Math.cbrt(a)-16;return[s,13*s*(o-od),13*s*(u-ud)]},toBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2];if(a===0||er(a))return[0,0,0];n=Le(n),i=Le(i);var o=n/(13*a)+od,u=i/(13*a)+ud,s=a<=8?a/nd:Math.pow((a+16)/116,3);return[s*(9*o/(4*u)),s,s*((12-3*o-20*u)/(4*u))]},formats:{color:{id:"--luv",coords:[" | "," | [-1,1]"," | [-1,1]"]}}}),Go=new Y({id:"lchuv",name:"LChuv",coords:{l:{refRange:[0,100],name:"Lightness"},c:{refRange:[0,220],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:sd,fromBase:function(t){var r=P(t,3),a=r[0],n=r[1],i=r[2],o,u=.02;return Math.abs(n) | "," | "," | "]}}}),Ow=216/24389,Mw=24389/27,ld=Ve[0][0],cd=Ve[0][1],Wo=Ve[0][2],dd=Ve[1][0],fd=Ve[1][1],Yo=Ve[1][2],pd=Ve[2][0],md=Ve[2][1],Ko=Ve[2][2];function Kr(e,t,r){var a=t/(Math.sin(r)-e*Math.cos(r));return a<0?1/0:a}function qn(e){var t=Math.pow(e+16,3)/1560896,r=t>Ow?t:e/Mw,a=r*(284517*ld-94839*Wo),n=r*(838422*Wo+769860*cd+731718*ld),i=r*(632260*Wo-126452*cd),o=r*(284517*dd-94839*Yo),u=r*(838422*Yo+769860*fd+731718*dd),s=r*(632260*Yo-126452*fd),c=r*(284517*pd-94839*Ko),l=r*(838422*Ko+769860*md+731718*pd),d=r*(632260*Ko-126452*md);return{r0s:a/i,r0i:n*e/i,r1s:a/(i+126452),r1i:(n-769860)*e/(i+126452),g0s:o/s,g0i:u*e/s,g1s:o/(s+126452),g1i:(u-769860)*e/(s+126452),b0s:c/d,b0i:l*e/d,b1s:c/(d+126452),b1i:(l-769860)*e/(d+126452)}}function hd(e,t){var r=t/360*Math.PI*2,a=Kr(e.r0s,e.r0i,r),n=Kr(e.r1s,e.r1i,r),i=Kr(e.g0s,e.g0i,r),o=Kr(e.g1s,e.g1i,r),u=Kr(e.b0s,e.b0i,r),s=Kr(e.b1s,e.b1i,r);return Math.min(a,n,i,o,u,s)}var Nw=new Y({id:"hsluv",name:"HSLuv",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:Go,gamutSpace:Wr,fromBase:function(t){var r=[Le(t[0]),Le(t[1]),Le(t[2])],a=r[0],n=r[1],i=r[2],o;if(a>99.9999999)o=0,a=100;else if(a<1e-8)o=0,a=0;else{var u=qn(a),s=hd(u,i);o=n/s*100}return[i,o,a]},toBase:function(t){var r=[Le(t[0]),Le(t[1]),Le(t[2])],a=r[0],n=r[1],i=r[2],o;if(i>99.9999999)i=100,o=0;else if(i<1e-8)i=0,o=0;else{var u=qn(i),s=hd(u,a);o=s/100*n}return[i,o,a]},formats:{color:{id:"--hsluv",coords:[" | "," | "," | "]}}});Ve[0][0],Ve[0][1],Ve[0][2],Ve[1][0],Ve[1][1],Ve[1][2],Ve[2][0],Ve[2][1],Ve[2][2];function Xr(e,t){return Math.abs(t)/Math.sqrt(Math.pow(e,2)+1)}function vd(e){var t=Xr(e.r0s,e.r0i),r=Xr(e.r1s,e.r1i),a=Xr(e.g0s,e.g0i),n=Xr(e.g1s,e.g1i),i=Xr(e.b0s,e.b0i),o=Xr(e.b1s,e.b1i);return Math.min(t,r,a,n,i,o)}var Iw=new Y({id:"hpluv",name:"HPLuv",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:Go,gamutSpace:"self",fromBase:function(t){var r=[Le(t[0]),Le(t[1]),Le(t[2])],a=r[0],n=r[1],i=r[2],o;if(a>99.9999999)o=0,a=100;else if(a<1e-8)o=0,a=0;else{var u=qn(a),s=vd(u);o=n/s*100}return[i,o,a]},toBase:function(t){var r=[Le(t[0]),Le(t[1]),Le(t[2])],a=r[0],n=r[1],i=r[2],o;if(i>99.9999999)i=100,o=0;else if(i<1e-8)i=0,o=0;else{var u=qn(i),s=vd(u);o=s/100*n}return[i,o,a]},formats:{color:{id:"--hpluv",coords:[" | "," | "," | "]}}}),gd=203,bd=2610/Math.pow(2,14),Pw=Math.pow(2,14)/2610,Lw=2523/Math.pow(2,5),yd=Math.pow(2,5)/2523,wd=3424/Math.pow(2,12),Dd=2413/Math.pow(2,7),_d=2392/Math.pow(2,7),Bw=new it({id:"rec2100pq",cssId:"rec2100-pq",name:"REC.2100-PQ",base:Nn,toBase:function(t){return t.map(function(r){var a=Math.pow(Math.max(Math.pow(r,yd)-wd,0)/(Dd-_d*Math.pow(r,yd)),Pw);return a*1e4/gd})},fromBase:function(t){return t.map(function(r){var a=Math.max(r*gd/1e4,0),n=wd+Dd*Math.pow(a,bd),i=1+_d*Math.pow(a,bd);return Math.pow(n/i,Lw)})}}),xd=.17883277,Ed=.28466892,Cd=.55991073,Xo=3.7743,qw=new it({id:"rec2100hlg",cssId:"rec2100-hlg",name:"REC.2100-HLG",referred:"scene",base:Nn,toBase:function(t){return t.map(function(r){return r<=.5?Math.pow(r,2)/3*Xo:(Math.exp((r-Cd)/xd)+Ed)/12*Xo})},fromBase:function(t){return t.map(function(r){return r/=Xo,r<=1/12?Math.sqrt(3*r):xd*Math.log(12*r-Ed)+Cd})}}),Ad={};tr.add("chromatic-adaptation-start",function(e){e.options.method&&(e.M=Fd(e.W1,e.W2,e.options.method))}),tr.add("chromatic-adaptation-end",function(e){e.M||(e.M=Fd(e.W1,e.W2,e.options.method))});function jn(e){var t=e.id;e.toCone_M,e.fromCone_M,Ad[t]=arguments[0]}function Fd(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"Bradford",a=Ad[r],n=Ee(a.toCone_M,e),i=P(n,3),o=i[0],u=i[1],s=i[2],c=Ee(a.toCone_M,t),l=P(c,3),d=l[0],f=l[1],p=l[2],m=[[d/o,0,0],[0,f/u,0],[0,0,p/s]],h=Ee(m,a.toCone_M),v=Ee(a.fromCone_M,h);return v}jn({id:"von Kries",toCone_M:[[.40024,.7076,-.08081],[-.2263,1.16532,.0457],[0,0,.91822]],fromCone_M:[[1.8599363874558397,-1.1293816185800916,.21989740959619328],[.3611914362417676,.6388124632850422,-6370596838649899e-21],[0,0,1.0890636230968613]]}),jn({id:"Bradford",toCone_M:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],fromCone_M:[[.9869929054667121,-.14705425642099013,.15996265166373122],[.4323052697233945,.5183602715367774,.049291228212855594],[-.00852866457517732,.04004282165408486,.96848669578755]]}),jn({id:"CAT02",toCone_M:[[.7328,.4296,-.1624],[-.7036,1.6975,.0061],[.003,.0136,.9834]],fromCone_M:[[1.0961238208355142,-.27886900021828726,.18274517938277307],[.4543690419753592,.4735331543074117,.07209780371722911],[-.009627608738429355,-.00569803121611342,1.0153256399545427]]}),jn({id:"CAT16",toCone_M:[[.401288,.650173,-.051461],[-.250268,1.204414,.045854],[-.002079,.048952,.953127]],fromCone_M:[[1.862067855087233,-1.0112546305316845,.14918677544445172],[.3875265432361372,.6214474419314753,-.008973985167612521],[-.01584149884933386,-.03412293802851557,1.0499644368778496]]}),Object.assign(nt,{A:[1.0985,1,.35585],C:[.98074,1,1.18232],D55:[.95682,1,.92149],D75:[.94972,1,1.22638],E:[1,1,1],F2:[.99186,1,.67393],F7:[.95041,1,1.08747],F11:[1.00962,1,.6435]}),nt.ACES=[.32168/.33767,1,(1-.32168-.33767)/.33767];var jw=[[.6624541811085053,.13400420645643313,.1561876870049078],[.27222871678091454,.6740817658111484,.05368951740793705],[-.005574649490394108,.004060733528982826,1.0103391003129971]],zw=[[1.6410233796943257,-.32480329418479,-.23642469523761225],[-.6636628587229829,1.6153315916573379,.016756347685530137],[.011721894328375376,-.008284441996237409,.9883948585390215]],Td=new it({id:"acescg",cssId:"--acescg",name:"ACEScg",coords:{r:{range:[0,65504],name:"Red"},g:{range:[0,65504],name:"Green"},b:{range:[0,65504],name:"Blue"}},referred:"scene",white:nt.ACES,toXYZ_M:jw,fromXYZ_M:zw}),zn=Math.pow(2,-16),Zo=-.35828683,Vn=(Math.log2(65504)+9.72)/17.52,Vw=new it({id:"acescc",cssId:"--acescc",name:"ACEScc",coords:{r:{range:[Zo,Vn],name:"Red"},g:{range:[Zo,Vn],name:"Green"},b:{range:[Zo,Vn],name:"Blue"}},referred:"scene",base:Td,toBase:function(t){var r=-.3013698630136986;return t.map(function(a){return a<=r?(Math.pow(2,a*17.52-9.72)-zn)*2:a1||s===void 0?1:s<0?0:s;for(var c=0;c1?a-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:a,i=n.instance,o=i===void 0?!0:i,u=n.returns,s=function(){var l=a.apply(void 0,arguments);if(u==="color")l=e.get(l);else if(u==="function"){var d=l;l=function(){var p=d.apply(void 0,arguments);return e.get(p)},Object.assign(l,d)}else u==="array"&&(l=l.map(function(f){return e.get(f)}));return l};r in e||(e[r]=s),o&&(e.prototype[r]=function(){for(var c=arguments.length,l=new Array(c),d=0;d"u"?i:new Proxy(i,{has:function(u,s){try{return Y.resolveCoord([t,s]),!0}catch{}return Reflect.has(u,s)},get:function(u,s,c){if(s&&O(s)!=="symbol"&&!(s in u)){var l=Y.resolveCoord([t,s]),d=l.index;if(d>=0)return u[d]}return Reflect.get(u,s,c)},set:function(u,s,c,l){if(s&&O(s)!=="symbol"&&!(s in u)||s>=0){var d=Y.resolveCoord([t,s]),f=d.index;if(f>=0)return u[f]=c,n.setAll(e,u),!0}return Reflect.set(u,s,c,l)}})},set:function(n){this.setAll(e,n)},configurable:!0,enumerable:!0})}ot.extend(Gr),ot.extend({deltaE:Sa}),Object.assign(ot,{deltaEMethods:Gr}),ot.extend(gw),ot.extend({contrast:fw}),ot.extend(mw),ot.extend(Y2),ot.extend(yw),ot.extend(Ln),Gc.default.templateSettings.strip=!1;var $w=/^#[0-9a-f]{3,8}$/i,Od=(T=new WeakMap,I=new WeakMap,Z=new WeakMap,me=new WeakMap,De=new WeakMap,Ze=new WeakMap,At=new WeakSet,function(){function e(t,r,a){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;if(Et(this,e),cm(this,At),Fr(this,T,{writable:!0,value:void 0}),Fr(this,I,{writable:!0,value:void 0}),Fr(this,Z,{writable:!0,value:void 0}),Fr(this,me,{writable:!0,value:void 0}),Fr(this,De,{writable:!0,value:void 0}),Fr(this,Ze,{writable:!0,value:void 0}),t instanceof e){var i=t.r,o=t.g,u=t.b;this.r=i,this.g=o,this.b=u,this.alpha=t.alpha;return}this.red=t,this.green=r,this.blue=a,this.alpha=n}return Ct(e,[{key:"r",get:function(){return Tr(this,T)},set:function(r){gt(this,T,r),gt(this,me,Math.round(Zr(r,0,1)*255))}},{key:"g",get:function(){return Tr(this,I)},set:function(r){gt(this,I,r),gt(this,De,Math.round(Zr(r,0,1)*255))}},{key:"b",get:function(){return Tr(this,Z)},set:function(r){gt(this,Z,r),gt(this,Ze,Math.round(Zr(r,0,1)*255))}},{key:"red",get:function(){return Tr(this,me)},set:function(r){gt(this,T,r/255),gt(this,me,Zr(r,0,255))}},{key:"green",get:function(){return Tr(this,De)},set:function(r){gt(this,I,r/255),gt(this,De,Zr(r,0,255))}},{key:"blue",get:function(){return Tr(this,Ze)},set:function(r){gt(this,Z,r/255),gt(this,Ze,Zr(r,0,255))}},{key:"toHexString",value:function(){var r=Math.round(this.red).toString(16),a=Math.round(this.green).toString(16),n=Math.round(this.blue).toString(16);return"#"+(this.red>15.5?r:"0"+r)+(this.green>15.5?a:"0"+a)+(this.blue>15.5?n:"0"+n)}},{key:"toJSON",value:function(){var r=this.red,a=this.green,n=this.blue,i=this.alpha;return{red:r,green:a,blue:n,alpha:i}}},{key:"parseString",value:function(r){try{var a=new ot(r).to("srgb");this.r=a.r,this.g=a.g,this.b=a.b,this.alpha=+a.alpha}catch{throw new Error('Unable to parse color "'.concat(r,'"'))}return this}},{key:"parseRgbString",value:function(r){this.parseString(r)}},{key:"parseHexString",value:function(r){!r.match($w)||[6,8].includes(r.length)||this.parseString(r)}},{key:"parseColorFnString",value:function(r){this.parseString(r)}},{key:"getRelativeLuminance",value:function(){var r=this.r,a=this.g,n=this.b,i=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4),o=a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4),u=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4);return .2126*i+.7152*o+.0722*u}},{key:"getLuminosity",value:function(){return .3*this.r+.59*this.g+.11*this.b}},{key:"setLuminosity",value:function(r){var a=r-this.getLuminosity();return dm(this,At,Uw).call(this,a).clip()}},{key:"getSaturation",value:function(){return Math.max(this.r,this.g,this.b)-Math.min(this.r,this.g,this.b)}},{key:"setSaturation",value:function(r){var a=new e(this),n=[{name:"r",value:a.r},{name:"g",value:a.g},{name:"b",value:a.b}],i=n.sort(function(l,d){return l.value-d.value}),o=P(i,3),u=o[0],s=o[1],c=o[2];return c.value>u.value?(s.value=(s.value-u.value)*r/(c.value-u.value),c.value=r):s.value=c.value=0,u.value=0,a[c.name]=c.value,a[u.name]=u.value,a[s.name]=s.value,a}},{key:"clip",value:function(){var r=new e(this),a=r.getLuminosity(),n=Math.min(r.r,r.g,r.b),i=Math.max(r.r,r.g,r.b);return n<0&&(r.r=a+(r.r-a)*a/(a-n),r.g=a+(r.g-a)*a/(a-n),r.b=a+(r.b-a)*a/(a-n)),i>1&&(r.r=a+(r.r-a)*(1-a)/(i-a),r.g=a+(r.g-a)*(1-a)/(i-a),r.b=a+(r.b-a)*(1-a)/(i-a)),r}}]),e}());function Uw(e){var t=new Od(this);return t.r+=e,t.g+=e,t.b+=e,t}var Re=Od;function Zr(e,t,r){return Math.min(Math.max(t,e),r)}function Gw(e){var t=new Re;if(t.parseString(e.getPropertyValue("background-color")),t.alpha!==0){var r=e.getPropertyValue("opacity");t.alpha=t.alpha*r}return t}var Er=Gw;function Ww(e){var t=D.getComputedStyle(e);return Cn(e,t)||Er(t).alpha===1}var Yw=Ww;function eu(e){if(!e.href)return!1;var t=oe.get("firstPageLink",Kw);return t?e.compareDocumentPosition(t.actualNode)===e.DOCUMENT_POSITION_FOLLOWING:!0}function Kw(){var e;return D.location.origin?e=vt(w._tree,'a[href]:not([href^="javascript:"])').find(function(t){return!eo(t.actualNode)}):e=vt(w._tree,'a:not([href^="#"]):not([href^="/#"]):not([href^="javascript:"])')[0],e||null}var Xw=/rect\s*\(([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px,?\s*([0-9]+)px\s*\)/,Zw=/(\w+)\((\d+)/;function Jw(e){var t=e.getPropertyValue("clip").match(Xw),r=e.getPropertyValue("clip-path").match(Zw);if(t&&t.length===5){var a=e.getPropertyValue("position");if(["fixed","absolute"].includes(a))return t[3]-t[1]<=0&&t[2]-t[4]<=0}if(r){var n=r[1],i=parseInt(r[2],10);switch(n){case"inset":return i>=50;case"circle":return i===0}}return!1}function Qw(e,t,r){var a=Br(e,"map");if(!a)return!1;var n=a.getAttribute("name");if(!n)return!1;var i=Je(e);if(!i||i.nodeType!==9)return!1;var o=vt(w._tree,'img[usemap="#'.concat(Me(n),'"]'));return!o||!o.length?!1:o.some(function(u){var s=u.actualNode;return Hn(s,t,r)})}function Hn(e,t,r){var a;if(!e)throw new TypeError("Cannot determine if element is visible for non-DOM nodes");var n=e instanceof Ge?e:se(e);e=n?n.actualNode:e;var i="_isVisible"+(t?"ScreenReader":""),o=(a=D.Node)!==null&&a!==void 0?a:{},u=o.DOCUMENT_NODE,s=o.DOCUMENT_FRAGMENT_NODE,c=n?n.props.nodeType:e.nodeType,l=n?n.props.nodeName:e.nodeName.toLowerCase();if(n&&typeof n[i]<"u")return n[i];if(c===u)return!0;if(["style","script","noscript","template"].includes(l))return!1;if(e&&c===s&&(e=e.host),t){var d=n?n.attr("aria-hidden"):e.getAttribute("aria-hidden");if(d==="true")return!1}if(!e){var f=n.parent,p=!0;return f&&(p=Hn(f,t,!0)),n&&(n[i]=p),p}var m=D.getComputedStyle(e,null);if(m===null)return!1;if(l==="area")return Qw(e,t,r);if(m.getPropertyValue("display")==="none")return!1;var h=parseInt(m.getPropertyValue("height")),v=parseInt(m.getPropertyValue("width")),g=$t(e),b=g&&h===0,y=g&&v===0,_=m.getPropertyValue("position")==="absolute"&&(h<2||v<2)&&m.getPropertyValue("overflow")==="hidden";if(!t&&(Jw(m)||m.getPropertyValue("opacity")==="0"||b||y||_)||!r&&(m.getPropertyValue("visibility")==="hidden"||!t&&dn(e)))return!1;var A=e.assignedSlot?e.assignedSlot:e.parentNode,R=!1;return A&&(R=Hn(A,t,!0)),n&&(n[i]=R),R}var eD=Hn;function tD(e,t){for(var r=["fixed","sticky"],a=[],n=!1,i=0;iMath.ceil(o.left+o.width)||Math.floor(u.top+u.height)>Math.ceil(o.top+o.height))})}function Pd(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:L,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(a>999)throw new Error("Infinite loop detected");return Array.from(r.elementsFromPoint(e,t)||[]).filter(function(n){return Je(n)===r}).reduce(function(n,i){if(ln(i)){var o=Pd(e,t,i.shadowRoot,a+1);n=n.concat(o),n.length&&Nd(n[0],i)&&n.push(i)}else n.push(i);return n},[])}var aD=Pd;function nD(e,t){if(e.hasAttribute(t)){var r=e.nodeName.toUpperCase(),a=e;(!["A","AREA"].includes(r)||e.ownerSVGElement)&&(a=L.createElement("a"),a.href=e.getAttribute(t));var n=["https:","ftps:"].includes(a.protocol)?a.protocol.replace(/s:$/,":"):a.protocol,i=/^\//.test(a.pathname)?a.pathname:"/".concat(a.pathname),o=oD(i),u=o.pathname,s=o.filename;return{protocol:n,hostname:a.hostname,port:iD(a.port),pathname:/\/$/.test(u)?u:"".concat(u,"/"),search:uD(a.search),hash:sD(a.hash),filename:s}}}function iD(e){var t=["443","80"];return t.includes(e)?"":e}function oD(e){var t=e.split("/").pop();return!t||t.indexOf(".")===-1?{pathname:e,filename:""}:{pathname:e.replace(t,""),filename:/index./.test(t)?"":t}}function uD(e){var t={};if(!e||!e.length)return t;var r=e.substring(1).split("&");if(!r||!r.length)return t;for(var a=0;ai.right&&e.left>r.right||e.top>i.bottom&&e.top>r.bottom||e.rightr.right||e.top>r.bottom?o.overflow==="scroll"||o.overflow==="auto"||t instanceof D.HTMLBodyElement||t instanceof D.HTMLHtmlElement:!0}var tu=cD,Ld=0,dD=function(e){di(t,e);function t(r,a,n){var i;if(Et(this,t),i=li(this,t),i.shadowId=n,i.children=[],i.actualNode=r,i.parent=a,a||(Ld=0),i.nodeIndex=Ld++,i._isHidden=null,i._cache={},i._isXHTML=Ja(r.ownerDocument),r.nodeName.toLowerCase()==="input"){var o=r.getAttribute("type");o=i._isXHTML?o:(o||"").toLowerCase(),Kn().includes(o)||(o="text"),i._type=o}return oe.get("nodeMap")&&oe.get("nodeMap").set(r,Wu(i)),i}return Ct(t,[{key:"props",get:function(){if(!this._cache.hasOwnProperty("props")){var a=this.actualNode,n=a.nodeType,i=a.nodeName,o=a.id,u=a.nodeValue;this._cache.props={nodeType:n,nodeName:this._isXHTML?i:i.toLowerCase(),id:o,type:this._type,nodeValue:u},n===1&&(this._cache.props.multiple=this.actualNode.multiple,this._cache.props.value=this.actualNode.value,this._cache.props.selected=this.actualNode.selected,this._cache.props.checked=this.actualNode.checked,this._cache.props.indeterminate=this.actualNode.indeterminate)}return this._cache.props}},{key:"attr",value:function(a){return typeof this.actualNode.getAttribute!="function"?null:this.actualNode.getAttribute(a)}},{key:"hasAttr",value:function(a){return typeof this.actualNode.hasAttribute!="function"?!1:this.actualNode.hasAttribute(a)}},{key:"attrNames",get:function(){if(!this._cache.hasOwnProperty("attrNames")){var a;this.actualNode.attributes instanceof D.NamedNodeMap?a=this.actualNode.attributes:a=this.actualNode.cloneNode(!1).attributes,this._cache.attrNames=Array.from(a).map(function(n){return n.name})}return this._cache.attrNames}},{key:"getComputedStylePropertyValue",value:function(a){var n="computedStyle_"+a;return this._cache.hasOwnProperty(n)||(this._cache.hasOwnProperty("computedStyle")||(this._cache.computedStyle=D.getComputedStyle(this.actualNode)),this._cache[n]=this._cache.computedStyle.getPropertyValue(a)),this._cache[n]}},{key:"isFocusable",get:function(){return this._cache.hasOwnProperty("isFocusable")||(this._cache.isFocusable=Ne(this.actualNode)),this._cache.isFocusable}},{key:"tabbableElements",get:function(){return this._cache.hasOwnProperty("tabbableElements")||(this._cache.tabbableElements=Wl(this)),this._cache.tabbableElements}},{key:"clientRects",get:function(){return this._cache.hasOwnProperty("clientRects")||(this._cache.clientRects=Array.from(this.actualNode.getClientRects()).filter(function(a){return a.width>0})),this._cache.clientRects}},{key:"boundingClientRect",get:function(){return this._cache.hasOwnProperty("boundingClientRect")||(this._cache.boundingClientRect=this.actualNode.getBoundingClientRect()),this._cache.boundingClientRect}}]),t}(Ge),ru=dD;function fD(e){return(e||"").trim().replace(/\s{2,}/g," ").split(" ")}var Qe=fD,Cr=" [idsMap]";function Bd(e,t,r){var a=e[0]._selectorMap;if(a){for(var n=e[0].shadowId,i=0;i1&&t[i].some(function(s){return qd(s)}))return;var o=new Set;t.forEach(function(s){var c,l=pD(s,a,n);l==null||(c=l.nodes)===null||c===void 0||c.forEach(function(d){l.isComplexSelector&&!Mr(d,s)||o.add(d)})});var u=[];return o.forEach(function(s){return u.push(s)}),r&&(u=u.filter(r)),u.sort(function(s,c){return s.nodeIndex-c.nodeIndex})}}function pD(e,t,r){var a=e[e.length-1],n=null,i=e.length>1||!!a.pseudos||!!a.classes;if(qd(a))n=t["*"];else{if(a.id){var o;if(!t[Cr]||!Object.hasOwn(t[Cr],a.id)||!((o=t[Cr][a.id])!==null&&o!==void 0&&o.length))return;n=t[Cr][a.id].filter(function(h){return h.shadowId===r})}if(a.tag&&a.tag!=="*"){var u;if(!((u=t[a.tag])!==null&&u!==void 0&&u.length))return;var s=t[a.tag];n=n?au(s,n):s}if(a.classes){var c;if(!((c=t["[class]"])!==null&&c!==void 0&&c.length))return;var l=t["[class]"];n=n?au(l,n):l}if(a.attributes)for(var d=0;d0&&arguments[0]!==void 0?arguments[0]:L.documentElement,t=arguments.length>1?arguments[1]:void 0;nu=!1;var r={};oe.set("nodeMap",new WeakMap),oe.set("selectorMap",r);var a=zd(e,t,null);return a[0]._selectorMap=r,a[0]._hasShadowRoot=nu,a}function mD(e){var t=[];for(e=e.firstChild;e;)t.push(e),e=e.nextSibling;return t}function ou(e,t,r){var a=new ru(e,t,r);return jd(a,oe.get("selectorMap")),a}function zd(e,t,r){var a,n,i;function o(u,s,c){var l=zd(s,t,c);return l&&(u=u.concat(l)),u}return e.documentElement&&(e=e.documentElement),i=e.nodeName.toLowerCase(),ln(e)?(nu=!0,a=ou(e,r,t),t="a"+Math.random().toString().substring(2),n=Array.from(e.shadowRoot.childNodes),a.children=n.reduce(function(u,s){return o(u,s,a)},[]),[a]):i==="content"&&typeof e.getDistributedNodes=="function"?(n=Array.from(e.getDistributedNodes()),n.reduce(function(u,s){return o(u,s,r)},[])):i==="slot"&&typeof e.assignedNodes=="function"?(n=Array.from(e.assignedNodes()),n.length||(n=mD(e)),D.getComputedStyle(e),n.reduce(function(u,s){return o(u,s,r)},[])):e.nodeType===1?(a=ou(e,r,t),n=Array.from(e.childNodes),a.children=n.reduce(function(u,s){return o(u,s,a)},[]),[a]):e.nodeType===3?[ou(e,r)]:void 0}function hD(e){return e?e.trim().split("-")[0].toLowerCase():""}var Ar=hD;function vD(e){var t={};return t.none=e.none.concat(e.all),t.any=e.any,Object.keys(t).map(function(r){if(t[r].length){var a=w._audit.data.failureSummaries[r];if(a&&typeof a.failureMessage=="function")return a.failureMessage(t[r].map(function(n){return n.message||""}))}}).filter(function(r){return r!==void 0}).join(` + +`)}var uu=vD;function su(){var e=w._audit.data.incompleteFallbackMessage;return typeof e=="function"&&(e=e()),typeof e!="string"?"":e}var Vd=ce.resultGroups;function Ma(e,t){var r=w.utils.aggregateResult(e);return Vd.forEach(function(a){t.resultTypes&&!t.resultTypes.includes(a)&&(r[a]||[]).forEach(function(n){Array.isArray(n.nodes)&&n.nodes.length>0&&(n.nodes=[n.nodes[0]])}),r[a]=(r[a]||[]).map(function(n){return n=Object.assign({},n),Array.isArray(n.nodes)&&n.nodes.length>0&&(n.nodes=n.nodes.map(function(i){if(O(i.node)==="object"){var o=Hd(i.node,t);Object.assign(i,o)}return delete i.result,delete i.node,gD(i,t),i})),Vd.forEach(function(i){return delete n[i]}),delete n.pageLevel,delete n.result,n})}),r}function gD(e,t){["any","all","none"].forEach(function(r){Array.isArray(e[r])&&e[r].filter(function(a){return Array.isArray(a.relatedNodes)}).forEach(function(a){a.relatedNodes=a.relatedNodes.map(function(n){return Hd(n,t)})})})}function Hd(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;e=bt.dqElmToSpec(e,t);var r={};if(w._audit.noHtml)r.html=null;else{var a;r.html=(a=e.source)!==null&&a!==void 0?a:"Undefined"}if(t.elementRef&&!e.fromFrame){var n;r.element=(n=e.element)!==null&&n!==void 0?n:null}if(t.selectors!==!1||e.fromFrame){var i;r.target=(i=e.selector)!==null&&i!==void 0?i:[":root"]}if(t.ancestry){var o;r.ancestry=(o=e.ancestry)!==null&&o!==void 0?o:[":root"]}if(t.xpath){var u;r.xpath=(u=e.xpath)!==null&&u!==void 0?u:["/"]}return r}var bD=/\$\{\s?data\s?\}/g;function Un(e,t){if(typeof t=="string")return e.replace(bD,t);for(var r in t)if(t.hasOwnProperty(r)){var a=new RegExp("\\${\\s?data\\."+r+"\\s?}","g"),n=typeof t[r]>"u"?"":String(t[r]);e=e.replace(a,n)}return e}function $d(e,t){if(e){if(Array.isArray(t)){if(t.values=t.join(", "),typeof e.singular=="string"&&typeof e.plural=="string"){var r=t.length===1?e.singular:e.plural;return Un(r,t)}return Un(e,t)}if(typeof e=="string")return Un(e,t);if(typeof t=="string"){var a=e[t];return Un(a,t)}var n=e.default||su();return t&&t.messageKey&&e[t.messageKey]&&(n=e[t.messageKey]),$d(n,t)}}var lu=$d;function yD(e,t,r){var a=w._audit.data.checks[e];if(!a)throw new Error("Cannot get message for unknown check: ".concat(e,"."));if(!a.messages[t])throw new Error('Check "'.concat(e,'"" does not have a "').concat(t,'" message.'));return lu(a.messages[t],r)}var wD=yD;function DD(e,t,r){var a=((r.rules&&r.rules[t]||{}).checks||{})[e.id],n=(r.checks||{})[e.id],i=e.enabled,o=e.options;return n&&(n.hasOwnProperty("enabled")&&(i=n.enabled),n.hasOwnProperty("options")&&(o=n.options)),a&&(a.hasOwnProperty("enabled")&&(i=a.enabled),a.hasOwnProperty("options")&&(o=a.options)),{enabled:i,options:o,absolutePaths:r.absolutePaths}}var Gn=DD;function nr(){var e,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:D;return t&&O(t)==="object"?t:O(r)!=="object"?{}:{testEngine:{name:"axe-core",version:w.version},testRunner:{name:w._audit.brand},testEnvironment:_D(r),timestamp:new Date().toISOString(),url:(e=r.location)===null||e===void 0?void 0:e.href}}function _D(e){if(!e.navigator||O(e.navigator)!=="object")return{};var t=e.navigator,r=e.innerHeight,a=e.innerWidth,n=xD(e)||{},i=n.angle,o=n.type;return{userAgent:t.userAgent,windowWidth:a,windowHeight:r,orientationAngle:i,orientationType:o}}function xD(e){var t=e.screen;return t.orientation||t.msOrientation||t.mozOrientation}function Ud(e,t){var r=t.focusable,a=t.page;return{node:e,include:[],exclude:[],initiator:!1,focusable:r&&ED(e),size:CD(e),page:a}}function ED(e){var t=e.getAttribute("tabindex");if(!t)return!0;var r=parseInt(t,10);return isNaN(r)||r>=0}function CD(e){var t=parseInt(e.getAttribute("width"),10),r=parseInt(e.getAttribute("height"),10);if(isNaN(t)||isNaN(r)){var a=e.getBoundingClientRect();t=isNaN(t)?a.width:t,r=isNaN(r)?a.height:r}return{width:t,height:r}}function AD(e){if(Wd(e)){var t=" must be used inside include or exclude. It should not be on the same object.";ir(!Ht(e,"fromFrames"),"fromFrames"+t),ir(!Ht(e,"fromShadowDom"),"fromShadowDom"+t)}else if(cu(e))e={include:e,exclude:[]};else return{include:[L],exclude:[]};var r=Gd(e.include);r.length===0&&r.push(L);var a=Gd(e.exclude);return{include:r,exclude:a}}function FD(e){return Wd(e)||cu(e)}function Gd(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=[];Kd(e)||(e=[e]);for(var r=0;r1)MD(e,t,i);else{var o=yu(i[0]);r.push.apply(r,ae(o.map(function(u){return se(u)})))}}return r.filter(function(u){return u})}function MD(e,t,r){e.frames=e.frames||[];var a=r.shift(),n=yu(a);n.forEach(function(i){var o=e.frames.find(function(u){return u.node===i});o||(o=Ud(i,e),e.frames.push(o)),o[t].push(r)})}function Wn(e,t){var r,a,n,i,o=this;e=qt(e),this.frames=[],this.page=typeof((r=e)===null||r===void 0?void 0:r.page)=="boolean"?e.page:void 0,this.initiator=typeof((a=e)===null||a===void 0?void 0:a.initiator)=="boolean"?e.initiator:!0,this.focusable=typeof((n=e)===null||n===void 0?void 0:n.focusable)=="boolean"?e.focusable:!0,this.size=O((i=e)===null||i===void 0?void 0:i.size)==="object"?e.size:{},e=AD(e),this.flatTree=t??iu(LD(e)),this.exclude=e.exclude,this.include=e.include,this.include=Xd(this,"include"),this.exclude=Xd(this,"exclude"),bu("frame, iframe",this).forEach(function(u){pu(u,o)&&ND(o,u.actualNode)}),typeof this.page>"u"&&(this.page=ID(this),this.frames.forEach(function(u){u.page=o.page})),PD(this),Array.isArray(this.include)||(this.include=Array.from(this.include)),this.include.sort(hu)}function ND(e,t){!Te(t)||pa(e.frames,"node",t)||e.frames.push(Ud(t,e))}function ID(e){var t=e.include;return t.length===1&&t[0].actualNode===L.documentElement}function PD(e){if(e.include.length===0&&e.frames.length===0){var t=_t.isInFrame()?"frame":"page";throw new Error("No elements found for include in "+t+" Context")}}function LD(e){for(var t=e.include,r=e.exclude,a=Array.from(t).concat(Array.from(r)),n=0;n1&&arguments[1]!==void 0?arguments[1]:{};if(t.iframes===!1)return[];var r=new Wn(e),a=r.frames;return a.map(function(n){var i=n.node,o=je(n,rm);o.initiator=!1;var u=en(i);return{frameSelector:u,frameContext:o}})}function Zd(e){var t=w._audit.rules.find(function(r){var a=r.id;return a===e});if(!t)throw new Error("Cannot find rule by id: ".concat(e));return t}function qD(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=e.scrollWidth>e.clientWidth+t,a=e.scrollHeight>e.clientHeight+t;if(r||a){var n=D.getComputedStyle(e),i=Jd(n,"overflow-x"),o=Jd(n,"overflow-y");if(r&&i||a&&o)return{elm:e,top:e.scrollTop,left:e.scrollLeft}}}function Jd(e,t){var r=e.getPropertyValue(t);return["scroll","auto"].includes(r)}var $t=ze(qD);function Qd(e){return Array.from(e.children||e.childNodes||[]).reduce(function(t,r){var a=$t(r);return a&&t.push(a),t.concat(Qd(r))},[])}function jD(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:D,t=e.document.documentElement,r=[e.pageXOffset!==void 0?{elm:e,top:e.pageYOffset,left:e.pageXOffset}:{elm:t,top:t.scrollTop,left:t.scrollLeft}];return r.concat(Qd(L.body))}var zD=jD;function VD(){return qt(ve)}function HD(e){if(!e)throw new Error("axe.utils.getStyleSheetFactory should be invoked with an argument");return function(t){var r=t.data,a=t.isCrossOrigin,n=a===void 0?!1:a,i=t.shadowId,o=t.root,u=t.priority,s=t.isLink,c=s===void 0?!1:s,l=e.createElement("style");if(c){var d=e.createTextNode('@import "'.concat(r.href,'"'));l.appendChild(d)}else l.appendChild(e.createTextNode(r));return e.head.appendChild(l),{sheet:l.sheet,isCrossOrigin:n,shadowId:i,root:o,priority:u}}}var ef=HD,ht;function $D(e){if(ht&&ht.parentNode)return ht.styleSheet===void 0?ht.appendChild(L.createTextNode(e)):ht.styleSheet.cssText+=e,ht;if(e){var t=L.head||L.getElementsByTagName("head")[0];return ht=L.createElement("style"),ht.type="text/css",ht.styleSheet===void 0?ht.appendChild(L.createTextNode(e)):ht.styleSheet.cssText=e,t.appendChild(ht),ht}}var UD=$D;function tf(e,t){var r=se(e);if(e.nodeType===9)return!1;if(e.nodeType===11&&(e=e.host),r&&r._isHidden!==null)return r._isHidden;var a=D.getComputedStyle(e,null);if(!a||!e.parentNode||a.getPropertyValue("display")==="none"||!t&&a.getPropertyValue("visibility")==="hidden"||e.getAttribute("aria-hidden")==="true")return!0;var n=e.assignedSlot?e.assignedSlot:e.parentNode,i=tf(n,!0);return r&&(r._isHidden=i),i}var GD=tf;function WD(e){var t,r,a=(t=(r=e.props)===null||r===void 0?void 0:r.nodeName)!==null&&t!==void 0?t:e.nodeName.toLowerCase();return e.namespaceURI==="http://www.w3.org/2000/svg"?!1:!!ve.htmlElms[a]}var fu=WD;function pu(e,t){var r=t.include,a=r===void 0?[]:r,n=t.exclude,i=n===void 0?[]:n,o=a.filter(function(l){return hr(l,e)});if(o.length===0)return!1;var u=i.filter(function(l){return hr(l,e)});if(u.length===0)return!0;var s=rf(o),c=rf(u);return hr(c,s)}function rf(e){var t,r=Fe(e),a;try{for(r.s();!(a=r.n()).done;){var n=a.value;(!t||!hr(n,t))&&(t=n)}}catch(i){r.e(i)}finally{r.f()}return t}function mu(e,t){return e.length!==t.length?!1:e.every(function(r,a){var n=t[a];return Array.isArray(r)?r.length!==n.length?!1:r.every(function(i,o){return n[o]===i}):r===n})}function YD(e,t){return e=e.actualNode||e,t=t.actualNode||t,e===t?0:e.compareDocumentPosition(t)&4?-1:1}var hu=YD;function be(e){return e instanceof Ge?{vNode:e,domNode:e.actualNode}:{vNode:se(e),domNode:e}}function KD(e,t,r,a){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i=Array.from(e.cssRules);if(!i)return Promise.resolve();var o=i.filter(function(l){return l.type===3});if(!o.length)return Promise.resolve({isCrossOrigin:n,priority:r,root:t.rootNode,shadowId:t.shadowId,sheet:e});var u=o.filter(function(l){return l.href}).map(function(l){return l.href}).filter(function(l){return!a.includes(l)}),s=u.map(function(l,d){var f=[].concat(ae(r),[d]),p=/^https?:\/\/|^\/\//i.test(l);return gu(l,t,f,a,p)}),c=i.filter(function(l){return l.type!==3});return c.length&&s.push(Promise.resolve(t.convertDataToStylesheet({data:c.map(function(l){return l.cssText}).join(),isCrossOrigin:n,priority:r,root:t.rootNode,shadowId:t.shadowId}))),Promise.all(s)}var af=KD;function XD(e,t,r,a){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i=ZD(e);return i?af(e,t,r,a,n):gu(e.href,t,r,a,!0)}function ZD(e){try{var t=e.cssRules;return!(!t&&e.href)}catch{return!1}}var vu=XD;function JD(e,t,r,a,n){return a.push(e),new Promise(function(i,o){var u=new D.XMLHttpRequest;u.open("GET",e),u.timeout=ce.preload.timeout,u.addEventListener("error",o),u.addEventListener("timeout",o),u.addEventListener("loadend",function(s){if(s.loaded&&u.responseText)return i(u.responseText);o(u.responseText)}),u.send()}).then(function(i){var o=t.convertDataToStylesheet({data:i,isCrossOrigin:n,priority:r,root:t.rootNode,shadowId:t.shadowId});return vu(o.sheet,t,r,a,o.isCrossOrigin)})}var gu=JD,QD=function(){function e(){if(D.performance&&D.performance)return D.performance.now()}var t=null,r=e();return{start:function(){this.mark("mark_axe_start")},end:function(){this.mark("mark_axe_end"),this.measure("axe","mark_axe_start","mark_axe_end"),this.logMeasures("axe")},auditStart:function(){this.mark("mark_audit_start")},auditEnd:function(){this.mark("mark_audit_end"),this.measure("audit_start_to_end","mark_audit_start","mark_audit_end"),this.logMeasures()},mark:function(n){D.performance&&D.performance.mark!==void 0&&D.performance.mark(n)},measure:function(n,i,o){D.performance&&D.performance.measure!==void 0&&D.performance.measure(n,i,o)},logMeasures:function(n){function i(l){fr("Measure "+l.name+" took "+l.duration+"ms")}if(D.performance&&D.performance.getEntriesByType!==void 0)for(var o=D.performance.getEntriesByName("mark_axe_start")[0],u=D.performance.getEntriesByType("measure").filter(function(l){return l.startTime>=o.startTime}),s=0;s"].includes(_[0].combinator)===!1)throw new Error("axe.utils.querySelectorAll does not support the combinator: "+y[1].combinator);_[0].combinator===">"?(d=d||[]).push(_):(f=f||[]).push(_)}(!y[0].id||l.shadowId===o.parentShadowId)&&(b=o.anyLevel)!==null&&b!==void 0&&b.includes(y)&&(f=f||[]).push(y)}for(l.children&&l.children.length&&(n.push(o),o=of(l.children,f,d,l.shadowId,a.pop()));o.vNodesIndex===o.vNodes.length&&n.length;)a.push(o),o=n.pop()}return u}function r_(e,t,r){e=Array.isArray(e)?e:[e];var a=tn(t),n=Bd(e,a,r);return n||t_(e,a,r)}var Nt=r_;function a_(e){var t=e.treeRoot,r=t===void 0?w._tree[0]:t,a=n_(r);if(!a.length)return Promise.resolve();var n=L.implementation.createHTMLDocument("Dynamic document for loading cssom"),i=ef(n);return i_(a,i).then(function(o){return sf(o)})}var uf=a_;function n_(e){var t=[],r=Nt(e,"*",function(a){return t.includes(a.shadowId)?!1:(t.push(a.shadowId),!0)}).map(function(a){return{shadowId:a.shadowId,rootNode:ma(a.actualNode)}});return Na(r,[])}function i_(e,t){var r=[];return e.forEach(function(a,n){var i=a.rootNode,o=a.shadowId,u=o_(i,o,t);if(!u)return Promise.all(r);var s=n+1,c={rootNode:i,shadowId:o,convertDataToStylesheet:t,rootIndex:s},l=[],d=Promise.all(u.map(function(f,p){var m=[s,p];return vu(f,c,m,l)}));r.push(d)}),Promise.all(r)}function sf(e){return e.reduce(function(t,r){return Array.isArray(r)?t.concat(sf(r)):t.concat(r)},[])}function o_(e,t,r){var a;return e.nodeType===11&&t?a=u_(e,r):a=s_(e),c_(a)}function u_(e,t){return Array.from(e.children).filter(l_).reduce(function(r,a){var n=a.nodeName.toUpperCase(),i=n==="STYLE"?a.textContent:a,o=n==="LINK",u=t({data:i,isLink:o,root:e});return u.sheet&&r.push(u.sheet),r},[])}function s_(e){return Array.from(e.styleSheets).filter(function(t){return t.media?lf(t.media.mediaText):!1})}function l_(e){var t=e.nodeName.toUpperCase(),r=e.getAttribute("href"),a=e.getAttribute("rel"),n=t==="LINK"&&r&&a&&e.rel.toUpperCase().includes("STYLESHEET"),i=t==="STYLE";return i||n&&lf(e.media)}function lf(e){return e?!e.toUpperCase().includes("PRINT"):!0}function c_(e){var t=[];return e.filter(function(r){return r.href?t.includes(r.href)?!1:(t.push(r.href),!0):!0})}function d_(e){var t=e.treeRoot,r=t===void 0?w._tree[0]:t,a=Nt(r,"video, audio",function(n){var i=n.actualNode;if(i.hasAttribute("src"))return!!i.getAttribute("src");var o=Array.from(i.getElementsByTagName("source")).filter(function(u){return!!u.getAttribute("src")});return!(o.length<=0)});return Promise.all(a.map(function(n){var i=n.actualNode;return f_(i)}))}var cf=d_;function f_(e){return new Promise(function(t){e.readyState>0&&t(e);function r(){e.removeEventListener("loadedmetadata",r),t(e)}e.addEventListener("loadedmetadata",r)})}function df(e){var t={cssom:uf,media:cf};return ff(e)?new Promise(function(r,a){var n=pf(e),i=n.assets,o=n.timeout,u=setTimeout(function(){return a(new Error("Preload assets timed out."))},o);Promise.all(i.map(function(s){return t[s](e).then(function(c){return lm({},s,c)})})).then(function(s){var c=s.reduce(function(l,d){return le({},l,d)},{});clearTimeout(u),r(c)}).catch(function(s){clearTimeout(u),a(s)})}):Promise.resolve()}function p_(e){return O(e)==="object"&&Array.isArray(e.assets)}function ff(e){return!e||e.preload===void 0||e.preload===null?!0:typeof e.preload=="boolean"?e.preload:p_(e.preload)}function pf(e){var t=ce.preload,r=t.assets,a=t.timeout,n={assets:r,timeout:a};if(!e.preload||typeof e.preload=="boolean")return n;var i=e.preload.assets.every(function(o){return r.includes(o.toLowerCase())});if(!i)throw new Error("Requested assets, not supported. Supported assets are: ".concat(r.join(", "),"."));return n.assets=Na(e.preload.assets.map(function(o){return o.toLowerCase()}),[]),e.preload.timeout&&typeof e.preload.timeout=="number"&&!isNaN(e.preload.timeout)&&(n.timeout=e.preload.timeout),n}function Yn(e){var t=w._audit.data.checks||{},r=w._audit.data.rules||{},a=pa(w._audit.rules,"id",e.id)||{};e.tags=qt(a.tags||[]);var n=mf(t,!0,a),i=mf(t,!1,a);e.nodes.forEach(function(o){o.any.forEach(n),o.all.forEach(n),o.none.forEach(i)}),Vi(e,qt(r[e.id]||{}))}function m_(e,t){function r(n){return n.incomplete&&n.incomplete.default?n.incomplete.default:su()}if(e&&e.missingData)try{var a=t.incomplete[e.missingData[0].reason];if(!a)throw new Error;return a}catch{return typeof e.missingData=="string"?t.incomplete[e.missingData]:r(t)}else return e&&e.messageKey?t.incomplete[e.messageKey]:r(t)}function mf(e,t,r){return function(a){var n=e[a.id]||{},i=n.messages||{},o=Object.assign({},n);delete o.messages,!r.reviewOnFail&&a.result===void 0?(O(i.incomplete)==="object"&&!Array.isArray(a.data)&&(o.message=m_(a.data,i)),o.message||(o.message=i.incomplete)):o.message=a.result===t?i.pass:i.fail,typeof o.message!="function"&&(o.message=lu(o.message,a.data)),Vi(a,o)}}function h_(e,t){return Nt(e,t)}var vt=h_;function hf(e,t){var r,a,n,i=w._audit&&w._audit.tagExclude?w._audit.tagExclude:[];return t.hasOwnProperty("include")||t.hasOwnProperty("exclude")?(r=t.include||[],r=Array.isArray(r)?r:[r],a=t.exclude||[],a=Array.isArray(a)?a:[a],a=a.concat(i.filter(function(o){return r.indexOf(o)===-1}))):(r=Array.isArray(t)?t:[t],a=i.filter(function(o){return r.indexOf(o)===-1})),n=r.some(function(o){return e.tags.indexOf(o)!==-1}),n||r.length===0&&e.enabled!==!1?a.every(function(o){return e.tags.indexOf(o)===-1}):!1}function v_(e,t,r){var a=r.runOnly||{},n=(r.rules||{})[e.id];return e.pageLevel&&!t.page?!1:a.type==="rule"?a.values.indexOf(e.id)!==-1:n&&typeof n.enabled=="boolean"?n.enabled:a.type==="tag"&&a.values?hf(e,a.values):hf(e,[])}var vf=v_;function gf(e,t){if(!t)return e;var r=e.cloneNode(!1),a=Za(r);if(r.nodeType===1){var n=r.outerHTML;r=oe.get(n,function(){return bf(r,a,e,t)})}else r=bf(r,a,e,t);return Array.from(e.childNodes).forEach(function(i){r.appendChild(gf(i,t))}),r}function bf(e,t,r,a){return t&&(e=L.createElement(e.nodeName),Array.from(t).forEach(function(n){g_(r,n.name,a)||e.setAttribute(n.name,n.value)})),e}function g_(e,t,r){return typeof r[t]>"u"?!1:r[t]===!0?!0:Or(e,r[t])}function bu(e,t){var r=[],a;if(w._selectCache)for(var n=0,i=w._selectCache.length;n1&&arguments[1]!==void 0?arguments[1]:L,r=Array.isArray(e)?ae(e):[e];return e.length===0?[]:wf(r,t)}function wf(e,t){var r=sm(e),a=r[0],n=r.slice(1),i=t.querySelectorAll(a);if(n.length===0)return Array.from(i);var o=[],u=Fe(i),s;try{for(u.s();!(s=u.n()).done;){var c=s.value;c!=null&&c.shadowRoot&&o.push.apply(o,ae(wf(n,c.shadowRoot)))}}catch(l){u.e(l)}finally{u.f()}return o}function C_(){return["hidden","text","search","tel","url","email","password","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}var Kn=C_,Df=[,[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,,,,,1,1,1,1,,,1,1,1,,1,,1,,1,1],[1,1,1,,1,1,,1,1,1,,1,,,1,1,1,,,1,1,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,,,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1],[,1,,,,,,1,,1,,,,,1,,1,,,,1,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,,,1,,,,,1,1,1,,1,,1,,1,,,,,,1],[1,,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,,1,,1,,,,,1,,1,1,1,1,1,,,,1,1,1,1],[,1,1,1,1,1,,1,1,1,,1,,1,1,1,,,1,1,1,1,1,1,1,1],[,,1,,,1,,1,,,,1,1,1,,,,,,,,,,,1],[1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1,1,1,1,1,,,1,1,1],[1,1,1,1,1,,,1,,,1,,,1,1,1,,,,,1,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1],[,1,,1,1,1,,1,1,,1,,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,,,1,1,1,,,1,1,,,,,,1,1],[1,1,1,,,,,1,,,,1,1,,1,,,,,,1,,,,,1],[,1,,,1,,,1,,,,,,1],[,1,,1,,,,1,,,,1],[1,,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,,1,,,1,1,1,1],[,1,1,1,1,1,,,1,,,1,,1,1,,1,,1,,,,,1,,1],[,1,,,,1,,,1,1,,1,,1,1,1,1,,1,1,,,1,,,1],[,1,1,,,,,,1,,,,1,1,1,1,,1,1,1,1,1,1,,1,1,1],[,1,,1,1,1,,,1,1,1,1,1,1,,1,,,,,1,1,,1,,1],[,1,,1,,1,,1,,1,,1,1,1,1,1,,,1,1,1],[,1,1,1,,,,1,1,1,,1,1,,,1,1,,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1],[,1,1,1,,1,1,1,,1,,,,,1,1,1,,,1,,1,,,1,1],[,,,,1,,,,,,,,,,,,,,,,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,,1,1,1,,1,1,,,,1,1,1,1,1,,,1,1,1,,,,,1],[1,1,1,1,,,,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,,,,,,,1,,,,,,,1],[,1,1,,1,1,,1,,,,,,,,,,,,,1],,[1,1,1,,,,,,,,,,,,,1],[,,,,,,,,1,,,1,,,1,1,,,,,1]],[,[1,1,,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,,1,1,1,1,,1,1,,1,1,1,1,1,1,1,,1,1,1,1,,1],[,,,1,,,,,,,,,,,,,,,1],[,1,,,1,1,,1,,1,1,,,,1,1,,,1,1,,,,1],[1,,,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1,,,1,,,,1],,[,1,1,1,1,1,,1,1,1,,1,1,,1,1,,,1,1,1,1,,1,1,,1],[,1,,,1,,,1,,1,,,1,1,1,1,,,1,1,,1,1,1,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,,,1,1,1,1,1,1,1,,,1,,,1,,1],[,1,,,,,,,,,,1,1,,,,,,1,1,,,,,1],[,,,,,,,1,,,,1,,1,1],[,1,1,1,1,1,1,1,,,,1,1,1,1,1,,,1,1,,1,1,1,1,1],[,1,,,1,1,,1,,1,1,1,,,1,1,,,1,,1,1,1,1,,1],[,1,1,1,,1,1,,1,1,,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1],[,,,,,,,,,,,,,,,,1],,[,1,1,1,1,1,,1,1,1,,,1,,1,1,,1,1,1,1,1,,1,,1],[,,1,,,1,,,1,1,,,1,,1,1,,1],[,1,1,,1,,,,1,1,,1,,1,1,1,1,,1,1,1,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[1,1],[,1,,,,,,,,,,1,1,,,,,,1,1,,1,,1,,1,1],,[,1,1,,1,,,1,,1,,,,1,1,1,,,,,,1,,,,1],[1,1,,,1,1,,1,,,,,1,,1]],[,[,1],[,,,1,,,,1,,,,1,,,,1,,,1,,,1],[,,,,,,,,,,,,,,,,,,1,1,,,,,,1],,[1,,,,,1],[,1,,,,1,,,,1],[,1,,,,,,,,,,,1,,,1,,,,,,,,,1,1],[,,,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,1,,,,1,,1],[,1],[,1,,1,,1,,1,,1,,1,1,1,,1,1,,1,,,,,,,1],[1,,,,,1,,,1,1,,1,,1,,1,1,,,,,1,,,1],[,1,1,,,1,,1,,1,,1,,1,1,1,1,,,1,,1,,1,1,1],[1,1,1,1,1,,1,,1,,,,1,1,1,1,,1,1,,,1,1,1,1],[1,,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,1],,[,1,,,,,,1,1,1,,1,,,,1,,,1,1,1,,,1],[1,,,,,1,,1,1,1,,1,1,1,1,1,,1,,1,,1,,,1,1],[1,,1,1,,,,,1,,,,,,1,1,,,1,1,1,1,,,1,,1],[1,,,,,,,,,,,,,,,,,1],[,,,,,1,,,1,,,,,,1],[,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,,1],[,1,,,,,,,,,,,,,,1],[,1,,,,1]],[,[1,1,1,,1,,1,1,1,1,1,1,1,1,1,,1,,1,,1,1,,,1,1,1],[,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1],,[,,,,,,,,,,,,,,,,,,1],[1,,,,,,,,,1,,,,1],[,,,,,,,,,,,,,,,,,,1],,[1,1,,,,1,1,,,,,,1,,,,1,,1,,1,1,,1],[1],[,,,,,,,,,,,1,,,,,,,,,,,1],[,1,,,,,,,1,1,,,1,,1,,,,1,,,,,,,1],[,,,,,,,,,,,,,,,,1,,,,,1],[,,1,,,,,1,,1],[1,,,,1,,,,,1,,,,1,1,,,,1,1,,,,,1],[,,,,,1],[,,,,,,,,,,,,,,,,,,,1],[1,,,1,1,,,,,,,1,,1,,1,1,1,1,1,1],[,,,,,1,,,,,,,1,,,,,,,1],,[,,1,1,1,1,1,,1,1,1,,,1,1,,,1,1,,1,1,1,,,1],[,,,,,,,,,,,,,,,,,,1],[,1,,,,1],,[1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[,,,1,1,1,1,,,,,,1,,1,,,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,,1],[,1,1,1,1,,1,1,1,1,1,1,1,1,,,,1,,1,,,1,1,1,1,1],[,,,,,,,,,,,1,,,,,,,,,1,,,,1],[,1,1,,1,1,,1,,,,1,1,,1,1,,,1,,1,1,,1],[,1,,1,,1,,,1,,,1,1,,1,1,,,1,1,1],[,1,1,1,1,1,,1,1,,,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,,,,,,,,,1,,1,,1,1,,,,1,,,1],[,1,,,1,1,,,,,,,,,1,1,1,,,,,1],[1,,,1,1,,,,1,1,1,1,1,,,1,,,1,,,1,,1,,1],[,1,1,,1,1,,1,1,,,,1,1,1,,,1,1,,,1,1,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,,1,1,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,,,,1,,,,,,,,,1],[,1,,,,,,,,1,,,,,1,,,,1,,,1],[,1,1,1,1,,,1,1,1,1,1,,1,,1,,1,1,1,1,1,1,1,1,1,1],[,,,,,1,,1,,,,,1,1,1,1,1,,,1,,,,1],[,1,,,,,,,,1,,,,,,,,,,,,1],[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,,1,,1,1,,,,1,,1,1,1,1,1,,1,1,,,,,,1],[,1,1,1,1,1,1,1,,1,1,,,1,1,,,,1,,1,1,,1,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,1,1,,1,1,1,1,,1,,,1,1,1,1,,,1,,,,,,,1],[,1,,,,,,,,1,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1],[,1,1,,,,,,,,,,,,1,1,,,,,,1],[,1,,,,,,,1],[,,,,,,,,,,,,,,1,,,,,1,,,,,,1],[1,1,,,1,,,1,1,1,,,,1],,[,,,,,,,,,,,,,1,,,,,,,,,,1],[,,,,,,,,,1,,,,,,,,,1,,,,,,,1],[1,1,1,,1,,1,1,1,1,1,1,1,1,,1,,,1,,1,,,1,1],[,,,,,,,,,1],[,1,,,,1,,,,,,1,,,1,,,,,1],[,1,1,,1,1,,,,,,,,,,,,,,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,1,1,1,,,,1,1,,,,1,,1],[1,1,1,1,1,1,,,1,1,1,1,1,1,,1,1,,1,1,1,,1,1,,1,1],[,,,,,,,,,,,,,,,1,,,,1],,[1,1,,1,,1,,,,,,1,,1,,1,1,,1,,1,1,,1,1,,1],[,,1,,,,,,1,,,,1,,1,,,,,1],[1,,,,,,,,,1,,,,,,1,,,,1,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,,,1,,1,,,,,,1,,,1,,,,,,,,1],[,1,,1,,,,,,,,,,,,1],,[1,1,,,,,,,,,,,,,,,,,,,,,,1,1],[1]],[,[1,,,,,,,,,1,,,,,1,,1,,1],[,1,1,,1,1,,1,1,1,,,1,1,1,,,,1,,,1,,,,1],[,1,,,,,,,1,,,,1,,,,,,1],[1,1,1,1,1,1,,,,1,,,,,,,,,1,1,1,1],[1],[,1,1,,,1,1,,,,,1,,1,,,,,,,,1,,,,1],[1,,1,,,1,,1,,,,,1,1,1,1,,,,1,,,,1],[,,1,,,,,,,1,,,,,,,1,,,,,,,1],[1,,,,,,,,,,,,,,1,,,,1],[,,,1,,1,,,,,1,,,,1,1,,,,1],[1,,,,,1,,,,1,,1,1,,,1,1,,1,1,1,,1,1,1,,1],[,1,1,,,,,1,,1,,1,1,1,,1,1,,,1,,1,1,1],[,1,,,,1,,,,1,,,1,,1,1,,,1,1,,,,,,1],[1,,1,1,,1,,1,1,,1,,1,1,1,1,1,,,1,1,,,,,,1],[1,,,,,,,,,,,,,,,,,,1,,,1,,1],[,,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,,,,1,,1],[,1,,,,1,,,1,1,,1,,,1,1,,,1,,,1,,,1,1],[1,1,,1,1,1,,1,1,1,,1,,1,1,1,,,1,,1,1],[1,,1,1,1,1,,,,1,,1,1,1,,1,,,1,1,1,,1,1,1,1,1],[1,,,,,,,,,,,,,1],[,,1,,,,,,,,,,,,,,,,,,,,1],[1,,,,,,,,,,,1,,1,,1,,,,1],[,,,1,,,,,,,,,1],[,1,,,,,,,,,,,,,,1,,,,,,,,,1],[,,,,,,,,1,1,,,,,,,,,1,,,,,,,,1]],[,[1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,,1,1,1,1,1,,,1,1,1],[,,,,,1,,,,1,1,1,,,1,1,,,1,,1,1,,1],[,,,,,,,,,,,,,,,,,,,1,1],[,1,,,,,,1,,,,,,,,,,,,,1],[,,1,,,1,,1,1,1,,1,1,,1,,,,1,,1,1],,[,,1,,,1,,,,,,1,,,,1],[,,,,,,,,,1,,,,,,,,,,1],[1,1,1,1,1,1,,1,1,1,,,1,1,,1,,1,,,1,1,1,,,1],[,,,,,1,,,,,,,,,,,,,1],[,1,,,,,,,,,,,,1,,1,1,,1,,,1],[,,,,,1,,,,,,,,,,,,,,1],[,1,1,1,1,,,,,1,,,1,,1,,,,1,1,,,,1,1],[,1,,,1,,,1,,1,1,,1,,,,,,,1],[,,1,,1,,,1,,,,,,,,,,,1,1,,,,1],[,1,,,,,,,,,,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,1],[,1,1,,,,,,,,,,,,,,,,1,,1,1],[,,,,,,,,,,,,1],,[,1,1,1,1,,,,1,1,,1,1,1,1,1,1,,1,1,1,1,,1,,1],[1,,,,1,,,,,,,,,,1],[1,,,,,,,,,1],,[,1,,,,1,,,,,,,,,,,,,,,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,,,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,,1,1,1,,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,,,1,1,1,,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1,,1,1,1,1],[1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,,,1,1,1,1,,1,,,,1,1,,,1,1,,1],[,1,1,,1,,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,,,,,,,,,,1],[1,1,1,,,,,1,1,1,,1,1,1,1,,,1,1,,1,1,,,,,1],[,1,,,,,,,1,1,,,1,1,1,,1,,,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,1],[,1,,,,1,,,,1,,,1,,,,1,,,,,,,1,1],[,1,1,1,1,1,,,1,1,1,,1,1,1,1,,,1,1,1,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1],[1,1,1,,1,,,1,1,1,1,,1,1,1,1,,,,1,,1,,1,,,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,1,,,,,,,,,1,1,,,,,,,,,1],,[,1,,1,,1,,1,,1,,1,1,1,1,1,,,1,,1,,1,,,,1],[,1,,,1,1,,1,1,1,,,1,1,1,1,1,,1,1,1,,1,,,1],[1,,,1,,,,1,1,1,,,,,1,1,,,,1,,1],[1,1,,1,1,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,,,,,,,,1,,1,,,,,,,,1,,1],[,1,,,,1,,1,1,,,,1,1,,1,,,,1,1,1,,1],,[,1,,,,,,1,,,,,,,1],[,,,,,,,,1,,,,1,,1,,,,,,,,,,,,1]],[,[,1,1,,1,1,1,1,,1,1,1,,1,1,,1,1,,1,1,1,1,1,1,,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,1,,,1,,,,,,,,1,,,,,,1,,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,,1,1,1,,1,1,1,1,,,1,1,1,1,,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,,1,,1,,1,,1,1,1,1,1,1,1,,1,1,,,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1],[,1,1,,,,,1,1,1,,,1,,1,1,,,,1,,1,,,1,1],[,,,,,,,1,,,,1,1,1,1,1,,1,,,,,,,,1],[1,1,1,1,,1,1,1,,1,,1,1,1,1,,1,,1,,1,1,,,1,,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,1,1,,1,,1,1,1,,1,,1,1,,1,1,,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,,,,,,,1,,,,,1,,1],[,1,1,1,,1,,1,,1,,,,1,,1,,,1,,,,,,1,1],[,1,,,1,1,,1,,1,,1,1,1,1,1,,1,1,,,1,,,1],[1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,,,1,,1,,1,,,,,,1,,1,,,,1,1]],[,[,1,,1,,,,,,,,,,,,,,,1,,,,1],[,,,,,,,,,1,,1,1,1,,1,,,1,,1,1],[1,1,,,,,,,1,,,,,,,1,,,,,,1],[,1,,,,,,,,,,1,,,,,,,,,1,1],,[,,,,,,,,,,,,,,,1,,,,1,,1],[,,1,1,,1,,1,,,,,,,,1,,,,,,1],[,,,,,,,,,,,,,,,,,,,,1,1],[,1,,,,,,,,,,,,,1],[1,,1,1,,,,1,,,,,,,,,1,,,1,,,1,1],[,1,1,,1,1,,1,1,1,1,1,1,1,1,1,,,1,1,,1,1,,1],[,1,,,1,1,,,,,,1,,1,,1,,,1,,1,1],[1,1,1,1,,1,,1,,1,,1,1,,1,1,1,1,1,,1,1,1,1,1],[,1,1,,,1,,1,,1,1,1,,,1,1,1,,1,1,1,1,,1,1],[,,,,1,,,1,,,,,,,1,,,,1,1],[,1,,,,,,,,,,1,,1,,1,,,,,1,,,,,1],,[1,1,,1,,1,,1,1,,,,,,1,1,,,1,1,1,1,1,1,1,1,1],[1,1,,1,,,,,,1,,,,,,1,1,,,,1,1,,,1],[,1,1,,1,1,,,,1,,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1],[,1,1,,,1,,,,1,,,,1,1],[,,,,1],[,,,,,,,,,1,,,1],,[,,1,,1,,,,,,,,,1,,,,,,,,,,,,1],[,,,,,,,,,,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,1,,1,1,1,1,1,,,1,1,1,1,1,,1,1,1,1,1,,,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,,,,,1],[,1,,1,,,,,,1,,,,,1,1,,,,,1,1],[,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,,1,,,1,,1,1,1],[,1,,,,1,,,,,,,1],[,1,,,1,,,1,,1,,1,1,,1,,,,,1,,1,,,,1,1],[,1,,,1,,,1,1,1,,1,1,1,1,1,,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1],[,,,,,,,,,,,,,,,,,,,,1],[,1,1,1,,,,1,1,,,,,,1,1,1,,1,1,1,1],[1,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1],[,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,1,1,1,1,1,1,1,,1,,1,1,1,1,1,,1,1,,1,1,1,1,1],[,1,,,,1,,,,1,,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,1,,,,,,,,1,,,,,,,,,,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1],[1,1,,1,1,1,,1,1,1,,,1,1,1,1,1,1,1,1,1,1,,1,,1],[1,1,,,,,,,1,1,,,,,1,1,1,1,1,,1,1,1,1,,1],[,1,1,1,1,1,1,1,,1,1,1,,1,,1,1,1,1,,1,1,,1,1,1,1],,[,1,1,,,,,1,,1,,,,1,1,1,,,1,,,,,1],[,,,,,,,,,,,,,1],[,,,,,1,,,,,,,,1,1,,,,,1,,1,,,1,1],[,,,,,,,,,,,,,,1]],[,[,1],,,,,,,,,,,,,,,,,,,,[1,1,1,1,1,,1,1,1,1,,1,1,1,1,,1,1,1,1,,,1,1,1,1,1],[,1,,1,,1,,,1,1,1,,1,1,1,1,1,,,1,,,,1,,1,1],[,1,,1,,1,,,1,,,,,1,,,,,,1,1],[,1,,1,,,,,1,,,,1,,1,1,1,1,1,1,1,1,,1],[,1,,,,,,,,,,,,,,,1]],[,[,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,,,,,,,,,1,1,,,,1],[,,,,,,1],[,,1],[,1,1,,,1,,1,,1,1,,1,1,1,,,,1,1,1,,,,,1],,[,1,,,,1,,,,,,1,,,1,,,,1,1,,1],[,,,,,,,1,,,,,,,,,1],[,1,,,,1,1,,,,,,1,1,1,,,,1,,1,1],[,,,,,,,1,,1,,,,,,,,,,1],[,1,1,,,,,,1,1,,,,1,,,,,,,1,,,1],,[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,,1,,,1,,,,,1,,1,,1,,1,,,,,1],[1,1,1,1,1,1,1,1,,,,,1,1,,1,1,,1,,,1,,1],[,,,,,,,,,,,,,,1,,,,,,1],,[,,,,,,,,,1,,,,,,1,,,,,1],[,,1,,,,,,,1,,,1,1],[,,,1,,,,,1,,,,,1,,,,,,1,,,,1],[1,,1,1,,1,1,1,1,1,,1,,,,1,1,1,,,1,1,,,,1,1],,[1,1,,,,,,,,,,1,,1,,1,,,1],[,,,,1,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,1,,,,,1,,1],[,,,,,,,,1]],[,[1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,,1,1,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1],[1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,,1,,,1,,,,,,,,1,,,,,,1,,,,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,,1,,,,1,1,1,1,1,1,,1,1,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,,1,1,1,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1],[1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1],[,,1,1,1,1,,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,,,,,,,1,,1,1,,1,1,1,,1,1,1,1,1],[1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1],[1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[1,1,1,1,,1,,1,,1,1,1,1,1,,,,1,1,1,1,,1,1,1,1,1],[1,1,1,1,,1,,,,,,1,,1,,,,,1,1,,,,,1],[1,,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,1,1,,1,,1,,,,1,1,1,1,1,,,1,1,,1,,1],[,1,1,1,1,,,,,1,,1,1,1,1,1,,,1,1,,,,1,1,1],[,1,1,1,1,1,,1,,,,,1,,1,,1,,,1,,,1,1,,1]],[,[1,1,1,1,1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1,,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,,,,,1,,,,,1,1,,,1,,1],[1,1,1,1,1,1,1,1,1,1,1,,,,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,,1,1,1,1,,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1],[1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,,,,,,1,,1,1,,1,1,1,1,1,,,1,,1,,1],[1,1,1,,1,1,1,1,,,,1,1,1,1,,1,1,1,1,1,1,1,1,1,,1],[1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,,1,1,1,1,1,1,1,1,1,,1,1,,1,1,1,1,1,,1,1,1,1,1,1],[,1,,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1],[,,1,,,,,,,,,,1,1,1,1,1,1,1,,1,1,,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,1,1],[,1,,,1,1,,,,,,1,1,1,1,1,,,,1,1,1,,1,1,1],[1,1,1,1,1,1,1,1,1,,,,1,1,1,1,1,1,1,,1,1,,1,1,1],[,1,1,1,,1,,1,1,1,1,,,1,1,1,,1,1,1,1,1,,,1,1],[1,1,,,,1,,,1,1,1,,1,,1,,1,,1,1,1,1,1,,1,,1],[,1,,,,,,,1,,1,,1,1,1,1,,,,,,,,,1]],[,[,,,,,,,,,,,,,1,1,,,,1],[,1,,,,,,,,1,,,1,,,,,,1,,,1,,,,1],,[,1,,,,1,,1,,1,1,,1,1,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1],[,,,,,,,,,1],[1,1,1,,,1,,,,,,,,,1,1,,,,,,,,,,1],[,1,,,,,,,,,,,,,1],[,,,,,,,,,,,,,,,,,,,1,,,1],[,,,,,,,,,1],[1,1,,,,,,1,1,1,,1,1,,,,1,1,,1,,1,1,1,,1],[,1,1,1,,1,1,,,1,,1,1,1,1,,,,,,,1,,1],[,1,1,1,1,,,1,,1,,,,1,1,1,1,,1,1,,1],[,1,,,1,1,,1,,,,1,,1,1,,1,,1,,,1,,,1,,1],[,,,,,,,,,,,1],[,,,,,,,,,1,,,,,,,,,,,,,1],,[1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,,1,1,1,1,1,1,1],[,1,,,,,,,1,1,,1,,,,,1,,,1,,1],[,1,,,,1,,,1,,,,,,,,1,,1,,,1],[,,,,,,,,,,,,,1,1,,,,1,,,1],[,,,,,1,,,1,,,,1],[,1],,[,1],[1,,,,,,,,,,,,,,1,,,,,1]],[,[,1,,,,1,1,1,1,1,1,,1,1,1,1,1,,1,1,,1,1,,,1],[,,1,,,,,,,,,1],,,[1,,,1,1,,,,,,,,1,1,,1,1,,1],,[,,,,,,,,,,,,,,,,,,1,,1],,[1,,,1,1,,1,1,,,,,1,,1,,,,,1,1,,1],,[,1,,,,,,,,1,1,1,1,1,,1,1,,,,1,1],[,,,,,,,,,,,,,,,,1,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,1,1,1,1],[,,,,,,,,,,,1,,1,,,1],[1,,,,,,,,,,,,,,,,,,1,,1],,,[,1,,,,,,,,,,,,,,1,,,,1,1],[,,,,,,,,,1,,,1,,,,,,,,,,1],[,,,,,,,,,,,,,,,1],[,,,,,,,,,,,,,1,1,,,,,,1],,[,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,,1,1,,1,1,1,1,1,1,,,1,1,1,1,1,,1,1],[,1,,,,,,,,1],[,,,,1,,,1,,,1,1,,,,,,,,,,1,,,,1],[,1,,1,1,,,1,1,1,,,,1,1,1,1,,1,1,1,1,,1],[,,,,,,,1],[,1,1,,,,,1,,1,,,,,,1,,,,,,1,,1,,1],[,1,,,,,,1,,,,1,,,,,,,,,,1],[,,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1,1,1,1,,1],[,1,,,,,,,,1],[,1,1,,1,,,,,,,,1,,,,,,1,,,1,,1,,1],[,1,,1,,1,,1,1,1,,1,1,1,,1,,,1,1,,1,1,1,1,1],[,1,1,1,1,1,,,1,1,,,,1,1,1,,,,1,1,,,1,1],[,,1,1,1,1,,1,,1,,1,,1,1,1,1,,,,,1,,1,,1],[1,1,1,1,1,1,1,1,,1,,1,,1,1,1,,,1,1,,,,1,,1],[,,,1],,[,1,1,,1,,,1,1,1,,1,1,1,1,1,1,,1,1,,1,1,1,1,1,1],[,1,,,,,,1,,1,,1,,,,,,,1,1,,1,1],[,,,,,,1,,1,1,,1,,1,,,,,,,,,,1],[,1,1,,1,,,,1,,,,1,1,1,,,,1,,1,1,1,,1,1],,[,1,1,,,,,,,,,,,,,1,,,1,,,,,1],[,1,,,,,,,,,,,,,,,,,,,,,,1],[,1,1,,,,,,,1,,,,1,,,,,1,,,,,,,1]],[,[,1,1,1,1,1,,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1],[,1,1,1,1,1,,1,,1,1,,,1,1,1,1,,1,,,,,1,1,1],[,,1,1,,1,,1,1,,,,1,1,1,1,,,1,,1,1,1,1,,1],[,1,,1,,,,,,,,1,,1,,1,,,,,,,,,,1],[,,1,,1,,,1,,,,,1,1,,,1,,1,1,1,1],[,1],[,1,1,,1,,1,1,,1,,,1,1,1,,,,1,,,1,,1],[1,1,,1,1,1,,,,,,,,,,,,,1,,1,1,1],[,1,1,,,,,,,1,,,1,,1,,1,,1,1,,,1,,,1],[,,1,,,,,,,,,,,,,,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,1,1,1,,1,,1,,,,,1,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,,,1,1,1,,1,,1,1,1,,,1,1,1,1,,,,1,1],[,,,1,1,,,1,,1,,1,,1,1,1,1,,1,,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,1,,1,1,,1,,1,,,,1,1,,,1,1,,1,1,,1],[,1,1,1,1,1,,,1,1,1,,1,1,1,1,1,1,1,1,,1,1,,,1],[,1,1,1,1,1,,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1,,1,1],[,1,1,,1,,,1,,,1,,1,1,1,1,1,,1,,1,1],[,,,,,1,,,,1,,,,,1,1,,,,1],[,1,,1,1,1,,1,,,1,1,1,,,1,,,1,,1,,,1],[,,1,,,,,,,,,1,,1,,,,,1,,1],[,1,1,,,,,,,,1,1,1,,,,,,,,1,,,,,1],[,,,,,,,,1,,,,,1,,,1]],[,[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,1,,1,1,,,1,1,1,1,1,1,1,1,,,,,,,,,1,1],[,,,,,,,,1,,,,1,,1,,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,1,,1,,1,,,,1,1,,1,,1,,,,1,1,1,1,1,,,1],,[,1,,,,,,,,1,,,1,1,,,1,,1,1,,1,,1],[,1,,,1,,,,,,,,1,,,,,,,1],[1,1,,,,,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,,1,1,1],,[,1,,,,,,1,,1,,1,1,1,1,1,,,1,,1,1,,,,1],[,1,1,,,1,,1,,1,,,1,1,1,1,,,1,,,1,,,,1],[,1,1,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1,1,1,,,,1,,1],[,1,,,1,1,,1,1,,,1,1,,1,1,,1,,1,,1],[1,,1,,,,,1,,1,,1,1,1,1,,,,,1,1,,,,1,1],[,1,1,,,,,1,1,,,1,,1,1,1,1,,,,,,,,,,1],,[,1,1,,,1,,,,1,,1,1,1,1,1,,,,1,,,,1,,1],[,,,1,1,,,1,,,,,1,,1,1,1,,1,1,,,,,,1],[,1,,,,,,,,,,,1,,,,1,,,,,,,1,,1],[,1,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,,1,1,,1,1,1,1],[,1,,,,,,,,,,,,,,,,,,,1],[,1,,,,,,1,,,,,1,,1,,,1,1,,1,1,,1],[,1,,,,,,1,,,,,1,1,,,,,,,,1,,,,1],[,,,,,,,,,,,,,,,,,,1,,,1,,,,,1],[,,,,,,,1,,,,1]],[,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,1,,1,,,,,,,1,,,,,,,,1,,,1],[,1,,,,,,,1],[,,,,,,,,,,1],[,1,,,,,,1,1,,,,,,1],,[,1,1,,,,,,1,,,,,1,1,,,,1],[1,,1,,1,,,,,1,,,,,1,,,,,,,,,1,1],[,1,1,,,,,,,,,1,1,1,1,,,,1,,,,,1,,,1],,[,1,1,,1,,,1,1,,,1,,,1,1,1,,1,,1,1,1,,,,1],[,,,,,1,,,,,1,,,1,1,,,1,,1,,,,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,1,,,1,1,,1,,,,1,,,,,,,,1],[,,,1,,,,,1,,,,,1,,1,,1,1,1],[,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[,,,,,1],[,1,,,,,,1,,,,,,,1,1,1,,,1],[,1,,,,,,,,,,1,1,1,,,,,1,,,1],[,,,,,1,,1,,,,,1,1,1,,1,1,,1,1,1,,,1,1],[1,1,,,,,,,1,,,,,1,1,,,,,,,,,,,1],,[,1],[,,,,,,,,,,,,,,,,,,,,,,,,1],[,,1,,,,,1,,,1,,,,1,,1],[,1,,,,,,,,,1]]];function A_(e){for(var t=Df;e.length<3;)e+="`";for(var r=0;r<=e.length-1;r++){var a=e.charCodeAt(r)-96;if(t=t[a],!t)return!1}return!0}function _f(e){e=Array.isArray(e)?e:Df;var t=[];return e.forEach(function(r,a){var n=String.fromCharCode(a+96).replace("`","");Array.isArray(r)?t=t.concat(_f(r).map(function(i){return n+i})):t.push(n)}),t}var Xn=A_,F_=function(e){di(t,e);function t(r){var a;return Et(this,t),a=li(this,t),a._props=R_(r),a._attrs=k_(r),a}return Ct(t,[{key:"props",get:function(){return this._props}},{key:"attr",value:function(a){var n;return(n=this._attrs[a])!==null&&n!==void 0?n:null}},{key:"hasAttr",value:function(a){return this._attrs[a]!==void 0}},{key:"attrNames",get:function(){return Object.keys(this._attrs)}}]),t}(Ge),wu={"#cdata-section":2,"#text":3,"#comment":8,"#document":9,"#document-fragment":11},xf={},T_=Object.keys(wu);T_.forEach(function(e){xf[wu[e]]=e});function R_(e){var t,r,a,n=(t=e.nodeName)!==null&&t!==void 0?t:xf[e.nodeType],i=(r=(a=e.nodeType)!==null&&a!==void 0?a:wu[e.nodeName])!==null&&r!==void 0?r:1;he(typeof i=="number","nodeType has to be a number, got '".concat(i,"'")),he(typeof n=="string","nodeName has to be a string, got '".concat(n,"'")),n=n.toLowerCase();var o=null;n==="input"&&(o=(e.type||e.attributes&&e.attributes.type||"").toLowerCase(),Kn().includes(o)||(o="text"));var u=le({},e,{nodeType:i,nodeName:n});return o&&(u.type=o),delete u.attributes,Object.freeze(u)}function k_(e){var t=e.attributes,r=t===void 0?{}:t,a={htmlFor:"for",className:"class"};return Object.keys(r).reduce(function(n,i){var o=r[i];if(he(O(o)!=="object"||o===null,"expects attributes not to be an object, '".concat(i,"' was")),o!==void 0){var u=a[i]||i;n[u]=o!==null?String(o):null}return n},{})}var Ef=F_;function S_(e,t){if(e=e||function(){},t=t||w.log,!w._audit)throw new Error("No audit configured");var r=w.utils.queue(),a=[];Object.keys(w.plugins).forEach(function(i){r.defer(function(o){var u=function(c){a.push(c),o()};try{w.plugins[i].cleanup(o,u)}catch(s){u(s)}})});var n=w.utils.getFlattenedTree(L.body);w.utils.querySelectorAll(n,"iframe, frame").forEach(function(i){r.defer(function(o,u){return w.utils.sendCommandToFrame(i.actualNode,{command:"cleanup-plugin"},o,u)})}),r.then(function(i){a.length===0?e(i):t(a)}).catch(t)}var Cf=S_,Ia={},Af;function Ff(e){return Ia.hasOwnProperty(e)}function Du(e){return typeof e=="string"&&Ia[e]?Ia[e]:typeof e=="function"?e:Af}function O_(e,t,r){Ia[e]=t,r&&(Af=t)}function M_(e){var t;if(t=w._audit,!t)throw new Error("No audit configured");if(e.axeVersion||e.ver){var r=e.axeVersion||e.ver;if(!/^\d+\.\d+\.\d+(-canary)?/.test(r))throw new Error("Invalid configured version ".concat(r));var a=r.split("-"),n=P(a,2),i=n[0],o=n[1],u=i.split(".").map(Number),s=P(u,3),c=s[0],l=s[1],d=s[2],f=w.version.split("-"),p=P(f,2),m=p[0],h=p[1],v=m.split(".").map(Number),g=P(v,3),b=g[0],y=g[1],_=g[2];if(c!==b||y=f&&!m;v--)for(var g=d;g>=p;g--){var b=r[v]?r[v][g]:void 0;if(b){var y=w.utils.getNodeFromTree(b);if(y[a]){m=y[a];break}h.push(b)}}return m=(m||[]).concat(h.filter(n)),h.forEach(function(_){var A=w.utils.getNodeFromTree(_);A[a]=m}),m}function z_(e,t){if(e.getAttribute("headers")){var r=Tt(e,"headers");if(r.filter(function(o){return o}).length)return r}t||(t=zt(Br(e,"table")));var a=yn(e,t),n=Rf("row",a,t),i=Rf("col",a,t);return[].concat(n,i).reverse()}var Zn=z_;function V_(e){if(!e.children.length&&!e.textContent.trim())return!1;var t=e.getAttribute("role");return jr(t)?["cell","gridcell"].includes(t):e.nodeName.toUpperCase()==="TD"}var kf=V_;function H_(e){var t=(e.getAttribute("role")||"").toLowerCase();if((t==="presentation"||t==="none")&&!Ne(e))return!1;if(e.getAttribute("contenteditable")==="true"||Br(e,'[contenteditable="true"]')||t==="grid"||t==="treegrid"||t==="table"||St(t)==="landmark")return!0;if(e.getAttribute("datatable")==="0")return!1;if(e.getAttribute("summary")||e.tHead||e.tFoot||e.caption)return!0;for(var r=0,a=e.children.length;r=5||s)return!0;var p,m;for(c=0;c=20?!0:!(Gi(e).width>cn(D).width*.95||n<10||e.querySelector("object, embed, iframe, applet"))}var Jn=H_;function $_(e){if(zr(e)||Vr(e))return!0;if(e.getAttribute("id")){var t=Me(e.getAttribute("id"));return!!L.querySelector('[headers~="'.concat(t,'"]'))}return!1}var U_=$_;function Sf(e,t,r,a){var n,i=r[t.y]?r[t.y][t.x]:void 0;return i?typeof a=="function"&&(n=a(i,t,r),n===!0)?[i]:(n=Sf(e,{x:t.x+e.x,y:t.y+e.y},r,a),n.unshift(i),n):[]}function G_(e,t,r,a){if(Array.isArray(t)&&(a=r,r=t,t={x:0,y:0}),typeof e=="string")switch(e){case"left":e={x:-1,y:0};break;case"up":e={x:0,y:-1};break;case"right":e={x:1,y:0};break;case"down":e={x:0,y:1};break}return Sf(e,{x:t.x+e.x,y:t.y+e.y},r,a)}var xu=G_;function W_(e){var t=_u(e),r=this,a=[];t.forEach(function(u){var s=u.getAttribute("headers");s&&(a=a.concat(s.split(/\s+/)));var c=u.getAttribute("aria-labelledby");c&&(a=a.concat(c.split(/\s+/)))});var n=t.filter(function(u){return ne(u.textContent)===""?!1:u.nodeName.toUpperCase()==="TH"||["rowheader","columnheader"].indexOf(u.getAttribute("role"))!==-1}),i=zt(e),o=!0;return n.forEach(function(u){if(!(u.getAttribute("id")&&a.includes(u.getAttribute("id")))){var s=yn(u,i),c=!1;zr(u)&&(c=xu("down",s,i).find(function(l){return!zr(l)&&Zn(l,i).includes(u)})),!c&&Vr(u)&&(c=xu("right",s,i).find(function(l){return!Vr(l)&&Zn(l,i).includes(u)})),c||r.relatedNodes(u),o=o&&c}}),o?!0:void 0}var Y_=W_;function K_(e){for(var t=[],r=[],a=[],n=0;n0)return this.relatedNodes(a),!1;if(r.length){this.relatedNodes(r);return}return!0}var Of={};yt(Of,{allowedAttr:function(){return Mf},arialabelText:function(){return ya},arialabelledbyText:function(){return ba},getAccessibleRefs:function(){return Eu},getElementUnallowedRoles:function(){return Pf},getExplicitRole:function(){return ye},getImplicitRole:function(){return Rt},getOwnedVirtual:function(){return Da},getRole:function(){return de},getRoleType:function(){return St},getRolesByType:function(){return ux},getRolesWithNameFromContents:function(){return cx},implicitNodes:function(){return fx},implicitRole:function(){return Rt},isAccessibleRef:function(){return Qn},isAriaRoleAllowedOnElement:function(){return If},isComboboxPopup:function(){return Au},isUnsupportedRole:function(){return io},isValidRole:function(){return jr},label:function(){return jf},labelVirtual:function(){return _n},lookupTable:function(){return Bf},namedFromContents:function(){return mc},requiredAttr:function(){return zf},requiredContext:function(){return Fu},requiredOwned:function(){return Tu},validateAttr:function(){return ei},validateAttrValue:function(){return Vf}});function X_(e){var t=ve.ariaRoles[e],r=ae(br());return t&&(t.allowedAttrs&&r.push.apply(r,ae(t.allowedAttrs)),t.requiredAttrs&&r.push.apply(r,ae(t.requiredAttrs))),r}var Mf=X_,Z_=/^idrefs?$/;function Nf(e,t,r){if(e.hasAttribute){if(e.nodeName.toUpperCase()==="LABEL"&&e.hasAttribute("for")){var a=e.getAttribute("for");t.has(a)?t.get(a).push(e):t.set(a,[e])}for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:!0,r=be(e),a=r.vNode;if(!fu(a))return[];var n=a.props.nodeName,i=Rt(a)||tx[n],o=rx(a);return o.filter(function(u){return!nx(u,a,t,i)})}function nx(e,t,r,a){return r&&e===a?!0:ex.includes(e)&&St(e)!==a?!1:If(t,e)}var Pf=ax;function ix(e){return Object.keys(ve.ariaRoles).filter(function(t){return ve.ariaRoles[t].type===e})}var Jr=ix;function ox(e){return Jr(e)}var ux=ox;function sx(){return oe.get("ariaRolesNameFromContent",function(){return Object.keys(ve.ariaRoles).filter(function(e){return ve.ariaRoles[e].nameFromContent})})}var Cu=sx;function lx(){return Cu()}var cx=lx,Lf=function(t){return t===null},et=function(t){return t!==null},Ut={};Ut.attributes={"aria-activedescendant":{type:"idref",allowEmpty:!0,unsupported:!1},"aria-atomic":{type:"boolean",values:["true","false"],unsupported:!1},"aria-autocomplete":{type:"nmtoken",values:["inline","list","both","none"],unsupported:!1},"aria-busy":{type:"boolean",values:["true","false"],unsupported:!1},"aria-checked":{type:"nmtoken",values:["true","false","mixed","undefined"],unsupported:!1},"aria-colcount":{type:"int",unsupported:!1},"aria-colindex":{type:"int",unsupported:!1},"aria-colspan":{type:"int",unsupported:!1},"aria-controls":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-current":{type:"nmtoken",allowEmpty:!0,values:["page","step","location","date","time","true","false"],unsupported:!1},"aria-describedby":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-describedat":{unsupported:!0,unstandardized:!0},"aria-details":{type:"idref",allowEmpty:!0,unsupported:!1},"aria-disabled":{type:"boolean",values:["true","false"],unsupported:!1},"aria-dropeffect":{type:"nmtokens",values:["copy","move","reference","execute","popup","none"],unsupported:!1},"aria-errormessage":{type:"idref",allowEmpty:!0,unsupported:!1},"aria-expanded":{type:"nmtoken",values:["true","false","undefined"],unsupported:!1},"aria-flowto":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-grabbed":{type:"nmtoken",values:["true","false","undefined"],unsupported:!1},"aria-haspopup":{type:"nmtoken",allowEmpty:!0,values:["true","false","menu","listbox","tree","grid","dialog"],unsupported:!1},"aria-hidden":{type:"boolean",values:["true","false"],unsupported:!1},"aria-invalid":{type:"nmtoken",allowEmpty:!0,values:["true","false","spelling","grammar"],unsupported:!1},"aria-keyshortcuts":{type:"string",allowEmpty:!0,unsupported:!1},"aria-label":{type:"string",allowEmpty:!0,unsupported:!1},"aria-labelledby":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-level":{type:"int",unsupported:!1},"aria-live":{type:"nmtoken",values:["off","polite","assertive"],unsupported:!1},"aria-modal":{type:"boolean",values:["true","false"],unsupported:!1},"aria-multiline":{type:"boolean",values:["true","false"],unsupported:!1},"aria-multiselectable":{type:"boolean",values:["true","false"],unsupported:!1},"aria-orientation":{type:"nmtoken",values:["horizontal","vertical"],unsupported:!1},"aria-owns":{type:"idrefs",allowEmpty:!0,unsupported:!1},"aria-placeholder":{type:"string",allowEmpty:!0,unsupported:!1},"aria-posinset":{type:"int",unsupported:!1},"aria-pressed":{type:"nmtoken",values:["true","false","mixed","undefined"],unsupported:!1},"aria-readonly":{type:"boolean",values:["true","false"],unsupported:!1},"aria-relevant":{type:"nmtokens",values:["additions","removals","text","all"],unsupported:!1},"aria-required":{type:"boolean",values:["true","false"],unsupported:!1},"aria-roledescription":{type:"string",allowEmpty:!0,unsupported:!1},"aria-rowcount":{type:"int",unsupported:!1},"aria-rowindex":{type:"int",unsupported:!1},"aria-rowspan":{type:"int",unsupported:!1},"aria-selected":{type:"nmtoken",values:["true","false","undefined"],unsupported:!1},"aria-setsize":{type:"int",unsupported:!1},"aria-sort":{type:"nmtoken",values:["ascending","descending","other","none"],unsupported:!1},"aria-valuemax":{type:"decimal",unsupported:!1},"aria-valuemin":{type:"decimal",unsupported:!1},"aria-valuenow":{type:"decimal",unsupported:!1},"aria-valuetext":{type:"string",unsupported:!1}},Ut.globalAttributes=["aria-atomic","aria-busy","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-dropeffect","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"],Ut.role={alert:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},alertdialog:{type:"widget",attributes:{allowed:["aria-expanded","aria-modal","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["dialog","section"]},application:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage","aria-activedescendant"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["article","audio","embed","iframe","object","section","svg","video"]},article:{type:"structure",attributes:{allowed:["aria-expanded","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["article"],unsupported:!1},banner:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["header"],unsupported:!1,allowedElements:["section"]},button:{type:"widget",attributes:{allowed:["aria-expanded","aria-pressed","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["button",'input[type="button"]','input[type="image"]','input[type="reset"]','input[type="submit"]',"summary"],unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:et}}]},cell:{type:"structure",attributes:{allowed:["aria-colindex","aria-colspan","aria-rowindex","aria-rowspan","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["td","th"],unsupported:!1},checkbox:{type:"widget",attributes:{allowed:["aria-checked","aria-required","aria-readonly","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:['input[type="checkbox"]'],unsupported:!1,allowedElements:["button"]},columnheader:{type:"structure",attributes:{allowed:["aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan","aria-required","aria-readonly","aria-selected","aria-sort","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["th"],unsupported:!1},combobox:{type:"composite",attributes:{allowed:["aria-autocomplete","aria-required","aria-activedescendant","aria-orientation","aria-errormessage"],required:["aria-expanded"]},owned:{all:["listbox","tree","grid","dialog","textbox"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:[{nodeName:"input",properties:{type:["text","search","tel","url","email"]}}]},command:{nameFrom:["author"],type:"abstract",unsupported:!1},complementary:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["aside"],unsupported:!1,allowedElements:["section"]},composite:{nameFrom:["author"],type:"abstract",unsupported:!1},contentinfo:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["footer"],unsupported:!1,allowedElements:["section"]},definition:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["dd","dfn"],unsupported:!1},dialog:{type:"widget",attributes:{allowed:["aria-expanded","aria-modal","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["dialog"],unsupported:!1,allowedElements:["section"]},directory:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:["ol","ul"]},document:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["body"],unsupported:!1,allowedElements:["article","embed","iframe","object","section","svg"]},"doc-abstract":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-acknowledgments":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-afterword":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-appendix":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-backlink":{type:"link",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:et}}]},"doc-biblioentry":{type:"listitem",attributes:{allowed:["aria-expanded","aria-level","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author"],context:["doc-bibliography"],unsupported:!1,allowedElements:["li"]},"doc-bibliography":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{one:["doc-biblioentry"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-biblioref":{type:"link",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:et}}]},"doc-chapter":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-colophon":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-conclusion":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-cover":{type:"img",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1},"doc-credit":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-credits":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-dedication":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-endnote":{type:"listitem",attributes:{allowed:["aria-expanded","aria-level","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,namefrom:["author"],context:["doc-endnotes"],unsupported:!1,allowedElements:["li"]},"doc-endnotes":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{one:["doc-endnote"]},namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-epigraph":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1},"doc-epilogue":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-errata":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-example":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside","section"]},"doc-footnote":{type:"section",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside","footer","header"]},"doc-foreword":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-glossary":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:["term","definition"],namefrom:["author"],context:null,unsupported:!1,allowedElements:["dl"]},"doc-glossref":{type:"link",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:et}}]},"doc-index":{type:"navigation",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["nav","section"]},"doc-introduction":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-noteref":{type:"link",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author","contents"],context:null,unsupported:!1,allowedElements:[{nodeName:"a",attributes:{href:et}}]},"doc-notice":{type:"note",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-pagebreak":{type:"separator",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["hr"]},"doc-pagelist":{type:"navigation",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["nav","section"]},"doc-part":{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-preface":{type:"landmark",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-prologue":{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-pullquote":{type:"none",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside","section"]},"doc-qna":{type:"section",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},"doc-subtitle":{type:"sectionhead",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:{nodeName:["h1","h2","h3","h4","h5","h6"]}},"doc-tip":{type:"note",attributes:{allowed:["aria-expanded"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["aside"]},"doc-toc":{type:"navigation",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,namefrom:["author"],context:null,unsupported:!1,allowedElements:["nav","section"]},feed:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{one:["article"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["article","aside","section"]},figure:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["figure"],unsupported:!1},form:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["form"],unsupported:!1},grid:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-colcount","aria-level","aria-multiselectable","aria-readonly","aria-rowcount","aria-errormessage"]},owned:{one:["rowgroup","row"]},nameFrom:["author"],context:null,implicit:["table"],unsupported:!1},gridcell:{type:"widget",attributes:{allowed:["aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan","aria-selected","aria-readonly","aria-required","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["td","th"],unsupported:!1},group:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["details","optgroup"],unsupported:!1,allowedElements:["dl","figcaption","fieldset","figure","footer","header","ol","ul"]},heading:{type:"structure",attributes:{required:["aria-level"],allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["h1","h2","h3","h4","h5","h6"],unsupported:!1},img:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["img"],unsupported:!1,allowedElements:["embed","iframe","object","svg"]},input:{nameFrom:["author"],type:"abstract",unsupported:!1},landmark:{nameFrom:["author"],type:"abstract",unsupported:!1},link:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["a[href]","area[href]"],unsupported:!1,allowedElements:["button",{nodeName:"input",properties:{type:["image","button"]}}]},list:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:{all:["listitem"]},nameFrom:["author"],context:null,implicit:["ol","ul","dl"],unsupported:!1},listbox:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-readonly","aria-required","aria-expanded","aria-orientation","aria-errormessage"]},owned:{all:["option"]},nameFrom:["author"],context:null,implicit:["select"],unsupported:!1,allowedElements:["ol","ul"]},listitem:{type:"structure",attributes:{allowed:["aria-level","aria-posinset","aria-setsize","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["list"],implicit:["li","dt"],unsupported:!1},log:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},main:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["main"],unsupported:!1,allowedElements:["article","section"]},marquee:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},math:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["math"],unsupported:!1},menu:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-orientation","aria-errormessage"]},owned:{one:["menuitem","menuitemradio","menuitemcheckbox"]},nameFrom:["author"],context:null,implicit:['menu[type="context"]'],unsupported:!1,allowedElements:["ol","ul"]},menubar:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-orientation","aria-errormessage"]},owned:{one:["menuitem","menuitemradio","menuitemcheckbox"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["ol","ul"]},menuitem:{type:"widget",attributes:{allowed:["aria-posinset","aria-setsize","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"],implicit:['menuitem[type="command"]'],unsupported:!1,allowedElements:["button","li",{nodeName:"iput",properties:{type:["image","button"]}},{nodeName:"a",attributes:{href:et}}]},menuitemcheckbox:{type:"widget",attributes:{allowed:["aria-checked","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"],implicit:['menuitem[type="checkbox"]'],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["checkbox","image","button"]}},{nodeName:"a",attributes:{href:et}}]},menuitemradio:{type:"widget",attributes:{allowed:["aria-checked","aria-selected","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["menu","menubar"],implicit:['menuitem[type="radio"]'],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["image","button","radio"]}},{nodeName:"a",attributes:{href:et}}]},navigation:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["nav"],unsupported:!1,allowedElements:["section"]},none:{type:"structure",attributes:null,owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:[{nodeName:["article","aside","dl","embed","figcaption","fieldset","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hr","iframe","li","ol","section","ul"]},{nodeName:"img",attributes:{alt:et}}]},note:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["aside"]},option:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize","aria-checked","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["listbox"],implicit:["option"],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["checkbox","button"]}},{nodeName:"a",attributes:{href:et}}]},presentation:{type:"structure",attributes:null,owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:[{nodeName:["article","aside","dl","embed","figcaption","fieldset","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hr","iframe","li","ol","section","ul"]},{nodeName:"img",attributes:{alt:et}}]},progressbar:{type:"widget",attributes:{allowed:["aria-valuetext","aria-valuenow","aria-valuemax","aria-valuemin","aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["progress"],unsupported:!1},radio:{type:"widget",attributes:{allowed:["aria-selected","aria-posinset","aria-setsize","aria-required","aria-errormessage","aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,implicit:['input[type="radio"]'],unsupported:!1,allowedElements:[{nodeName:["button","li"]},{nodeName:"input",properties:{type:["image","button"]}}]},radiogroup:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-required","aria-expanded","aria-readonly","aria-errormessage","aria-orientation"]},owned:{all:["radio"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:{nodeName:["ol","ul","fieldset"]}},range:{nameFrom:["author"],type:"abstract",unsupported:!1},region:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["section[aria-label]","section[aria-labelledby]","section[title]"],unsupported:!1,allowedElements:{nodeName:["article","aside"]}},roletype:{type:"abstract",unsupported:!1},row:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-colindex","aria-expanded","aria-level","aria-selected","aria-rowindex","aria-errormessage"]},owned:{one:["cell","columnheader","rowheader","gridcell"]},nameFrom:["author","contents"],context:["rowgroup","grid","treegrid","table"],implicit:["tr"],unsupported:!1},rowgroup:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-errormessage"]},owned:{all:["row"]},nameFrom:["author","contents"],context:["grid","table","treegrid"],implicit:["tbody","thead","tfoot"],unsupported:!1},rowheader:{type:"structure",attributes:{allowed:["aria-colindex","aria-colspan","aria-expanded","aria-rowindex","aria-rowspan","aria-required","aria-readonly","aria-selected","aria-sort","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["row"],implicit:["th"],unsupported:!1},scrollbar:{type:"widget",attributes:{required:["aria-controls","aria-valuenow"],allowed:["aria-valuetext","aria-orientation","aria-errormessage","aria-valuemax","aria-valuemin"]},owned:null,nameFrom:["author"],context:null,unsupported:!1},search:{type:"landmark",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:{nodeName:["aside","form","section"]}},searchbox:{type:"widget",attributes:{allowed:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-readonly","aria-required","aria-placeholder","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:['input[type="search"]'],unsupported:!1,allowedElements:{nodeName:"input",properties:{type:"text"}}},section:{nameFrom:["author","contents"],type:"abstract",unsupported:!1},sectionhead:{nameFrom:["author","contents"],type:"abstract",unsupported:!1},select:{nameFrom:["author"],type:"abstract",unsupported:!1},separator:{type:"structure",attributes:{allowed:["aria-expanded","aria-orientation","aria-valuenow","aria-valuemax","aria-valuemin","aria-valuetext","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["hr"],unsupported:!1,allowedElements:["li"]},slider:{type:"widget",attributes:{allowed:["aria-valuetext","aria-orientation","aria-readonly","aria-errormessage","aria-valuemax","aria-valuemin"],required:["aria-valuenow"]},owned:null,nameFrom:["author"],context:null,implicit:['input[type="range"]'],unsupported:!1},spinbutton:{type:"widget",attributes:{allowed:["aria-valuetext","aria-required","aria-readonly","aria-errormessage","aria-valuemax","aria-valuemin"],required:["aria-valuenow"]},owned:null,nameFrom:["author"],context:null,implicit:['input[type="number"]'],unsupported:!1,allowedElements:{nodeName:"input",properties:{type:["text","tel"]}}},status:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:["output"],unsupported:!1,allowedElements:["section"]},structure:{type:"abstract",unsupported:!1},switch:{type:"widget",attributes:{allowed:["aria-errormessage"],required:["aria-checked"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1,allowedElements:["button",{nodeName:"input",properties:{type:["checkbox","image","button"]}},{nodeName:"a",attributes:{href:et}}]},tab:{type:"widget",attributes:{allowed:["aria-selected","aria-expanded","aria-setsize","aria-posinset","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["tablist"],unsupported:!1,allowedElements:[{nodeName:["button","h1","h2","h3","h4","h5","h6","li"]},{nodeName:"input",properties:{type:"button"}},{nodeName:"a",attributes:{href:et}}]},table:{type:"structure",attributes:{allowed:["aria-colcount","aria-rowcount","aria-errormessage"]},owned:{one:["rowgroup","row"]},nameFrom:["author","contents"],context:null,implicit:["table"],unsupported:!1},tablist:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-level","aria-multiselectable","aria-orientation","aria-errormessage"]},owned:{all:["tab"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["ol","ul"]},tabpanel:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1,allowedElements:["section"]},term:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,implicit:["dt"],unsupported:!1},textbox:{type:"widget",attributes:{allowed:["aria-activedescendant","aria-autocomplete","aria-multiline","aria-readonly","aria-required","aria-placeholder","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:['input[type="text"]','input[type="email"]','input[type="password"]','input[type="tel"]','input[type="url"]',"input:not([type])","textarea"],unsupported:!1},timer:{type:"widget",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,unsupported:!1},toolbar:{type:"structure",attributes:{allowed:["aria-activedescendant","aria-expanded","aria-orientation","aria-errormessage"]},owned:null,nameFrom:["author"],context:null,implicit:['menu[type="toolbar"]'],unsupported:!1,allowedElements:["ol","ul"]},tooltip:{type:"structure",attributes:{allowed:["aria-expanded","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:null,unsupported:!1},tree:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-multiselectable","aria-required","aria-expanded","aria-orientation","aria-errormessage"]},owned:{all:["treeitem"]},nameFrom:["author"],context:null,unsupported:!1,allowedElements:["ol","ul"]},treegrid:{type:"composite",attributes:{allowed:["aria-activedescendant","aria-colcount","aria-expanded","aria-level","aria-multiselectable","aria-readonly","aria-required","aria-rowcount","aria-orientation","aria-errormessage"]},owned:{one:["rowgroup","row"]},nameFrom:["author"],context:null,unsupported:!1},treeitem:{type:"widget",attributes:{allowed:["aria-checked","aria-selected","aria-expanded","aria-level","aria-posinset","aria-setsize","aria-errormessage"]},owned:null,nameFrom:["author","contents"],context:["group","tree"],unsupported:!1,allowedElements:["li",{nodeName:"a",attributes:{href:et}}]},widget:{type:"abstract",unsupported:!1},window:{nameFrom:["author"],type:"abstract",unsupported:!1}},Ut.implicitHtmlRole=so,Ut.elementsAllowedNoRole=[{nodeName:["base","body","caption","col","colgroup","datalist","dd","details","dt","head","html","keygen","label","legend","main","map","math","meta","meter","noscript","optgroup","param","picture","progress","script","source","style","template","textarea","title","track"]},{nodeName:"area",attributes:{href:et}},{nodeName:"input",properties:{type:["color","data","datatime","file","hidden","month","number","password","range","reset","submit","time","week"]}},{nodeName:"link",attributes:{href:et}},{nodeName:"menu",attributes:{type:"context"}},{nodeName:"menuitem",attributes:{type:["command","checkbox","radio"]}},{nodeName:"select",condition:function(t){return t instanceof w.AbstractVirtualNode||(t=w.utils.getNodeFromTree(t)),Number(t.attr("size"))>1},properties:{multiple:!0}},{nodeName:["clippath","cursor","defs","desc","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","fedropshadow","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","filter","hatch","hatchpath","lineargradient","marker","mask","meshgradient","meshpatch","meshrow","metadata","mpath","pattern","radialgradient","solidcolor","stop","switch","view"]}],Ut.elementsAllowedAnyRole=[{nodeName:"a",attributes:{href:Lf}},{nodeName:"img",attributes:{alt:Lf}},{nodeName:["abbr","address","canvas","div","p","pre","blockquote","ins","del","output","span","table","tbody","thead","tfoot","td","em","strong","small","s","cite","q","dfn","abbr","time","code","var","samp","kbd","sub","sup","i","b","u","mark","ruby","rt","rp","bdi","bdo","br","wbr","th","tr"]}],Ut.evaluateRoleForElement={A:function(t){var r=t.node,a=t.out;return r.namespaceURI==="http://www.w3.org/2000/svg"?!0:r.href.length?a:!0},AREA:function(t){var r=t.node;return!r.href},BUTTON:function(t){var r=t.node,a=t.role,n=t.out;return r.getAttribute("type")==="menu"?a==="menuitem":n},IMG:function(t){var r=t.node,a=t.role,n=t.out;switch(r.alt){case null:return n;case"":return a==="presentation"||a==="none";default:return a!=="presentation"&&a!=="none"}},INPUT:function(t){var r=t.node,a=t.role,n=t.out;switch(r.type){case"button":case"image":return n;case"checkbox":return a==="button"&&r.hasAttribute("aria-pressed")?!0:n;case"radio":return a==="menuitemradio";case"text":return a==="combobox"||a==="searchbox"||a==="spinbutton";case"tel":return a==="combobox"||a==="spinbutton";case"url":case"search":case"email":return a==="combobox";default:return!1}},LI:function(t){var r=t.node,a=t.out,n=w.utils.matchesSelector(r,"ol li, ul li");return n?a:!0},MENU:function(t){var r=t.node;return r.getAttribute("type")!=="context"},OPTION:function(t){var r=t.node,a=w.utils.matchesSelector(r,"select > option, datalist > option, optgroup > option");return!a},SELECT:function(t){var r=t.node,a=t.role;return!r.multiple&&r.size<=1&&a==="menu"},SVG:function(t){var r=t.node,a=t.out;return r.parentNode&&r.parentNode.namespaceURI==="http://www.w3.org/2000/svg"?!0:a}},Ut.rolesOfType={widget:["button","checkbox","dialog","gridcell","link","log","marquee","menuitem","menuitemcheckbox","menuitemradio","option","progressbar","radio","scrollbar","searchbox","slider","spinbutton","status","switch","tab","tabpanel","textbox","timer","tooltip","tree","treeitem"]};var Bf=Ut;function dx(e){var t=null,r=Bf.role[e];return r&&r.implicit&&(t=qt(r.implicit)),t}var fx=dx;function px(e){return!!Eu(e).length}var Qn=px;function Au(e){var t,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=r.popupRoles,n=de(e);if((t=a)!==null&&t!==void 0||(a=Kl["aria-haspopup"].values),!a.includes(n))return!1;var i=mx(e);if(qf(i))return!0;var o=e.props.id;if(!o)return!1;if(!e.actualNode)throw new Error("Unable to determine combobox popup without an actualNode");var u=ma(e.actualNode),s=u.querySelectorAll('[aria-owns~="'.concat(o,`"][role~="combobox"]:not(select), + [aria-controls~="`).concat(o,'"][role~="combobox"]:not(select)'));return Array.from(s).some(qf)}var qf=function(t){return t&&de(t)==="combobox"};function mx(e){for(;e=e.parent;)if(de(e,{noPresentational:!0})!==null)return e;return null}function hx(e){return e=se(e),_n(e)}var jf=hx;function vx(e){var t=ve.ariaRoles[e];return!t||!Array.isArray(t.requiredAttrs)?[]:ae(t.requiredAttrs)}var zf=vx;function gx(e){var t=ve.ariaRoles[e];return!t||!Array.isArray(t.requiredContext)?null:ae(t.requiredContext)}var Fu=gx;function bx(e){var t=ve.ariaRoles[e];return!t||!Array.isArray(t.requiredOwned)?null:ae(t.requiredOwned)}var Tu=bx;function yx(e,t){e=e instanceof Ge?e:se(e);var r,a,n=e.attr(t),i=ve.ariaAttrs[t];if(!i||i.allowEmpty&&(!n||n.trim()===""))return!0;switch(i.type){case"boolean":return["true","false"].includes(n.toLowerCase());case"nmtoken":return typeof n=="string"&&i.values.includes(n.toLowerCase());case"nmtokens":return a=Qe(n),a.reduce(function(s,c){return s&&i.values.includes(c)},a.length!==0);case"idref":try{var o=Je(e.actualNode);return!!(n&&o.getElementById(n))}catch{throw new TypeError("Cannot resolve id references for partial DOM")}case"idrefs":return Tt(e,t).some(function(s){return!!s});case"string":return n.trim()!=="";case"decimal":return r=n.match(/^[-+]?([0-9]*)\.?([0-9]*)$/),!!(r&&(r[1]||r[2]));case"int":var u=typeof i.minValue<"u"?i.minValue:-1/0;return/^[-+]?[0-9]+$/.test(n)&&parseInt(n)>=u}}var Vf=yx;function wx(e){var t=ve.ariaAttrs[e];return!!t}var ei=wx;function Dx(e){var t=[],r=_u(e),a=zt(e);return r.forEach(function(n){if(En(n)&&kf(n)&&!jf(n)){var i=Zn(n,a).some(function(o){return o!==null&&!!En(o)});i||t.push(n)}}),t.length?(this.relatedNodes(t),!1):!0}var _x=Dx;function xx(e,t){var r=e.getAttribute("scope").toLowerCase();return t.values.indexOf(r)!==-1}var Ex=xx,Cx=Ax;function Ax(e,t,r){if(r.children!==void 0){var a=r.attr("summary"),n=r.children.find(Fx),i=n?ne(Jt(n)):!1;return!i||!a?!1:ne(a).toLowerCase()===ne(i).toLowerCase()}}function Fx(e){return e.props.nodeName==="caption"}function Tx(e){return zc(L)?e.nodeName.toUpperCase()==="TH":!0}var Rx=Tx;function kx(e){var t=zt(e),r=t[0];return t.length<=1||r.length<=1||e.rows.length<=1?!0:r.reduce(function(a,n,i){return a||n!==r[i+1]&&r[i+1]!==void 0},!1)}var Sx=kx;function Ox(e,t,r){if(r.children){var a=r.children.find(function(i){var o=i.props;return o.nodeName==="title"});if(!a)return this.data({messageKey:"noTitle"}),!1;try{var n=Jt(a,{includeHidden:!0}).trim();if(n==="")return this.data({messageKey:"emptyTitle"}),!1}catch{return}return!0}}var Mx=Ox,Hf={};yt(Hf,{getAriaRolesByType:function(){return Jr},getAriaRolesSupportingNameFromContent:function(){return Cu},getElementSpec:function(){return wr},getElementsByContentType:function(){return oo},getGlobalAriaAttrs:function(){return br},implicitHtmlRoles:function(){return so}});function Nx(e,t,r){var a=ye(r);if(["presentation","none"].includes(a)&&["iframe","frame"].includes(r.props.nodeName)&&r.hasAttr("title"))return this.data({messageKey:"iframe",nodeName:r.props.nodeName}),!1;var n=de(r);if(["presentation","none"].includes(n))return this.data({role:n}),!0;if(!["presentation","none"].includes(a))return!1;var i=br().some(function(s){return r.hasAttr(s)}),o=Ne(r),u;return i&&!o?u="globalAria":!i&&o?u="focusable":u="both",this.data({messageKey:u,role:n}),!1}function Ix(e,t,r){var a=r.props.nodeName,n=(r.attr("type")||"").toLowerCase(),i=r.attr("value");return i&&this.data({messageKey:"has-label"}),a==="input"&&["submit","reset"].includes(n)?i===null:!1}var Px=Ix;function Lx(e){return ct(e)}var Bx=Lx;function qx(e,t){var r=t.cssProperty,a=t.absoluteValues,n=t.minValue,i=t.maxValue,o=t.normalValue,u=o===void 0?0:o,s=t.noImportant,c=t.multiLineOnly;if(!s&&e.style.getPropertyPriority(r)!=="important"||c&&!$c(e))return!0;var l={};typeof n=="number"&&(l.minValue=n),typeof i=="number"&&(l.maxValue=i);var d=e.style.getPropertyValue(r);if(["inherit","unset","revert","revert-layer"].includes(d))return this.data(le({value:d},l)),!0;var f=jx(e,{absoluteValues:a,cssProperty:r,normalValue:u});if(this.data(le({value:f},l)),typeof f=="number")return(typeof n!="number"||f>=n)&&(typeof i!="number"||f<=i)}function jx(e,t){var r=t.cssProperty,a=t.absoluteValues,n=t.normalValue,i=D.getComputedStyle(e),o=i.getPropertyValue(r);if(o==="normal")return n;var u=parseFloat(o);if(a)return u;var s=parseFloat(i.getPropertyValue("font-size")),c=Math.round(u/s*100)/100;return isNaN(c)?o:c}function zx(e,t,r){var a=r.props.nodeName;return["img","input","area"].includes(a)?r.hasAttr("alt"):!1}var Vx=zx;function Hx(){}var $x=Hx;function Ux(){var e=L.title;return!!ne(e)}var Gx=Ux;function Wx(e,t){var r=t.cssProperties.filter(function(a){if(e.style.getPropertyPriority(a)==="important")return a});return r.length>0?(this.data(r),!1):!0}var Yx=Wx;function Kx(e,t,r){try{return!!ne(ba(r))}catch{return}}var Xx=Kx;function Zx(e,t,r){return!!ne(ya(r))}var Jx=Zx;function Qx(e){var t=e.getAttribute("id").trim();if(!t)return!0;var r=Je(e),a=Array.from(r.querySelectorAll('[id="'.concat(Me(t),'"]'))).filter(function(n){return n!==e});return a.length&&this.relatedNodes(a),this.data(t),a.length===0}var e5=Qx;function t5(e){var t=[];return e.filter(function(r){return t.indexOf(r.data)===-1?(t.push(r.data),!0):!1})}var r5=t5;function a5(e,t,r){var a=ne(r.attr("title")).toLowerCase();return this.data(a),!0}var n5=a5;function i5(e){var t={};return e.forEach(function(r){t[r.data]=t[r.data]!==void 0?++t[r.data]:0}),e.forEach(function(r){r.result=!!t[r.data]}),e}var o5=i5;function u5(e){var t=to(e,"href");return t?Te(t)||void 0:!1}var s5=u5,l5=["alert","log","status"];function c5(e,t,r){this.data({isIframe:["iframe","frame"].includes(r.props.nodeName)});var a=oe.get("regionlessNodes",function(){return d5(t)});return!a.includes(r)}function d5(e){var t=$f(w._tree[0],e).map(function(r){for(;r.parent&&!r.parent._hasRegionDescendant&&r.parent.actualNode!==L.body;)r=r.parent;return r}).filter(function(r,a,n){return n.indexOf(r)===a});return t}function $f(e,t){var r=e.actualNode;if(de(e)==="button"||f5(e,t)||["iframe","frame"].includes(e.props.nodeName)||eu(e.actualNode)&&to(e.actualNode,"href")||!Te(r)){for(var a=e;a;)a._hasRegionDescendant=!0,a=a.parent;return["iframe","frame"].includes(e.props.nodeName)?[e]:[]}else return r!==L.body&&En(r,!0)?[e]:e.children.filter(function(n){var i=n.actualNode;return i.nodeType===1}).map(function(n){return $f(n,t)}).reduce(function(n,i){return n.concat(i)},[])}function f5(e,t){var r=e.actualNode,a=de(e),n=(r.getAttribute("aria-live")||"").toLowerCase().trim(),i=Jr("landmark");return!!(["assertive","polite"].includes(n)||l5.includes(a)||i.includes(a)||t.regionMatcher&&wa(e,t.regionMatcher))}function p5(e){var t=e.filter(function(r){return r.data.isIframe});return e.forEach(function(r){if(!(r.result||r.node.ancestry.length===1)){var a=r.node.ancestry.slice(0,-1),n=Fe(t),i;try{for(n.s();!(i=n.n()).done;){var o=i.value;if(mu(a,o.node.ancestry)){r.result=o.result;break}}}catch(u){n.e(u)}finally{n.f()}}}),t.forEach(function(r){r.result||(r.result=!0)}),e}var m5=p5;function h5(e){switch(e){case"lighter":return 100;case"normal":return 400;case"bold":return 700;case"bolder":return 900}return e=parseInt(e),isNaN(e)?400:e}function v5(e){for(var t=e,r=e.textContent.trim(),a=r;a===r&&t!==void 0;){var n=-1;if(e=t,e.children.length===0)return e;do n++,a=e.children[n].textContent.trim();while(a===""&&n+1t.fontSize)&&(!n.weight||e.fontWeight-n.weight>t.fontWeight)&&(!n.italic||e.isItalic&&!t.isItalic)},!1)}function g5(e,t,r){var a=Array.from(e.parentNode.children),n=a.indexOf(e);t=t||{};var i=t.margins||[],o=a.slice(n+1).find(function(v){return v.nodeName.toUpperCase()==="P"}),u=a.slice(0,n).reverse().find(function(v){return v.nodeName.toUpperCase()==="P"}),s=Ru(e),c=o?Ru(o):null,l=u?Ru(u):null,d=t.passLength,f=t.failLength,p=e.textContent.trim().length,m=o==null?void 0:o.textContent.trim().length;if(p>m*d||!c||!Uf(s,c,i))return!0;var h=Lr(r,"blockquote");if(!(h&&h.nodeName.toUpperCase()==="BLOCKQUOTE")&&!(l&&!Uf(s,l,i))&&!(p>m*f))return!1}var b5=g5,y5=/[;,\s]/,w5=/^[0-9.]+$/;function D5(e,t,r){var a=t||{},n=a.minDelay,i=a.maxDelay,o=(r.attr("content")||"").trim(),u=o.split(y5),s=P(u,1),c=s[0];if(!c.match(w5))return!0;var l=parseFloat(c);return this.data({redirectDelay:l}),typeof n=="number"&&l<=t.minDelay||typeof i=="number"&&l>t.maxDelay}function _5(e,t,r){var a=vt(r,"a[href]");return a.some(function(n){return/^#[^/!]/.test(n.attr("href"))})}var x5=_5,Gf={};yt(Gf,{aria:function(){return Of},color:function(){return Wf},dom:function(){return Hi},forms:function(){return ip},matches:function(){return wa},math:function(){return Rl},standards:function(){return Hf},table:function(){return Tf},text:function(){return ga},utils:function(){return yi}});var Wf={};yt(Wf,{Color:function(){return Re},centerPointOfRect:function(){return C5},elementHasImage:function(){return Cn},elementIsDistinct:function(){return Kf},filteredRectStack:function(){return R5},flattenColors:function(){return It},flattenShadowColors:function(){return Su},getBackgroundColor:function(){return La},getBackgroundStack:function(){return Ou},getContrast:function(){return Qr},getForegroundColor:function(){return ai},getOwnBackgroundColor:function(){return Er},getRectStack:function(){return Xf},getStackingContext:function(){return Nu},getStrokeColorsFromShadows:function(){return Mu},getTextShadowColors:function(){return ri},hasValidContrastRatio:function(){return Z5},incompleteData:function(){return Ke},parseTextShadows:function(){return Qf},stackingContextToColor:function(){return Pa}});function E5(e){if(!(e.left>D.innerWidth)&&!(e.top>D.innerHeight)){var t=Math.min(Math.ceil(e.left+e.width/2),D.innerWidth-1),r=Math.min(Math.ceil(e.top+e.height/2),D.innerHeight-1);return{x:t,y:r}}}var C5=E5;function Yf(e){return e.getPropertyValue("font-family").split(/[,;]/g).map(function(t){return t.trim().toLowerCase()})}function A5(e,t){var r=D.getComputedStyle(e);if(r.getPropertyValue("background-image")!=="none")return!0;var a=["border-bottom","border-top","outline"].reduce(function(u,s){var c=new Re;return c.parseString(r.getPropertyValue(s+"-color")),u||r.getPropertyValue(s+"-style")!=="none"&&parseFloat(r.getPropertyValue(s+"-width"))>0&&c.alpha!==0},!1);if(a)return!0;var n=D.getComputedStyle(t);if(Yf(r)[0]!==Yf(n)[0])return!0;var i=["text-decoration-line","text-decoration-style","font-weight","font-style","font-size"].reduce(function(u,s){return u||r.getPropertyValue(s)!==n.getPropertyValue(s)},!1),o=r.getPropertyValue("text-decoration");return o.split(" ").length<3&&(i=i||o!==n.getPropertyValue("text-decoration")),i}var Kf=A5;function F5(e){var t=Gl(e),r=wo(e);return!r||r.length<=1?[t]:r.some(function(a){return a===void 0})?null:(r.splice(0,0,t),r)}var Xf=F5;function T5(e){var t=Xf(e);if(t&&t.length===1)return t[0];if(t&&t.length>1){var r=t.shift(),a;return t.forEach(function(n,i){if(i!==0){var o=t[i-1],u=t[i];a=o.every(function(s,c){return s===u[c]})||r.includes(e)}}),a?t[0]:(Ke.set("bgColor","elmPartiallyObscuring"),null)}return Ke.set("bgColor","outsideViewport"),null}var R5=T5,k5=["hue","saturation","color","luminosity"],Zf={normal:function(t,r){return r},multiply:function(t,r){return r*t},screen:function(t,r){return t+r-t*r},overlay:function(t,r){return this["hard-light"](r,t)},darken:function(t,r){return Math.min(t,r)},lighten:function(t,r){return Math.max(t,r)},"color-dodge":function(t,r){return t===0?0:r===1?1:Math.min(1,t/(1-r))},"color-burn":function(t,r){return t===1?1:r===0?0:1-Math.min(1,(1-t)/r)},"hard-light":function(t,r){return r<=.5?this.multiply(t,2*r):this.screen(t,2*r-1)},"soft-light":function(t,r){if(r<=.5)return t-(1-2*r)*t*(1-t);var a=t<=.25?((16*t-12)*t+4)*t:Math.sqrt(t);return t+(2*r-1)*(a-t)},difference:function(t,r){return Math.abs(t-r)},exclusion:function(t,r){return t+r-2*t*r},hue:function(t,r){return r.setSaturation(t.getSaturation()).setLuminosity(t.getLuminosity())},saturation:function(t,r){return t.setSaturation(r.getSaturation()).setLuminosity(t.getLuminosity())},color:function(t,r){return r.setLuminosity(t.getLuminosity())},luminosity:function(t,r){return t.setLuminosity(r.getLuminosity())}};function It(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"normal",a=O5(t,e,r),n=ku(e.red,e.alpha,t.red,t.alpha,a.r*255),i=ku(e.green,e.alpha,t.green,t.alpha,a.g*255),o=ku(e.blue,e.alpha,t.blue,t.alpha,a.b*255),u=S5(e.alpha+t.alpha*(1-e.alpha),0,1);if(u===0)return new Re(n,i,o,u);var s=Math.round(n/u),c=Math.round(i/u),l=Math.round(o/u);return new Re(s,c,l,u)}function ku(e,t,r,a,n){return t*(1-a)*e+t*a*n+(1-t)*a*r}function S5(e,t,r){return Math.min(Math.max(t,e),r)}function O5(e,t,r){if(k5.includes(r))return Zf[r](e,t);var a=new Re;return["r","g","b"].forEach(function(n){a[n]=Zf[r](e[n],t[n])}),a}function Su(e,t){var r=e.alpha,a=(1-r)*t.red+r*e.red,n=(1-r)*t.green+r*e.green,i=(1-r)*t.blue+r*e.blue,o=e.alpha+t.alpha*(1-e.alpha);return new Re(a,n,i,o)}function Ou(e){for(var t=wo(e).map(function(n){return n=Md(n,e),n=M5(n),n}),r=0;r1&&a.alpha===0&&!Cn(L.documentElement)){t>1&&(r.splice(t,1),r.push(L.body));var n=r.indexOf(L.documentElement);n>0&&(r.splice(n,1),r.push(L.documentElement))}return r}function N5(e,t){if(e===t)return!0;if(e===null||t===null||e.length!==t.length)return!1;for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:{},r=t.ignoreEdgeCount,a=r===void 0?!1:r,n=L5(e),i=Object.entries(n).map(function(o){var u=P(o,2),s=u[0],c=u[1],l=Jf.filter(function(d){return c[d].length!==0}).length;return{colorStr:s,sides:c,edgeCount:l}});return!a&&i.some(function(o){var u=o.edgeCount;return u>1&&u<4})?null:i.map(B5).filter(function(o){return o!==null})}function L5(e){var t={},r=Fe(e),a;try{for(r.s();!(a=r.n()).done;){var n,i=a.value,o=i.colorStr,u=i.pixels;(n=t[o])!==null&&n!==void 0||(t[o]={top:[],right:[],bottom:[],left:[]});var s=t[o],c=P(u,2),l=c[0],d=c[1];l>ti?s.right.push(l):-l>ti&&s.left.push(-l),d>ti?s.bottom.push(d):-d>ti&&s.top.push(-d)}}catch(f){r.e(f)}finally{r.f()}return t}function B5(e){var t=e.colorStr,r=e.sides,a=e.edgeCount;if(a!==4)return null;var n=new Re;n.parseString(t);var i=0,o=!0;return Jf.forEach(function(u){i+=r[u].length/4,o&&(o=r[u].every(function(s){return s>P5}))}),o||(n.alpha=1-Math.pow(I5,i)),n}function Qf(e){var t={pixels:[]},r=e.trim(),a=[t];if(!r)return[];for(;r;){var n=r.match(/^[a-z]+(\([^)]+\))?/i)||r.match(/^#[0-9a-f]+/i),i=r.match(/^([0-9.-]+)px/i)||r.match(/^(0)/);if(n)he(!t.colorStr,"Multiple colors identified in text-shadow: ".concat(e)),r=r.replace(n[0],"").trim(),t.colorStr=n[0];else if(i){he(t.pixels.length<3,"Too many pixel units in text-shadow: ".concat(e)),r=r.replace(i[0],"").trim();var o=parseFloat((i[1][0]==="."?"0":"")+i[1]);t.pixels.push(o)}else if(r[0]===",")he(t.pixels.length>=2,"Missing pixel value in text-shadow: ".concat(e)),t={pixels:[]},a.push(t),r=r.substr(1).trim();else throw new Error("Unable to process text-shadows: ".concat(r))}return a.forEach(function(u){var s=u.pixels;s.length===2&&s.push(0)}),a}function ri(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.minRatio,a=t.maxRatio,n=t.ignoreEdgeCount,i=[],o=D.getComputedStyle(e),u=o.getPropertyValue("text-shadow");if(u==="none")return i;var s=o.getPropertyValue("font-size"),c=parseInt(s);he(isNaN(c)===!1,"Unable to determine font-size value ".concat(s));var l=[],d=Qf(u),f=Fe(d),p;try{for(f.s();!(p=f.n()).done;){var m=p.value,h=m.colorStr||o.getPropertyValue("color"),v=P(m.pixels,3),g=v[0],b=v[1],y=v[2],_=y===void 0?0:y;if(!(a&&_>=c*a)){if(r&&_0){var A=Mu(l,{ignoreEdgeCount:n});if(A===null)return null;i.push.apply(i,ae(A)),l.splice(0,l.length)}var R=q5({colorStr:h,offsetX:g,offsetY:b,blurRadius:_,fontSize:c});i.push(R)}}}catch(q){f.e(q)}finally{f.f()}if(l.length>0){var S=Mu(l,{ignoreEdgeCount:n});if(S===null)return null;i.push.apply(i,ae(S))}return i}function q5(e){var t=e.colorStr,r=e.offsetX,a=e.offsetY,n=e.blurRadius,i=e.fontSize;if(r>n||a>n)return new Re(0,0,0,0);var o=new Re;return o.parseString(t),o.alpha*=j5(n,i),o}function j5(e,t){if(e===0)return 1;var r=e/t;return .185/(r+.4)}function Nu(e,t){var r,a=se(e);if(a._stackingContext)return a._stackingContext;var n=[],i=new Map;return t=(r=t)!==null&&r!==void 0?r:Ou(e),t.forEach(function(o){var u,s=se(o),c=H5(s),l=s._stackingOrder.filter(function(p){var m=p.vNode;return!!m});l.forEach(function(p,m){var h,v=p.vNode,g=(h=l[m-1])===null||h===void 0?void 0:h.vNode,b=tp(i,v,g);m===0&&!i.get(v)&&n.unshift(b),i.set(v,b)});var d=(u=l[l.length-1])===null||u===void 0?void 0:u.vNode,f=tp(i,s,d);l.length||n.unshift(f),f.bgColor=c}),a._stackingContext=n,n}function Pa(e){var t;if(!((t=e.descendants)!==null&&t!==void 0&&t.length)){var r=e.bgColor;return r.alpha*=e.opacity,{color:r,blendMode:e.blendMode}}var a=e.descendants.reduce(z5,ep()),n=It(a,e.bgColor,e.descendants[0].blendMode);return n.alpha*=e.opacity,{color:n,blendMode:e.blendMode}}function z5(e,t){var r;e instanceof Re?r=e:r=Pa(e).color;var a=Pa(t).color;return It(a,r,t.blendMode)}function ep(e,t){var r;return{vNode:e,ancestor:t,opacity:parseFloat((r=e==null?void 0:e.getComputedStylePropertyValue("opacity"))!==null&&r!==void 0?r:1),bgColor:new Re(0,0,0,0),blendMode:V5(e==null?void 0:e.getComputedStylePropertyValue("mix-blend-mode")),descendants:[]}}function V5(e){return e||void 0}function tp(e,t,r){var a,n=e.get(r),i=(a=e.get(t))!==null&&a!==void 0?a:ep(t,n);return n&&r!==t&&!n.descendants.includes(i)&&n.descendants.unshift(i),i}function H5(e){var t=new Re;return t.parseString(e.getComputedStylePropertyValue("background-color")),t}function La(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:.1,a=se(e),n=a._cache.getBackgroundColor;if(n)return t.push.apply(t,ae(n.bgElms)),Ke.set("bgColor",n.incompleteData),n.bgColor;var i=$5(e,t,r);return a._cache.getBackgroundColor={bgColor:i,bgElms:t,incompleteData:Ke.get("bgColor")},i}function $5(e,t,r){var a,n,i=Ou(e);if(!i)return null;var o=yo(e),u=(a=ri(e,{minRatio:r,ignoreEdgeCount:!0}))!==null&&a!==void 0?a:[];u.length&&(u=[{color:u.reduce(Su)}]);for(var s=0;s=r.top&&u.bottom<=n&&u.left>=r.left&&u.right<=a})}function ap(e){return e||void 0}function U5(e,t){var r=[];if(!t){var a=L.documentElement,n=L.body,i=D.getComputedStyle(a),o=D.getComputedStyle(n),u=Er(i),s=Er(o),c=s.alpha!==0&&rp(n,e.getBoundingClientRect());(s.alpha!==0&&u.alpha===0||c&&s.alpha!==1)&&r.unshift({color:s,blendMode:ap(o.getPropertyValue("mix-blend-mode"))}),u.alpha!==0&&(!c||c&&s.alpha!==1)&&r.unshift({color:u,blendMode:ap(i.getPropertyValue("mix-blend-mode"))})}return r}function G5(e,t){if(!t||!e)return null;t.alpha<1&&(t=It(t,e));var r=e.getRelativeLuminance(),a=t.getRelativeLuminance();return(Math.max(a,r)+.05)/(Math.min(a,r)+.05)}var Qr=G5;function ai(e,t,r){for(var a,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},i=D.getComputedStyle(e),o=[function(){return Y5(i,n)},function(){return W5(i)},function(){return ri(e,{minRatio:0})}],u=[],s=0,c=o;so,contrastRatio:n,expectedContrastRatio:o}}var Z5=X5,ip={};yt(ip,{isAriaCombobox:function(){return Dc},isAriaListbox:function(){return wc},isAriaRange:function(){return _c},isAriaTextbox:function(){return yc},isDisabled:function(){return Ba},isNativeSelect:function(){return bc},isNativeTextbox:function(){return gc}});var J5=["fieldset","button","select","input","textarea"];function op(e){var t=e._isDisabled;if(typeof t=="boolean")return t;var r=e.props.nodeName,a=e.attr("aria-disabled");return J5.includes(r)&&e.hasAttr("disabled")?t=!0:a?t=a.toLowerCase()==="true":e.parent?t=op(e.parent):t=!1,e._isDisabled=t,t}var Ba=op;function Q5(e,t,r){var a=ga.accessibleTextVirtual(r),n=ga.sanitize(ga.removeUnicode(a,{emoji:!0,nonBmp:!0,punctuations:!0})).toLowerCase();if(n){var i={name:n,urlProps:Hi.urlPropsFromAttribute(e,"href")};return this.data(i),this.relatedNodes([e]),!0}}var eE=Q5;function up(e,t){if(!e||!t)return!1;var r=Object.getOwnPropertyNames(e),a=Object.getOwnPropertyNames(t);if(r.length!==a.length)return!1;var n=r.every(function(i){var o=e[i],u=t[i];return O(o)!==O(u)?!1:O(o)==="object"||O(u)==="object"?up(o,u):o===u});return n}function tE(e){if(e.length<2)return e;for(var t=e.filter(function(o){var u=o.result;return u!==void 0}),r=[],a={},n=function(u){var s,c=t[u],l=c.data,d=l.name,f=l.urlProps;if(a[d])return 1;var p=t.filter(function(h,v){var g=h.data;return g.name===d&&v!==u}),m=p.every(function(h){var v=h.data;return up(v.urlProps,f)});p.length&&!m&&(c.result=void 0),c.relatedNodes=[],(s=c.relatedNodes).push.apply(s,ae(p.map(function(h){return h.relatedNodes[0]}))),a[d]=p,r.push(c)},i=0;iu?r:a})}function gE(e){return e.filter(function(t){return St(t)==="widget"&&Ne(t)})}function cp(e,t){var r=e.boundingClientRect,a=t.boundingClientRect;return r.top>=a.top&&r.left>=a.left&&r.bottom<=a.bottom&&r.right<=a.right}function bE(e){return e.getComputedStylePropertyValue("pointer-events")}function ni(e){return{width:Math.round(e.width*10)/10,height:Math.round(e.height*10)/10}}function dp(e,t){return e.actualNode.contains(t.actualNode)&&!xt(t)}function qa(e){return e.map(function(t){var r=t.actualNode;return r})}var yE=.05;function wE(e,t,r){var a=(t==null?void 0:t.minOffset)||24;if(jt(a*10,r.boundingClientRect))return this.data({messageKey:"large",minOffset:a}),!0;var n=[],i=a,o=Fe(vn(r,a)),u;try{for(o.s();!(u=o.n()).done;){var s=u.value;if(!(St(s)!=="widget"||!Ne(s))){var c=DE(Sl(r,s,a/2))*2;c+yE>=a||(i=Math.min(i,c),n.push(s))}}}catch(l){o.e(l)}finally{o.f()}if(n.length===0)return this.data({closestOffset:i,minOffset:a}),!0;if(this.relatedNodes(n.map(function(l){var d=l.actualNode;return d})),!n.some(xt)){this.data({messageKey:"nonTabbableNeighbor",closestOffset:i,minOffset:a});return}return this.data({closestOffset:i,minOffset:a}),xt(r)?!1:void 0}function DE(e){return Math.round(e*10)/10}function _E(e,t,r){var a=t||{},n=a.scaleMinimum,i=n===void 0?2:n,o=a.lowerBound,u=o===void 0?!1:o,s=r.attr("content")||"";if(!s)return!0;var c=s.split(/[;,]/).reduce(function(d,f){var p=f.trim();if(!p)return d;var m=p.split("="),h=P(m,2),v=h[0],g=h[1];if(!v||!g)return d;var b=v.toLowerCase().trim(),y=g.toLowerCase().trim();return b==="maximum-scale"&&y==="yes"&&(y=1),b==="maximum-scale"&&parseFloat(y)<0||(d[b]=y),d},{});if(u&&c["maximum-scale"]&&parseFloat(c["maximum-scale"])-1&&l<1?(this.data("user-scalable"),!1):c["maximum-scale"]&&parseFloat(c["maximum-scale"])0;)l+=d*parseInt(c.pop(),10),d*=60;return parseFloat(l)}}var FE=AE;function TE(e,t){return t.isViolation?!1:void 0}var RE=TE,fp=" > ";function kE(e){var t={};return e.filter(function(r){var a=r.node.ancestry[r.node.ancestry.length-1]!=="html";if(a){var n=r.node.ancestry.flat(1/0).join(fp);return t[n]=r,!0}var i=r.node.ancestry.slice(0,r.node.ancestry.length-1).flat(1/0).join(fp);return t[i]&&(t[i].result=!0),!1})}var SE=kE;function OE(e,t,r){var a=vt(r,"track"),n=a.some(function(i){return(i.attr("kind")||"").toLowerCase()==="captions"});return n?!1:void 0}var ME=OE;function NE(e,t,r){var a=r.children;if(!a||!a.length)return!1;for(var n=!1,i=!1,o,u=0;u1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,a=[],n=[];if(r.children){for(var i=pp(r.children);i.length;){var o,u=i.shift(),s=u.vChild,c=u.nested;if(t.divGroups&&!c&&VE(s)){if(!s.children)return;var l=pp(s.children,!0);i.push.apply(i,ae(l));continue}var d=zE(s,c,t);d&&(n.includes(d)||n.push(d),(s==null||(o=s.actualNode)===null||o===void 0?void 0:o.nodeType)===1&&a.push(s.actualNode))}return n.length===0?!1:(this.data({values:n.join(", ")}),this.relatedNodes(a),!0)}}function zE(e,t,r){var a=r.validRoles,n=a===void 0?[]:a,i=r.validNodeNames,o=i===void 0?[]:i,u=e.props,s=u.nodeName,c=u.nodeType,l=u.nodeValue,d=t?"div > ":"";if(c===3&&l.trim()!=="")return d+"#text";if(c!==1||!Te(e))return!1;var f=ye(e);return f?n.includes(f)?!1:d+"[role=".concat(f,"]"):o.includes(s)?!1:d+s}function VE(e){return e.props.nodeName==="div"&&ye(e)===null}function pp(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return e.map(function(r){return{vChild:r,nested:t}})}function HE(e){var t=We(e),r=t.nodeName.toUpperCase(),a=ye(t);return r==="DIV"&&["presentation","none",null].includes(a)&&(t=We(t),r=t.nodeName.toUpperCase(),a=ye(t)),r!=="DL"?!1:!!(!a||["presentation","none","list"].includes(a))}var $E=HE;function UE(e,t,r){var a=Ar(r.attr("lang")),n=Ar(r.attr("xml:lang"));return a===n}var GE=UE;function WE(e,t,r){var a=[];return t.attributes.forEach(function(n){var i=r.attr(n);if(typeof i=="string"){var o=Ar(i),u=t.value?!t.value.map(Ar).includes(o):!Xn(o);(o!==""&&u||i!==""&&!ne(i))&&a.push(n+'="'+r.attr(n)+'"')}}),!a.length||r.props.nodeName!=="html"&&!_o(r)?!1:(this.data(a),!0)}var YE=WE;function Iu(e){return(e||"").trim()!==""}function KE(e,t,r){var a=typeof L<"u"?Ja(L):!1;if(t.attributes.includes("xml:lang")&&t.attributes.includes("lang")&&Iu(r.attr("xml:lang"))&&!Iu(r.attr("lang"))&&!a)return this.data({messageKey:"noXHTML"}),!1;var n=t.attributes.some(function(i){return Iu(r.attr(i))});return n?!0:(this.data({messageKey:"noLang"}),!1)}var XE=KE;function ZE(e,t,r){var a=de(e),n=Ye(r);return n=n?n.toLowerCase():null,this.data({role:a,accessibleText:n}),this.relatedNodes([e]),!0}var JE=ZE;function QE(e){var t=[];return e.filter(function(r){var a=function(o){return r.data.role===o.data.role&&r.data.accessibleText===o.data.accessibleText},n=t.find(a);return n?(n.result=!1,n.relatedNodes.push(r.relatedNodes[0]),!1):(t.push(r),r.relatedNodes=[],!0)})}var eC=QE;function tC(e,t,r){var a=xn(r),n=wn(r),i=r.attr("aria-describedby");return!a&&!!(n||i)}var rC=tC;function aC(e){var t=Me(e.getAttribute("id")),r=e.parentNode,a=Je(e);a=a.documentElement||a;var n=Array.from(a.querySelectorAll('label[for="'.concat(t,'"]')));for(n.length&&(n=n.filter(function(u){return!Zt(u)}));r;)r.nodeName.toUpperCase()==="LABEL"&&n.indexOf(r)===-1&&n.push(r),r=r.parentNode;if(this.relatedNodes(n),n.length>1){var i=n.filter(function(u){return Te(u)});if(i.length>1)return;var o=Tt(e,"aria-labelledby");return o.includes(i[0])?!1:void 0}return!1}var nC=aC;function mp(e,t){var r=hp(t),a=hp(e);return!r||!a?!1:r.includes(a)}function hp(e){var t=_a(e,{emoji:!0,nonBmp:!0,punctuations:!0});return ne(t)}function iC(e,t,r){var a,n=t==null?void 0:t.pixelThreshold,i=(a=t==null?void 0:t.occurrenceThreshold)!==null&&a!==void 0?a:t==null?void 0:t.occuranceThreshold,o=gr(e).toLowerCase();if(!(bo(o)<1)){var u=ne(Jt(r,{subtreeDescendant:!0,ignoreIconLigature:!0,pixelThreshold:n,occurrenceThreshold:i})).toLowerCase();return u?bo(u)<1?mp(u,o)?!0:void 0:mp(u,o):!0}}var oC=iC;function uC(e,t,r){try{var a=lt(r,"label");if(a){var n=ne(Ye(a,{inControlContext:!0,startNode:r}));return a.actualNode&&this.relatedNodes([a.actualNode]),this.data({implicitLabel:n}),!!n}return!1}catch{return}}var sC=uC;function lC(e,t,r){if(r.hasAttr("id")){if(!r.actualNode)return;var a=Je(e),n=Me(e.getAttribute("id")),i=a.querySelector('label[for="'.concat(n,'"]'));if(i&&!Te(i)){var o;try{o=Ye(r).trim()}catch{return}var u=o==="";return u}}return!1}var cC=lC;function dC(e,t,r){var a=xn(r),n=e.getAttribute("title");if(!a)return!1;if(!n&&(n="",e.getAttribute("aria-describedby"))){var i=Tt(e,"aria-describedby");n=i.map(function(o){return o?gr(o):""}).join("")}return ne(n)===ne(a)}var fC=dC;function pC(e,t,r){var a=this;if(!r.attr("id"))return!1;if(r.actualNode){var n=Je(r.actualNode),i=Me(r.attr("id")),o=Array.from(n.querySelectorAll('label[for="'.concat(i,'"]')));if(this.relatedNodes(o),!o.length)return!1;try{return o.some(function(u){if(ct(u)){var s=ne(gr(u,{inControlContext:!0,startNode:r}));return a.data({explicitLabel:s}),!!s}else return!0})}catch{return}}}var mC=pC;function hC(e,t,r){if(["none","presentation"].includes(de(r)))return!1;var a=lt(r,t.parentSelector);if(!a)return!1;var n=kt(a,!0).toLowerCase();return n===""?!1:n===Ye(r).toLowerCase()}var vC=hC;function gC(e,t,r){var a=r.attr("alt"),n=/^\s+$/;return typeof a=="string"&&n.test(a)}var bC=gC;function yC(e,t,r){var a=parseInt(r.attr("tabindex"),10);return isNaN(a)?!0:a<=0}var wC=yC;function DC(e,t,r){if(r.children)try{var a=vp(r);if(!a.length)return!0;var n=a.filter(_C);return n.length>0?(this.data({messageKey:"notHidden"}),this.relatedNodes(n)):this.relatedNodes(a),!1}catch{return}}function vp(e){if(!e.children){if(e.props.nodeType===1)throw new Error("Cannot determine children");return[]}var t=[];return e.children.forEach(function(r){St(r)==="widget"&&Ne(r)?t.push(r):t.push.apply(t,ae(vp(r)))}),t}function _C(e){var t=parseInt(e.attr("tabindex"),10);return!isNaN(t)&&t<0}function xC(e){var t=Jr("landmark"),r=We(e),a=de(e);for(this.data({role:a});r;){var n=r.getAttribute("role");if(!n&&r.nodeName.toUpperCase()!=="FORM"&&(n=Rt(r)),n&&t.includes(n)&&!(n==="main"&&a==="complementary"))return!1;r=We(r)}return!0}var EC=xC;function CC(e,t,r){if(r.children)try{return!r.children.some(function(a){return gp(a)})}catch{return}}function gp(e){if(xt(e))return!0;if(!e.children){if(e.props.nodeType===1)throw new Error("Cannot determine children");return!1}return e.children.some(function(t){return gp(t)})}function AC(e,t,r){var a=["button","fieldset","input","select","textarea"],n=r.tabbableElements;if(!n||!n.length)return!0;var i=n.filter(function(o){return!a.includes(o.props.nodeName)});return this.relatedNodes(i.map(function(o){return o.actualNode})),i.length===0||Ea()?!0:i.every(function(o){var u=o.getComputedStylePropertyValue("pointer-events"),s=parseInt(o.getComputedStylePropertyValue("width")),c=parseInt(o.getComputedStylePropertyValue("height"));return o.actualNode.onfocus||(s===0||c===0)&&u==="none"})?void 0:!1}var FC=AC;function TC(e,t,r){var a=r.attr("tabindex"),n=Ne(r)&&a>-1;if(!n)return!1;try{return!Ye(r)}catch{return}}var RC=TC;function kC(e,t,r){var a=r.tabbableElements.map(function(n){var i=n.actualNode;return i});if(!a||!a.length)return!0;if(Ea()){this.relatedNodes(a);return}return!0}var SC=kC;function OC(e,t,r){if(r.hasAttr("contenteditable")&&a(r))return!0;return xt(r);function a(n){var i=n.attr("contenteditable");if(i==="true"||i==="")return!0;if(i==="false")return!1;var o=lt(r.parent,"[contenteditable]");return o?a(o):!1}}var MC=OC;function NC(e,t,r){var a=["button","fieldset","input","select","textarea"],n=r.tabbableElements;if(!n||!n.length)return!0;var i=n.filter(function(o){return a.includes(o.props.nodeName)});return this.relatedNodes(i.map(function(o){return o.actualNode})),i.length===0||Ea()?!0:i.every(function(o){var u=o.getComputedStylePropertyValue("pointer-events"),s=parseInt(o.getComputedStylePropertyValue("width")),c=parseInt(o.getComputedStylePropertyValue("height"));return o.actualNode.onfocus||(s===0||c===0)&&u==="none"})?void 0:!1}var IC=NC;function PC(e,t,r){var a=r.tabbableElements;if(!a)return!1;var n=a.filter(function(i){return i!==r});return n.length>0}var LC=PC;function BC(e,t,r){return Zt(r)||(this.data(r.attr("accesskey")),this.relatedNodes([e])),!0}var qC=BC;function jC(e){var t={};return e.filter(function(r){if(!r.data)return!1;var a=r.data.toUpperCase();return t[a]?(t[a].relatedNodes.push(r.relatedNodes[0]),!1):(t[a]=r,r.relatedNodes=[],!0)}).map(function(r){return r.result=!!r.relatedNodes.length,r})}var zC=jC;function VC(e,t,r){if(!t||!t.selector||typeof t.selector!="string")throw new TypeError("page-no-duplicate requires options.selector to be a string");var a="page-no-duplicate;"+t.selector;if(oe.get(a)){this.data("ignored");return}oe.set(a,!0);var n=Nt(w._tree[0],t.selector,function(i){return Te(i)});return typeof t.nativeScopeFilter=="string"&&(n=n.filter(function(i){return i.actualNode.hasAttribute("role")||!Lr(i,t.nativeScopeFilter)})),typeof t.role=="string"&&(n=n.filter(function(i){return de(i)===t.role})),this.relatedNodes(n.filter(function(i){return i!==r}).map(function(i){return i.actualNode})),n.length<=1}var HC=VC;function $C(e){return e.filter(function(t){return t.data!=="ignored"})}var UC=$C;function GC(e,t,r){return wa(r,t.matcher)}var WC=GC;function YC(e,t,r){try{return ne(Jt(r))!==""}catch{return}}function KC(e,t,r){if(!t||!t.selector||typeof t.selector!="string")throw new TypeError("has-descendant requires options.selector to be a string");if(t.passForModal&&Ea())return!0;var a=Nt(r,t.selector,function(n){return Te(n)});return this.relatedNodes(a.map(function(n){return n.actualNode})),a.length>0}var XC=KC;function ZC(e){var t=e.some(function(r){return r.result===!0});return t&&e.forEach(function(r){r.result=!0}),e}var JC=ZC;function QC(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;if(!t.attribute||typeof t.attribute!="string")throw new TypeError("attr-non-space-content requires options.attribute to be a string");if(!r.hasAttr(t.attribute))return this.data({messageKey:"noAttr"}),!1;var a=r.attr(t.attribute),n=!ne(a);return n?(this.data({messageKey:"emptyAttr"}),!1):!0}var eA=QC;function tA(e,t,r){var a=r.attr("autocomplete")||"";return Oc(a,t)}var rA=tA;function aA(e,t,r){if(r.props.nodeName!=="input")return!0;var a=["text","search","number","tel"],n=["text","search","url"],i={bday:["text","search","date"],email:["text","search","email"],username:["text","search","email"],"street-address":["text"],tel:["text","search","tel"],"tel-country-code":["text","search","tel"],"tel-national":["text","search","tel"],"tel-area-code":["text","search","tel"],"tel-local":["text","search","tel"],"tel-local-prefix":["text","search","tel"],"tel-local-suffix":["text","search","tel"],"tel-extension":["text","search","tel"],"cc-number":a,"cc-exp":["text","search","month","tel"],"cc-exp-month":a,"cc-exp-year":a,"cc-csc":a,"transaction-amount":a,"bday-day":a,"bday-month":a,"bday-year":a,"new-password":["text","search","password"],"current-password":["text","search","password"],url:n,photo:n,impp:n};O(t)==="object"&&Object.keys(t).forEach(function(d){i[d]||(i[d]=[]),i[d]=i[d].concat(t[d])});var o=r.attr("autocomplete"),u=o.split(/\s+/g).map(function(d){return d.toLowerCase()}),s=u[u.length-1];if(Dr.stateTerms.includes(s))return!0;var c=i[s],l=r.hasAttr("type")?ne(r.attr("type")).toLowerCase():"text";return l=Kn().includes(l)?l:"text",typeof c>"u"?l==="text":c.includes(l)}var nA=aA,iA=["block","list-item","table","flex","grid","inline-block"];function oA(e){if(bp(e))return!1;for(var t=We(e);t&&t.nodeType===1&&!bp(t);)t=We(t);if(t){if(this.relatedNodes([t]),Kf(e,t))return!0;if(uA(e)){this.data({messageKey:"pseudoContent"});return}return!1}}function bp(e){var t=D.getComputedStyle(e).getPropertyValue("display");return iA.indexOf(t)!==-1||t.substr(0,6)==="table-"}function uA(e){for(var t=0,r=["before","after"];t=r)return!0;var l=u&&s?yp(u,s):void 0;if(l&&(l=Math.floor(l*100)/100),l&&l>=r)return!0;if(!l){var d,f=(d=Ke.get("bgColor"))!==null&&d!==void 0?d:"bgContrast";this.data({messageKey:f}),Ke.clear();return}if(c)return a&&c===1&&l===1?!0:c===1&&l>1?(this.data({messageKey:"bgContrast",contrastRatio:l,requiredContrastRatio:r,nodeBackgroundColor:u?u.toHexString():void 0,parentBackgroundColor:s?s.toHexString():void 0}),!1):(this.data({messageKey:"fgContrast",contrastRatio:c,requiredContrastRatio:r,nodeColor:i?i.toHexString():void 0,parentColor:o?o.toHexString():void 0}),!1)}}var cA=lA;function dA(e,t,r){var a=t.ignoreUnicode,n=t.ignoreLength,i=t.ignorePseudo,o=t.boldValue,u=t.boldTextPt,s=t.largeTextPt,c=t.contrastRatio,l=t.shadowOutlineEmMax,d=t.pseudoSizeThreshold;if(!ct(e))return this.data({messageKey:"hidden"}),!0;var f=kt(r,!1,!0);if(a&&pA(f)){this.data({messageKey:"nonBmp"});return}var p=D.getComputedStyle(e),m=parseFloat(p.getPropertyValue("font-size")),h=p.getPropertyValue("font-weight"),v=parseFloat(h)>=o||h==="bold",g=Math.ceil(m*72)/96,b=v&&gre?"shadowOnBgColor":"fgOnShadowColor")}var N=z>_;if(typeof A=="number"&&(typeof z!="number"||zR))return this.data({contrastRatio:z}),!0;var Q=Math.floor(z*100)/100,C;k===null?C=Ke.get("bgColor"):N||(C=U);var G=Q===1,j=f.length===1;if(G?C=Ke.set("bgColor","equalRatio"):!N&&j&&!n&&(C="shortTextContent"),this.data({fgColor:V?V.toHexString():void 0,bgColor:k?k.toHexString():void 0,contrastRatio:Q,fontSize:"".concat((m*72/96).toFixed(1),"pt (").concat(m,"px)"),fontWeight:v?"bold":"normal",messageKey:C,expectedContrastRatio:_+":1",shadowColor:J?J.toHexString():void 0}),V===null||k===null||G||j&&!n&&!N){C=null,Ke.clear(),this.relatedNodes($);return}return N||this.relatedNodes($),N}function fA(e,t){var r=t.pseudoSizeThreshold,a=r===void 0?.25:r,n=t.ignorePseudo,i=n===void 0?!1:n;if(!i){var o=e.boundingClientRect,u=o.width*o.height*a;do{var s=Dp(e.actualNode,":before"),c=Dp(e.actualNode,":after");if(s+c>u)return e}while(e=e.parent)}}var Dp=ze(function(t,r){var a=D.getComputedStyle(t,r),n=function(s,c){return a.getPropertyValue(s)===c};if(n("content","none")||n("display","none")||n("visibility","hidden")||n("position","absolute")===!1||Er(a).alpha===0&&n("background-image","none"))return 0;var i=_p(a.getPropertyValue("width")),o=_p(a.getPropertyValue("height"));return i.unit!=="px"||o.unit!=="px"?i.value===0||o.value===0?0:1/0:i.value*o.value});function pA(e){var t={nonBmp:!0},r=vo(e,t),a=ne(_a(e,t))==="";return r&&a}function _p(e){var t=/^([0-9.]+)([a-z]+)$/i,r=e.match(t)||[],a=P(r,3),n=a[1],i=n===void 0?"":n,o=a[2],u=o===void 0?"":o;return{value:parseFloat(i),unit:u.toLowerCase()}}var mA={ARTICLE:!0,ASIDE:!0,NAV:!0,SECTION:!0},hA={application:!0,article:!0,banner:!1,complementary:!0,contentinfo:!0,form:!0,main:!0,navigation:!0,region:!0,search:!1};function vA(e){var t=e.nodeName.toUpperCase();return mA[t]||!1}function gA(e,t){var r=ye(e);return r&&(hA[r]||t.roles.includes(r))||!1}function bA(e,t){return gA(e,t)||vA(e)}var yA=bA;function wA(e,t,r){var a=de(r,{dpub:!0,fallback:!0}),n=io(a);return n&&this.data(a),n}var DA=wA;function _A(e,t,r){var a=de(r,{noImplicit:!0});this.data(a);var n,i;try{n=ne(po(r)).toLowerCase(),i=ne(Ye(r)).toLowerCase()}catch{return}if(!i&&!n)return!1;if(!(!i&&n)&&i.includes(n))return!1}var xA=_A;function EA(e,t,r){return Ne(r)}var CA=EA;function AA(e,t,r){var a=Qe(r.attr("role")),n=a.every(function(i){return!jr(i,{allowAbstract:!0})});return n?(this.data(a),!0):!1}var FA=AA;function TA(e){var t=e.getAttribute("role");if(t===null)return!1;var r=St(t);return r==="widget"||r==="composite"}var RA=TA;function kA(e,t,r){var a=br().filter(function(n){return r.hasAttr(n)});return this.data(a),a.length>0}var SA=kA;function OA(e,t){var r=Rt(e);return!r&&t.length===2&&t.includes("none")&&t.includes("presentation")}function MA(e,t,r){var a=Qe(r.attr("role"));return a.length<=1?!1:OA(r,a)?void 0:!0}var NA=MA;function IA(e,t,r){var a=de(r,{dpub:!0,fallback:!0}),n=ve.ariaRoles[a];return n!=null&&n.deprecated?(this.data(a),!0):!1}function PA(e,t,r){var a,n=(a=r.attr("aria-brailleroledescription"))!==null&&a!==void 0?a:"";if(ne(n)==="")return!0;var i=r.attr("aria-roledescription");return typeof i!="string"?(this.data({messageKey:"noRoleDescription"}),!1):ne(i)===""?(this.data({messageKey:"emptyRoleDescription"}),!1):!0}function LA(e,t,r){var a,n=(a=r.attr("aria-braillelabel"))!==null&&a!==void 0?a:"";if(!n.trim())return!0;try{return ne(Ye(r))!==""}catch{return}}function BA(e,t,r){t=Array.isArray(t.value)?t.value:[];var a="",n="",i=[],o=/^aria-/,u=["aria-errormessage"],s={"aria-controls":function(){return r.attr("aria-expanded")!=="false"&&r.attr("aria-selected")!=="false"},"aria-current":function(l){l||(a='aria-current="'.concat(r.attr("aria-current"),'"'),n="ariaCurrent")},"aria-owns":function(){return r.attr("aria-expanded")!=="false"},"aria-describedby":function(l){l||(a='aria-describedby="'.concat(r.attr("aria-describedby"),'"'),n=w._tree&&w._tree[0]._hasShadowRoot?"noIdShadow":"noId")},"aria-labelledby":function(l){l||(a='aria-labelledby="'.concat(r.attr("aria-labelledby"),'"'),n=w._tree&&w._tree[0]._hasShadowRoot?"noIdShadow":"noId")}};if(r.attrNames.forEach(function(c){if(!(u.includes(c)||t.includes(c)||!o.test(c))){var l,d=r.attr(c);try{l=Vf(r,c)}catch{a="".concat(c,'="').concat(d,'"'),n="idrefs";return}(!s[c]||s[c](l))&&!l&&(d===""&&!qA(c)?(a=c,n="empty"):i.push("".concat(c,'="').concat(d,'"')))}}),i.length)return this.data(i),!1;if(a){this.data({messageKey:n,needsReview:a});return}return!0}function qA(e){var t;return((t=ve.ariaAttrs[e])===null||t===void 0?void 0:t.type)==="string"}function jA(e,t,r){t=Array.isArray(t.value)?t.value:[];var a=[],n=/^aria-/;return r.attrNames.forEach(function(i){t.indexOf(i)===-1&&n.test(i)&&!ei(i)&&a.push(i)}),a.length?(this.data(a),!1):!0}var zA=jA;function VA(e,t,r){var a=r.attrNames.filter(function(n){var i=ve.ariaAttrs[n];if(!ei(n))return!1;var o=i.unsupported;return O(o)!=="object"?!!o:!wa(e,o.exceptions)});return a.length?(this.data(a),!0):!1}var HA=VA;function $A(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,a=de(r),n=t.supportedRoles||[];if(n.includes(a))return!0;if(!(a&&a!=="presentation"&&a!=="none"))return!1}var UA=$A;function xp(e,t,r,a){var n=ye(e);if(r||(r=Fu(n)),!r)return null;for(var i=r.includes("group"),o=a?e:e.parent;o;){var u=de(o,{noPresentational:!0});if(!u)o=o.parent;else if(u==="group"&&i)t.includes(n)&&r.push(n),r=r.filter(function(s){return s!=="group"}),o=o.parent;else return r.includes(u)?null:r}return r}function GA(e){for(var t=[],r=null;e;){if(e.getAttribute("id")){var a=Me(e.getAttribute("id")),n=Je(e);r=n.querySelector("[aria-owns~=".concat(a,"]")),r&&t.push(r)}e=e.parentElement}return t.length?t:null}function WA(e,t,r){var a=t&&Array.isArray(t.ownGroupRoles)?t.ownGroupRoles:[],n=xp(r,a);if(!n)return!0;var i=GA(e);if(i){for(var o=0,u=i.length;o0:xa(t,!1,!0)}function t3(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,a=ye(r),n=r.attrNames,i=zf(a);if(Array.isArray(t[a])&&(i=Na(t[a],i)),!a||!n.length||!i.length||r3(r,a)||n3(r,a))return!0;var o=wr(r),u=i.filter(function(s){return!r.attr(s)&&!a3(o,s)});return u.length?(this.data(u),!1):!0}function r3(e,t){return t==="separator"&&!Ne(e)}function a3(e,t){var r;return((r=e.implicitAttrs)===null||r===void 0?void 0:r[t])!==void 0}function n3(e,t){return t==="combobox"&&e.attr("aria-expanded")==="false"}function i3(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,a=(t==null?void 0:t.elementsAllowedAriaLabel)||[],n=r.props.nodeName,i=de(r,{chromium:!0}),o=o3(i,n,a),u=o.filter(function(l){return r.attrNames.includes(l)?ne(r.attr(l))!=="":!1});if(u.length===0)return!1;var s=r.hasAttr("role")?"hasRole":"noRole";s+=u.length>1?"Plural":"Singular",this.data({role:i,nodeName:n,messageKey:s,prohibited:u});var c=Jt(r,{subtreeDescendant:!0});if(ne(c)==="")return!0}function o3(e,t,r){var a=ve.ariaRoles[e];return a?a.prohibitedAttrs||[]:e||r.includes(t)?[]:["aria-label","aria-labelledby"]}function u3(e,t,r){var a=r.attr("aria-level"),n=parseInt(a,10);if(!(n>6))return!0}var s3=u3;function l3(e,t,r){return r.attr("aria-hidden")!=="true"}var c3=l3;function d3(e,t,r){t=Array.isArray(t)?t:[];var a=r.attr("aria-errormessage"),n=r.hasAttr("aria-errormessage"),i=r.attr("aria-invalid"),o=r.hasAttr("aria-invalid");if(!o||i==="false")return!0;function u(s){if(s.trim()==="")return ve.ariaAttrs["aria-errormessage"].allowEmpty;var c;try{c=s&&Tt(r,"aria-errormessage")[0]}catch{this.data({messageKey:"idrefs",values:Qe(s)});return}if(c)return Te(c)?c.getAttribute("role")==="alert"||c.getAttribute("aria-live")==="assertive"||c.getAttribute("aria-live")==="polite"||Qe(r.attr("aria-describedby")).indexOf(s)>-1:(this.data({messageKey:"hidden",values:Qe(s)}),!1)}return t.indexOf(a)===-1&&n?(this.data(Qe(a)),u.call(this,a)):!0}function Ep(e){var t,r,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=a.invalidTableRowAttrs,i=arguments.length>2?arguments[2]:void 0,o=(t=n==null||(r=n.filter)===null||r===void 0?void 0:r.call(n,function(l){return i.hasAttr(l)}))!==null&&t!==void 0?t:[];if(o.length===0)return!0;var u=f3(i),s=u&&de(u);if(!s||s==="treegrid")return!0;var c="row".concat(o.length>1?"Plural":"Singular");return this.data({messageKey:c,invalidAttrs:o,ownerRole:s}),!1}function f3(e){if(e.parent){var t='table:not([role]), [role~="treegrid"], [role~="table"], [role~="grid"]';return lt(e,t)}}function Cp(e,t,r){var a=r.props,n=a.nodeName,i=a.type,o=m3(r.attr("aria-checked"));if(n!=="input"||i!=="checkbox"||!o)return!0;var u=p3(r);return o===u?!0:(this.data({messageKey:"checkbox",checkState:u}),!1)}function p3(e){return e.props.indeterminate?"mixed":e.props.checked?"true":"false"}function m3(e){return e?(e=e.toLowerCase(),["mixed","true"].includes(e)?e:"false"):""}var Ap={row:Ep,checkbox:Cp};function h3(e,t,r){var a=de(r);return Ap[a]?Ap[a].call(this,e,t,r):!0}function v3(e,t,r){return r.attr("aria-busy")==="true"}function g3(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,a=t.allowImplicit,n=a===void 0?!0:a,i=t.ignoredTags,o=i===void 0?[]:i,u=r.props.nodeName;if(o.map(function(c){return c.toLowerCase()}).includes(u))return!0;var s=Pf(r,n);return s.length?(this.data(s),Te(r)?!1:void 0):!0}var b3=g3;function y3(e,t,r){var a=[],n=de(r),i=Mf(n);Array.isArray(t[n])&&(i=Na(t[n].concat(i)));var o=Fe(r.attrNames),u;try{for(o.s();!(u=o.n()).done;){var s=u.value;ei(s)&&!i.includes(s)&&a.push(s)}}catch(c){o.e(c)}finally{o.f()}if(!a.length)return!0;if(this.data(a.map(function(c){return c+'="'+r.attr(c)+'"'})),!(!n&&!fu(r)&&!Ne(r)))return!1}function w3(e,t,r){var a=Qe(r.attr("role")).filter(function(n){return St(n)==="abstract"});return a.length>0?(this.data(a),!0):!1}var D3=w3;function _3(e){var t=Ar(e.getAttribute("lang")),r=Ar(e.getAttribute("xml:lang"));return Xn(t)&&Xn(r)}var x3=_3;function E3(e){return e.ownerDocument.defaultView.self===e.ownerDocument.defaultView.top}var C3=E3;function A3(e,t){try{var r=t.props.nodeName;return r==="svg"?!0:!!lt(t,"svg")}catch{return!1}}var Pu=A3;function F3(e,t){return T3.every(function(r){return r(e,t)})}var T3=[function(e,t){return Fp(t)},function(e,t){return R3(t)},function(e,t){return!Pu(e,t)},function(e,t){return Ne(t)},function(e,t){return xt(t)||!k3(t)},function(e){return!xo(e,{noLengthCompare:!0})}];function Fp(e){return St(e)==="widget"}function R3(e){return e.props.nodeName!=="area"}var k3=ze(function e(t){return t!=null&&t.parent?Fp(t.parent)&&xt(t.parent)?!0:e(t.parent):!1});function S3(e,t){var r=de(t);return["treegrid","grid","table"].includes(r)}function O3(e){return eu(e)&&dn(e)}var M3=O3;function N3(e,t){return $t(e,13)!==void 0&&Au(t)===!1&&I3(t)}function I3(e){return vt(e,"*").some(function(t){return xa(t,!0,!0)})}function P3(e,t){return Rt(t,{chromiumRoles:!0})!==null}var L3=P3;function B3(e){var t=Array.from(e.parentNode.childNodes),r=e.textContent.trim(),a=/[.!?:;](?![.!?:;])/g;if(r.length===0||(r.match(a)||[]).length>=2)return!1;var n=t.slice(t.indexOf(e)+1).filter(function(i){return i.nodeName.toUpperCase()==="P"&&i.textContent.trim()!==""});return n.length!==0}var q3=B3;function j3(e,t){var r=ye(t);if(!r||["none","presentation"].includes(r))return!0;var a=Xl[r]||{},n=a.accessibleNameRequired;return!!(n||Ne(t))}var Tp=j3,z3=function(t,r){return[Tp,V3].every(function(a){return a(t,r)})};function V3(e){var t;if(!(e!=null&&(t=e.ownerDocument)!==null&&t!==void 0&&t.createRange))return!0;var r=e.ownerDocument.createRange();return r.setStart(e,0),r.setEnd(e,e.childNodes.length),r.getClientRects().length===0}function H3(e,t){return t.props.nodeName!=="html"}var $3=H3;function U3(e,t){return!t.attr("role")}var G3=U3;function W3(e,t){var r=parseInt(t.attr("tabindex"),10);return isNaN(r)||r>=0}var Y3=W3;function K3(e,t){var r=wr(t),a=r.namingMethods;return!(a&&a.length!==0||ye(t)==="combobox"&&vt(t,'input:not([type="hidden"])').length||Au(t,{popupRoles:["listbox"]}))}var X3=K3;function Z3(e,t){return!(!t.hasAttr("role")||!t.attr("role").trim())}var J3=Z3;function Q3(e){return!(!e.currentSrc||e.hasAttribute("paused")||e.hasAttribute("muted"))}var eF=Q3;function tF(e,t){var r=de(t);return r?!!ve.ariaRoles[r].childrenPresentational:!1}var rF=tF;function aF(e){var t=ne(e.innerText),r=e.getAttribute("role");return r&&r!=="link"||!t||!ct(e)?!1:xo(e)}var nF=aF;function iF(e){return!Jn(e)&&!Ne(e)}var oF=iF,uF=["article","aside","main","nav","section"].join(",");function sF(e,t){return lF(t)&&Te(t)}function lF(e){var t=Jr("landmark"),r=de(e);if(!r)return!1;var a=e.props.nodeName;if(a==="header"||a==="footer")return cF(e);if(a==="section"||a==="form"){var n=Ye(e);return!!n}return t.indexOf(r)>=0||r==="region"}function cF(e){return!lt(e,uF)}function dF(e,t){var r="article, aside, main, nav, section";return e.hasAttribute("role")||!Lr(t,r)}var fF=dF;function pF(e,t){if(t.props.nodeName!=="input"||t.hasAttr("type")===!1)return!0;var r=t.attr("type").toLowerCase();return["hidden","image","button","submit","reset"].includes(r)===!1}var mF=pF;function hF(e,t){var r=de(e);if(!r)return!1;var a=Jr("widget"),n=a.includes(r);if(!n)return!1;var i=Cu();return!(!i.includes(r)||!ne(ya(t))&&!ne(ba(e))||!ne(kt(t)))}var vF=hF;function gF(e,t){return ct(t)}function bF(e){return ct(e)}function yF(e,t,r){return r.initiator}var Rp=yF;function wF(e){return Bc(e)}var DF=wF;function _F(e,t){var r=!!Ye(t);if(!r)return!1;var a=de(e);return!(a&&a!=="link")}var xF=_F;function EF(e,t){return!Pu(e,t)}var CF=EF;function AF(e,t){return de(t)==="heading"}function FF(e,t){return Rt(t,{chromium:!0})!==null}var TF=FF;function RF(e){var t=e.getAttribute("title");return!!ne(t)}var kF=RF;function SF(e,t,r){var a,n;return!r.initiator&&!r.focusable&&((a=r.size)===null||a===void 0?void 0:a.width)*((n=r.size)===null||n===void 0?void 0:n.height)>1}var OF=SF;function MF(e){var t=e.getAttribute("id").trim(),r='*[id="'.concat(Me(t),'"]'),a=Array.from(Je(e).querySelectorAll(r));return!Qn(e)&&a.every(function(n){return!Ne(n)})}var NF=MF;function IF(e){return Qn(e)}var PF=IF;function LF(e){var t=e.getAttribute("id").trim(),r='*[id="'.concat(Me(t),'"]'),a=Array.from(Je(e).querySelectorAll(r));return!Qn(e)&&a.some(Ne)}var BF=LF;function qF(e){return Jn(e)}var jF=qF;function zF(e){if(Jn(e)){var t=zt(e);return t.length>=3&&t[0].length>=3&&t[1].length>=3&&t[2].length>=3}return!1}var VF=zF;function HF(e,t){var r=t.props,a=r.nodeName,n=r.type;if(a==="option"||a==="select"&&!e.options.length)return!1;var i=["hidden","range","color","checkbox","radio","image"];if(a==="input"&&i.includes(n)||Ba(t)||gn(t))return!1;var o=["input","select","textarea"];if(o.includes(a)){var u=D.getComputedStyle(e),s=parseInt(u.getPropertyValue("text-indent"),10);if(s){var c=e.getBoundingClientRect();if(c={top:c.top,bottom:c.bottom,left:c.left+s,right:c.right+s},!tu(c,e))return!1}return!0}var l=Lr(t,"label");if(a==="label"||l){var d=l||e,f=l?se(l):t;if(d.htmlFor){var p=Je(d),m=p.getElementById(d.htmlFor),h=m&&se(m);if(h&&Ba(h))return!1}var v='input:not([type="hidden"],[type="image"],[type="button"],[type="submit"],[type="reset"]), select, textarea',g=vt(f,v)[0];if(g&&Ba(g))return!1}for(var b=[],y=t;y;){if(y.props.id){var _=Eu(y).filter(function(V){return Qe(V.getAttribute("aria-labelledby")||"").includes(y.props.id)}).map(function(V){return se(V)});b.push.apply(b,ae(_))}y=y.parent}if(b.length>0&&b.every(Ba)||!GF(t))return!1;for(var A=L.createRange(),R=t.children,S=0;S0&&arguments[0]!==void 0?arguments[0]:{};return(Array.isArray(e)||O(e)!=="object")&&(e={value:e}),e}function ea(e){e&&(this.id=e.id,this.configure(e))}ea.prototype.enabled=!0,ea.prototype.run=function(t,r,a,n,i){r=r||{};var o=r.hasOwnProperty("enabled")?r.enabled:this.enabled,u=this.getOptions(r.options);if(o){var s=new Lu(this),c=Ci(s,r,n,i),l;try{l=this.evaluate.call(c,t.actualNode,u,t,a)}catch(d){t&&t.actualNode&&(d.errorNode=bt.toSpec(t)),i(d);return}c.isAsync||(s.result=l,n(s))}else n(null)},ea.prototype.runSync=function(t,r,a){r=r||{};var n=r,i=n.enabled,o=i===void 0?this.enabled:i;if(!o)return null;var u=this.getOptions(r.options),s=new Lu(this),c=Ci(s);c.async=function(){throw new Error("Cannot run async check while in a synchronous run")};var l;try{l=this.evaluate.call(c,t.actualNode,u,t,a)}catch(d){throw t&&t.actualNode&&(d.errorNode=bt.toSpec(t)),d}return s.result=l,s},ea.prototype.configure=function(t){var r=this;(!t.evaluate||ii[t.evaluate])&&(this._internalCheck=!0),t.hasOwnProperty("enabled")&&(this.enabled=t.enabled),t.hasOwnProperty("options")&&(this._internalCheck?this.options=Sp(t.options):this.options=t.options),["evaluate","after"].filter(function(a){return t.hasOwnProperty(a)}).forEach(function(a){return r[a]=Bu(t[a])})},ea.prototype.getOptions=function(t){return this._internalCheck?zi(this.options,Sp(t||{})):t||this.options};var Op=ea;function dT(e){this.id=e.id,this.result=ce.NA,this.pageLevel=e.pageLevel,this.impact=null,this.nodes=[]}var oi=dT;function ut(e,t){this._audit=t,this.id=e.id,this.selector=e.selector||"*",e.impact&&(he(ce.impact.includes(e.impact),"Impact ".concat(e.impact," is not a valid impact")),this.impact=e.impact),this.excludeHidden=typeof e.excludeHidden=="boolean"?e.excludeHidden:!0,this.enabled=typeof e.enabled=="boolean"?e.enabled:!0,this.pageLevel=typeof e.pageLevel=="boolean"?e.pageLevel:!1,this.reviewOnFail=typeof e.reviewOnFail=="boolean"?e.reviewOnFail:!1,this.any=e.any||[],this.all=e.all||[],this.none=e.none||[],this.tags=e.tags||[],this.preload=!!e.preload,this.actIds=e.actIds,e.matches&&(this.matches=Bu(e.matches))}ut.prototype.matches=function(){return!0},ut.prototype.gather=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a="mark_gather_start_"+this.id,n="mark_gather_end_"+this.id,i="mark_isVisibleToScreenReaders_start_"+this.id,o="mark_isVisibleToScreenReaders_end_"+this.id;r.performanceTimer&&He.mark(a);var u=bu(this.selector,t);return this.excludeHidden&&(r.performanceTimer&&He.mark(i),u=u.filter(function(s){return Te(s)}),r.performanceTimer&&(He.mark(o),He.measure("rule_"+this.id+"#gather_axe.utils.isVisibleToScreenReaders",i,o))),r.performanceTimer&&(He.mark(n),He.measure("rule_"+this.id+"#gather",a,n)),u},ut.prototype.runChecks=function(t,r,a,n,i,o){var u=this,s=Ft();this[t].forEach(function(c){var l=u._audit.checks[c.id||c],d=Gn(l,u.id,a);s.defer(function(f,p){l.run(r,d,n,f,p)})}),s.then(function(c){c=c.filter(function(l){return l}),i({type:t,results:c})}).catch(o)},ut.prototype.runChecksSync=function(t,r,a,n){var i=this,o=[];return this[t].forEach(function(u){var s=i._audit.checks[u.id||u],c=Gn(s,i.id,a);o.push(s.runSync(r,c,n))}),o=o.filter(function(u){return u}),{type:t,results:o}},ut.prototype.run=function(t){var r=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;a.performanceTimer&&this._trackPerformance();var o=Ft(),u=new oi(this),s;try{s=this.gatherAndMatchNodes(t,a)}catch(c){i(new na({cause:c,ruleId:this.id}));return}a.performanceTimer&&this._logGatherPerformance(s),s.forEach(function(c){o.defer(function(l,d){var f=Ft();["any","all","none"].forEach(function(p){f.defer(function(m,h){r.runChecks(p,c,a,t,m,h)})}),f.then(function(p){var m=Mp(p);m&&(m.node=new Bt(c),u.nodes.push(m),r.reviewOnFail&&(["any","all"].forEach(function(h){m[h].forEach(function(v){v.result===!1&&(v.result=void 0)})}),m.none.forEach(function(h){h.result===!0&&(h.result=void 0)}))),l()}).catch(function(p){return d(p)})})}),o.defer(function(c){return setTimeout(c,0)}),a.performanceTimer&&this._logRulePerformance(),o.then(function(){return n(u)}).catch(function(c){return i(c)})},ut.prototype.runSync=function(t){var r=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};a.performanceTimer&&this._trackPerformance();var n=new oi(this),i;try{i=this.gatherAndMatchNodes(t,a)}catch(o){throw new na({cause:o,ruleId:this.id})}return a.performanceTimer&&this._logGatherPerformance(i),i.forEach(function(o){var u=[];["any","all","none"].forEach(function(c){u.push(r.runChecksSync(c,o,a,t))});var s=Mp(u);s&&(s.node=o.actualNode?new Bt(o):null,n.nodes.push(s),r.reviewOnFail&&(["any","all"].forEach(function(c){s[c].forEach(function(l){l.result===!1&&(l.result=void 0)})}),s.none.forEach(function(c){c.result===!0&&(c.result=void 0)})))}),a.performanceTimer&&this._logRulePerformance(),n},ut.prototype._trackPerformance=function(){this._markStart="mark_rule_start_"+this.id,this._markEnd="mark_rule_end_"+this.id,this._markChecksStart="mark_runchecks_start_"+this.id,this._markChecksEnd="mark_runchecks_end_"+this.id},ut.prototype._logGatherPerformance=function(t){fr("gather (",t.length,"):",He.timeElapsed()+"ms"),He.mark(this._markChecksStart)},ut.prototype._logRulePerformance=function(){He.mark(this._markChecksEnd),He.mark(this._markEnd),He.measure("runchecks_"+this.id,this._markChecksStart,this._markChecksEnd),He.measure("rule_"+this.id,this._markStart,this._markEnd)};function Mp(e){if(e.length){var t=!1,r={};return e.forEach(function(a){var n=a.results.filter(function(i){return i});r[a.type]=n,n.length&&(t=!0)}),t?r:null}}ut.prototype.gatherAndMatchNodes=function(t,r){var a=this,n="mark_matches_start_"+this.id,i="mark_matches_end_"+this.id,o=this.gather(t,r);return r.performanceTimer&&He.mark(n),o=o.filter(function(u){return a.matches(u.actualNode,u,t)}),r.performanceTimer&&(He.mark(i),He.measure("rule_"+this.id+"#matches",n,i)),o};function fT(e){return un(e).map(function(t){var r=e._audit.checks[t.id||t];return r&&typeof r.after=="function"?r:null}).filter(Boolean)}function pT(e,t){var r=[];return e.forEach(function(a){var n=un(a);n.forEach(function(i){i.id===t&&(i.node=a.node,r.push(i))})}),r}function mT(e){return e.filter(function(t){return t.filtered!==!0})}function hT(e){var t=["any","all","none"],r=e.nodes.filter(function(a){var n=0;return t.forEach(function(i){a[i]=mT(a[i]),n+=a[i].length}),n>0});return e.pageLevel&&r.length&&(r=[r.reduce(function(a,n){if(a)return t.forEach(function(i){a[i].push.apply(a[i],n[i])}),a})]),r}ut.prototype.after=function(t,r){var a=this,n=fT(this),i=this.id;return n.forEach(function(o){var u=pT(t.nodes,o.id),s=Gn(o,i,r),c=o.after(u,s.options);a.reviewOnFail&&c.forEach(function(l){var d=(a.any.includes(l.id)||a.all.includes(l.id))&&l.result===!1,f=a.none.includes(l.id)&&l.result===!0;(d||f)&&(l.result=void 0)}),u.forEach(function(l){delete l.node,c.indexOf(l)===-1&&(l.filtered=!0)})}),t.nodes=hT(t),t},ut.prototype.configure=function(t){t.hasOwnProperty("selector")&&(this.selector=t.selector),t.hasOwnProperty("excludeHidden")&&(this.excludeHidden=typeof t.excludeHidden=="boolean"?t.excludeHidden:!0),t.hasOwnProperty("enabled")&&(this.enabled=typeof t.enabled=="boolean"?t.enabled:!0),t.hasOwnProperty("pageLevel")&&(this.pageLevel=typeof t.pageLevel=="boolean"?t.pageLevel:!1),t.hasOwnProperty("reviewOnFail")&&(this.reviewOnFail=typeof t.reviewOnFail=="boolean"?t.reviewOnFail:!1),t.hasOwnProperty("any")&&(this.any=t.any),t.hasOwnProperty("all")&&(this.all=t.all),t.hasOwnProperty("none")&&(this.none=t.none),t.hasOwnProperty("tags")&&(this.tags=t.tags),t.hasOwnProperty("actIds")&&(this.actIds=t.actIds),t.hasOwnProperty("matches")&&(this.matches=Bu(t.matches)),t.impact&&(he(ce.impact.includes(t.impact),"Impact ".concat(t.impact," is not a valid impact")),this.impact=t.impact)};var ta=wt(Ss()),ra=/\{\{.+?\}\}/g,vT=function(){function e(t){Et(this,e),this.lang="en",this.defaultConfig=t,this.standards=ve,this._init(),this._defaultLocale=null}return Ct(e,[{key:"_setDefaultLocale",value:function(){if(!this._defaultLocale){for(var r={checks:{},rules:{},failureSummaries:{},incompleteFallbackMessage:"",lang:this.lang},a=Object.keys(this.data.checks),n=0;n0&&arguments[0]!==void 0?arguments[0]:null,n=(w.version.match(/^[1-9][0-9]*\.[0-9]+/)||["x.y"])[0];this.rules.forEach(function(i){r.data.rules[i.id]||(r.data.rules[i.id]={});var o=r.data.rules[i.id];(typeof o.helpUrl!="string"||a&&o.helpUrl===Bp(a,i.id,n))&&(o.helpUrl=Bp(r,i.id,n))})}},{key:"resetRulesAndChecks",value:function(){this._init(),this._resetLocale()}}]),e}(),Np=vT;function Ip(){if(D.origin&&D.origin!=="null")return D.origin;if(D.location&&D.location.origin&&D.location.origin!=="null")return D.location.origin}function gT(e){var t;if(e?(t=qt(e),t.commons=e.commons):t={},t.reporter=t.reporter||null,t.noHtml=t.noHtml||!1,!t.allowedOrigins){var r=Ip();t.allowedOrigins=r?[r]:[]}return t.rules=t.rules||[],t.checks=t.checks||[],t.data=le({checks:{},rules:{}},t.data),t}function Pp(e,t,r){var a,n;for(a=0,n=e.length;a2&&arguments[2]!==void 0?arguments[2]:{};r.reporter=r.reporter||w._audit.reporter||"v1",w._selectorData={},t instanceof Ge||(t=new Ef(t));var a=Zd(e);if(!a)throw new Error("unknown rule `"+e+"`");a=Object.create(a,{excludeHidden:{value:!1}});var n={initiator:!0,include:[t],exclude:[],frames:[],page:!1,focusable:!0,size:{},flatTree:[]},i=a.runSync(n,r);Yn(i),ia(i);var o=Ps([i]);return o.violations.forEach(function(u){return u.nodes.forEach(function(s){s.failureSummary=uu(s)})}),le({},nr(),o,{toolOptions:r})}function zp(e){var t,r,a,n=P(e,3),i=n[0],o=n[1],u=n[2],s=new TypeError("axe.run arguments are invalid");if(!FD(i)){if(u!==void 0)throw s;u=o,o=i,i=L}if(O(o)!=="object"){if(u!==void 0)throw s;u=o,o={}}if(typeof u!="function"&&u!==void 0)throw s;return o=qt(o),o.reporter=(t=(r=o.reporter)!==null&&r!==void 0?r:(a=w._audit)===null||a===void 0?void 0:a.reporter)!==null&&t!==void 0?t:"v1",{context:i,options:o,callback:u}}var qu=function(){};function OT(){for(var e=arguments.length,t=new Array(e),r=0;r1&&arguments[1]!==void 0?arguments[1]:{};n=qt(n);var i=e.find(function(s){return s.environmentData})||{},o=i.environmentData;w._audit.normalizeOptions(n),n.reporter=(t=(r=n.reporter)!==null&&r!==void 0?r:(a=w._audit)===null||a===void 0?void 0:a.reporter)!==null&&t!==void 0?t:"v1",BT(e);var u=sn(e);return u=w._audit.after(u,n),u.forEach(Yn),u=u.map(ia),jT(u,le({environmentData:o},n))}function BT(e){var t=[],r=Fe(e),a;try{for(r.s();!(a=r.n()).done;){var n=a.value,i=t.shift();if(n){n.frameSpec=i??null;var o=qT(n);t.unshift.apply(t,ae(o))}}}catch(u){r.e(u)}finally{r.f()}}function qT(e){var t=e.frames,r=e.frameSpec;return r?t.map(function(a){return bt.mergeSpecs(a,r)}):t}function jT(e,t){return new Promise(function(r,a){var n=Du(t.reporter);n(e,t,r,a)})}function zT(e){if(w._tree)throw new Error("Axe is already setup. Call `axe.teardown()` before calling `axe.setup` again.");return e&&O(e.documentElement)==="object"&&O(e.defaultView)==="object"&&(e=e.documentElement),qp(e),w._tree=iu(e),w._selectorData=Qa(w._tree),w._tree[0]}var VT=zT,HT=function(t,r,a){console.warn('"na" reporter will be deprecated in axe v4.0. Use the "v2" reporter instead.'),typeof r=="function"&&(a=r,r={});var n=r,i=n.environmentData,o=je(n,am);a(le({},nr(i),{toolOptions:o},Ma(t,r)))},$T=HT,UT=function(t,r,a){typeof r=="function"&&(a=r,r={});var n=r,i=n.environmentData,o=je(n,nm);r.resultTypes=["violations"];var u=Ma(t,r),s=u.violations;a(le({},nr(i),{toolOptions:o,violations:s}))},GT=UT,WT=function(t,r,a){if(typeof r=="function"&&(a=r,r={}),!t||!Array.isArray(t))return a(t);var n=t.map(function(i){for(var o=le({},i),u=["passes","violations","incomplete","inapplicable"],s=0,c=u;s elements of image maps have alternate text",help:"Active elements must have alternate text"},"aria-allowed-attr":{description:"Ensures an element's role supports its ARIA attributes",help:"Elements must only use supported ARIA attributes"},"aria-allowed-role":{description:"Ensures role attribute has an appropriate value for the element",help:"ARIA role should be appropriate for the element"},"aria-braille-equivalent":{description:"Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",help:"aria-braille attributes must have a non-braille equivalent"},"aria-command-name":{description:"Ensures every ARIA button, link and menuitem has an accessible name",help:"ARIA commands must have an accessible name"},"aria-conditional-attr":{description:"Ensures ARIA attributes are used as described in the specification of the element's role",help:"ARIA attributes must be used as specified for the element's role"},"aria-deprecated-role":{description:"Ensures elements do not use deprecated roles",help:"Deprecated ARIA roles must not be used"},"aria-dialog-name":{description:"Ensures every ARIA dialog and alertdialog node has an accessible name",help:"ARIA dialog and alertdialog nodes should have an accessible name"},"aria-hidden-body":{description:'Ensures aria-hidden="true" is not present on the document body.',help:'aria-hidden="true" must not be present on the document body'},"aria-hidden-focus":{description:"Ensures aria-hidden elements are not focusable nor contain focusable elements",help:"ARIA hidden element must not be focusable or contain focusable elements"},"aria-input-field-name":{description:"Ensures every ARIA input field has an accessible name",help:"ARIA input fields must have an accessible name"},"aria-meter-name":{description:"Ensures every ARIA meter node has an accessible name",help:"ARIA meter nodes must have an accessible name"},"aria-progressbar-name":{description:"Ensures every ARIA progressbar node has an accessible name",help:"ARIA progressbar nodes must have an accessible name"},"aria-prohibited-attr":{description:"Ensures ARIA attributes are not prohibited for an element's role",help:"Elements must only use permitted ARIA attributes"},"aria-required-attr":{description:"Ensures elements with ARIA roles have all required ARIA attributes",help:"Required ARIA attributes must be provided"},"aria-required-children":{description:"Ensures elements with an ARIA role that require child roles contain them",help:"Certain ARIA roles must contain particular children"},"aria-required-parent":{description:"Ensures elements with an ARIA role that require parent roles are contained by them",help:"Certain ARIA roles must be contained by particular parents"},"aria-roledescription":{description:"Ensure aria-roledescription is only used on elements with an implicit or explicit role",help:"aria-roledescription must be on elements with a semantic role"},"aria-roles":{description:"Ensures all elements with a role attribute use a valid value",help:"ARIA roles used must conform to valid values"},"aria-text":{description:'Ensures role="text" is used on elements with no focusable descendants',help:'"role=text" should have no focusable descendants'},"aria-toggle-field-name":{description:"Ensures every ARIA toggle field has an accessible name",help:"ARIA toggle fields must have an accessible name"},"aria-tooltip-name":{description:"Ensures every ARIA tooltip node has an accessible name",help:"ARIA tooltip nodes must have an accessible name"},"aria-treeitem-name":{description:"Ensures every ARIA treeitem node has an accessible name",help:"ARIA treeitem nodes should have an accessible name"},"aria-valid-attr-value":{description:"Ensures all ARIA attributes have valid values",help:"ARIA attributes must conform to valid values"},"aria-valid-attr":{description:"Ensures attributes that begin with aria- are valid ARIA attributes",help:"ARIA attributes must conform to valid names"},"audio-caption":{description:"Ensures

    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 literal 0 HcmV?d00001 diff --git a/img/spectrum_logo_light.svg b/img/spectrum_logo_light.svg new file mode 100644 index 0000000000..86e37fde4c --- /dev/null +++ b/img/spectrum_logo_light.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/img/tablet-bk b/img/tablet-bk new file mode 100644 index 0000000000000000000000000000000000000000..29a7558e453e5799d9534437e5ed564491405f1a GIT binary patch literal 121994 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 N@6Z9p1=RlJe*siJHRAvP literal 0 HcmV?d00001 diff --git a/img/thumbnail.png b/img/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..191a7a689c6e1c399cb0f95a11a6cfaad29da29f GIT binary patch literal 66226 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 iot@t)KH&7^AO9C23fzSpectrum CSS

    9 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 literal 0 HcmV?d00001 diff --git a/img/example-card-portrait.jpg b/img/example-card-portrait.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b580aca3c90bf6d540d052d910b86c1997b44878 GIT binary patch literal 591069 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 Rx71opPJJlM(X`bALOz1LWz%z5DnjMLRE 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