@stihl-design-system/components 1.0.0-RC.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +42 -0
- package/README.md +56 -0
- package/apple-icon.png +0 -0
- package/assets/Asterisk.582f2067.css +1 -0
- package/assets/Button.684e8bda.css +1 -0
- package/assets/ButtonRound.ca8748cf.css +1 -0
- package/assets/Checkbox.84cf6398.css +1 -0
- package/assets/CustomReactSelect.d89ccccb.css +1 -0
- package/assets/Fieldset.5297efb8.css +1 -0
- package/assets/FloatingActionButton.de295f5d.css +1 -0
- package/assets/Heading.32278621.css +1 -0
- package/assets/Icon.8890ee9a.css +1 -0
- package/assets/Input.2c508b2f.css +1 -0
- package/assets/InputPassword.a534f047.css +1 -0
- package/assets/InputSearch.8f986307.css +1 -0
- package/assets/InputStepper.52fb45ca.css +1 -0
- package/assets/Link.03deeca0.css +1 -0
- package/assets/LinkStandalone.7e23a8ac.css +1 -0
- package/assets/Logo.09e48e82.css +1 -0
- package/assets/OptionCheckbox.9c20f6f1.css +1 -0
- package/assets/Radio.be8f06f5.css +1 -0
- package/assets/RadioGroup.8b55ee38.css +1 -0
- package/assets/Select.b2423b5f.css +1 -0
- package/assets/Spinner.af45d460.css +1 -0
- package/assets/Switch.f3ab20de.css +1 -0
- package/assets/SystemFeedback.f4421d60.css +1 -0
- package/assets/Text.4756effe.css +1 -0
- package/assets/Textarea.eecf04b3.css +1 -0
- package/assets/Title.60d50d3e.css +1 -0
- package/asterisk.91abccec.js +8 -0
- package/asterisk.d.ts +1 -0
- package/button.89b2675b.js +135 -0
- package/button.d.ts +1 -0
- package/buttonround.c60c8034.js +118 -0
- package/buttonround.d.ts +1 -0
- package/checkbox.7d414047.js +112 -0
- package/checkbox.d.ts +1 -0
- package/checkboxgroup.d.ts +1 -0
- package/checkboxgroup.e9e25471.js +78 -0
- package/chunks/360.3f3132d9.js +11 -0
- package/chunks/CustomReactSelect.9d0a378a.js +5011 -0
- package/chunks/Input.utils.f8f3286f.js +106 -0
- package/chunks/Link.module.b8230547.js +37 -0
- package/chunks/RadioGroup.module.59ca486a.js +11 -0
- package/chunks/academic-cap.a6849ffc.js +11 -0
- package/chunks/alarm-clock.542230f3.js +11 -0
- package/chunks/arrow-clockwise.0496f663.js +11 -0
- package/chunks/arrow-counterclockwise.635a0130.js +11 -0
- package/chunks/arrow-down-line.0976611e.js +11 -0
- package/chunks/arrow-down.9780d975.js +11 -0
- package/chunks/arrow-edge.3288acdd.js +11 -0
- package/chunks/arrow-left.ace9c808.js +11 -0
- package/chunks/arrow-out.0499f39e.js +11 -0
- package/chunks/arrow-outline-left.efc33275.js +11 -0
- package/chunks/arrow-right.133feef2.js +11 -0
- package/chunks/arrow-up-arrow-down.b612e9b1.js +11 -0
- package/chunks/arrow-up.3be6430a.js +11 -0
- package/chunks/at.6279d12b.js +11 -0
- package/chunks/barcode-scanner.0a4a314d.js +11 -0
- package/chunks/battery.e1249ee1.js +11 -0
- package/chunks/bell.87fe4f0b.js +11 -0
- package/chunks/bin-open.be4290d8.js +11 -0
- package/chunks/bin.b36466f3.js +11 -0
- package/chunks/bluetooth.54b89b90.js +11 -0
- package/chunks/bookmark.4d5ce4c3.js +11 -0
- package/chunks/burger.1301d91e.js +11 -0
- package/chunks/calendar.ba39a664.js +11 -0
- package/chunks/camera.3bed4f3b.js +11 -0
- package/chunks/cart-check.9fb6abdb.js +11 -0
- package/chunks/cart-plus.fd5c4674.js +11 -0
- package/chunks/cart.7516d35c.js +11 -0
- package/chunks/catalog.bd0c7830.js +11 -0
- package/chunks/certificate.1639c28e.js +11 -0
- package/chunks/chain-link.45025ed0.js +11 -0
- package/chunks/chainsaw.56d43a9f.js +11 -0
- package/chunks/check.a08beeae.js +11 -0
- package/chunks/chevron-down.80b0dc85.js +11 -0
- package/chunks/chevron-left.f5feade0.js +11 -0
- package/chunks/chevron-line-left.17b172d1.js +11 -0
- package/chunks/chevron-line-right.7cd234b7.js +11 -0
- package/chunks/chevron-right.259bc1a3.js +11 -0
- package/chunks/chevron-up.d1335850.js +11 -0
- package/chunks/circle-check-colored.98e13ab9.js +11 -0
- package/chunks/circle-check-inverted.db29ab06.js +11 -0
- package/chunks/circle-info-colored.8da47e36.js +11 -0
- package/chunks/circle-info-inverted.0ed118fb.js +11 -0
- package/chunks/circle-pause.55300d1b.js +11 -0
- package/chunks/circle-stroke.203dd7aa.js +11 -0
- package/chunks/circle.33ec82eb.js +11 -0
- package/chunks/clock.3014a102.js +11 -0
- package/chunks/coffee-cup.98d6531f.js +11 -0
- package/chunks/compare.c76b221b.js +11 -0
- package/chunks/connected-box-mobile.9cd742dd.js +11 -0
- package/chunks/connected-box-stationary.191a3ed0.js +11 -0
- package/chunks/connected-box.fe21c39b.js +11 -0
- package/chunks/cross.fe709ee7.js +11 -0
- package/chunks/diamond-exclamationmark-colored.bf3ffccf.js +11 -0
- package/chunks/diamond-exclamationmark-inverted.b5648587.js +11 -0
- package/chunks/diamond.e962c289.js +11 -0
- package/chunks/diskette.04733444.js +11 -0
- package/chunks/distance.9e6b56ff.js +11 -0
- package/chunks/dots-connected.9869fae1.js +11 -0
- package/chunks/download-complete.0b84a7cc.js +11 -0
- package/chunks/envelope-open.3c3fd714.js +11 -0
- package/chunks/envelope.5c9ff834.js +11 -0
- package/chunks/exclamationmark.92afe58f.js +11 -0
- package/chunks/exit.bde46887.js +11 -0
- package/chunks/eye-closed.0b517bb7.js +11 -0
- package/chunks/eye.8f4b311b.js +11 -0
- package/chunks/facebook.4a040606.js +11 -0
- package/chunks/filter.dee66683.js +11 -0
- package/chunks/finger-double-arrow.9cd4c623.js +11 -0
- package/chunks/flash.15646b5e.js +11 -0
- package/chunks/fullscreen.fdd976fe.js +11 -0
- package/chunks/gear.1f5f6fe9.js +11 -0
- package/chunks/globe.7f419498.js +11 -0
- package/chunks/grid.2c1cdc21.js +11 -0
- package/chunks/guidance.63bebf3e.js +11 -0
- package/chunks/haircross.0ac15319.js +11 -0
- package/chunks/hanger.edc848f4.js +11 -0
- package/chunks/headphones.a023699e.js +11 -0
- package/chunks/heart.d4440641.js +11 -0
- package/chunks/helpers.ea3ca41a.js +7 -0
- package/chunks/hexagon-arrow-clockwise.98e9b555.js +11 -0
- package/chunks/horizontal-ellipsis.84419429.js +11 -0
- package/chunks/house.70059642.js +11 -0
- package/chunks/imow.3374e620.js +11 -0
- package/chunks/index.8021d3e0.js +45 -0
- package/chunks/info.1787448e.js +11 -0
- package/chunks/instagram.e12dd682.js +11 -0
- package/chunks/jsx-runtime.5c071667.js +632 -0
- package/chunks/leave-fullscreen.def46043.js +11 -0
- package/chunks/lightbulb.b73d3ebf.js +11 -0
- package/chunks/linkedin.ce0c68cb.js +11 -0
- package/chunks/list-three-rows.ef44c7ef.js +11 -0
- package/chunks/list-two-rows.5ed8f1af.js +11 -0
- package/chunks/loading-spinner.8293421e.js +11 -0
- package/chunks/lock.3cbc8ced.js +11 -0
- package/chunks/magnifying-glass-minus.b0f906e5.js +11 -0
- package/chunks/magnifying-glass-plus.6ffc69c5.js +11 -0
- package/chunks/magnifying-glass.c297e41f.js +11 -0
- package/chunks/map.c96b1dcd.js +11 -0
- package/chunks/minus.7f6676e8.js +11 -0
- package/chunks/mobile.416ee5b0.js +11 -0
- package/chunks/nine-squares.34eeb0d4.js +11 -0
- package/chunks/note-check.aaf92ef9.js +11 -0
- package/chunks/note-plus.e7ab1b93.js +11 -0
- package/chunks/note.cc96375c.js +11 -0
- package/chunks/number-input.076fcf63.js +11 -0
- package/chunks/paperclip.e8831256.js +11 -0
- package/chunks/parcel.75534dbd.js +11 -0
- package/chunks/pause.901567cf.js +11 -0
- package/chunks/pdf.92c1781a.js +11 -0
- package/chunks/pen.ecbcb50d.js +11 -0
- package/chunks/percent.4b7fa587.js +11 -0
- package/chunks/petrol.41999bec.js +11 -0
- package/chunks/phone.3c23c041.js +11 -0
- package/chunks/pin-s.a5519070.js +11 -0
- package/chunks/pin.1137362d.js +11 -0
- package/chunks/pinterest.88763b51.js +11 -0
- package/chunks/placeholder.d6fdaf8f.js +11 -0
- package/chunks/play.dd0f1d8c.js +11 -0
- package/chunks/plug.00f114c4.js +11 -0
- package/chunks/plus.42721ebf.js +11 -0
- package/chunks/printer.5bb7ee0d.js +11 -0
- package/chunks/prohibition-sign.af5616b3.js +11 -0
- package/chunks/questionmark.db94a06d.js +11 -0
- package/chunks/security.2be491e3.js +11 -0
- package/chunks/share.ddae7aef.js +11 -0
- package/chunks/shirt.135d58c1.js +11 -0
- package/chunks/shop.f120426b.js +11 -0
- package/chunks/sound-off.c6f5ed43.js +11 -0
- package/chunks/sound-on.212c36bc.js +11 -0
- package/chunks/speechbubble.9428546e.js +11 -0
- package/chunks/speechbubbles.65cb946e.js +11 -0
- package/chunks/square.452f505f.js +11 -0
- package/chunks/star-half.1458bc5b.js +11 -0
- package/chunks/star.fab17456.js +11 -0
- package/chunks/tag.4d730d72.js +11 -0
- package/chunks/thumbs-down.cbf6e4ec.js +11 -0
- package/chunks/thumbs-up.435754e1.js +11 -0
- package/chunks/triangle-exclamationmark-colored.94025893.js +11 -0
- package/chunks/triangle-exclamationmark-inverted.bc4eed15.js +11 -0
- package/chunks/triangle.bff84ddf.js +11 -0
- package/chunks/truck.a904d6d3.js +11 -0
- package/chunks/two-people-screen.3e509922.js +11 -0
- package/chunks/two-sheets.d1cfef0f.js +11 -0
- package/chunks/upload.7f1850a3.js +11 -0
- package/chunks/useBreakpoint.6c1b06c2.js +48 -0
- package/chunks/user.bf5b30a5.js +11 -0
- package/chunks/vertical-ellipsis.1cac00e5.js +11 -0
- package/chunks/wc.9d108bd0.js +11 -0
- package/chunks/wifi-1bar.b6fc33aa.js +11 -0
- package/chunks/wifi-2bars.27e9da59.js +11 -0
- package/chunks/wifi-off.e5daf3a9.js +11 -0
- package/chunks/wifi.40bb915d.js +11 -0
- package/chunks/wind-rose.27fa658a.js +11 -0
- package/chunks/wrench.69493ef3.js +11 -0
- package/chunks/x.d9da4202.js +11 -0
- package/chunks/xing.e17c1a24.js +11 -0
- package/chunks/youtube.dbf50787.js +11 -0
- package/combobox.d.ts +1 -0
- package/combobox.f98a4472.js +45 -0
- package/components/Asterisk/Asterisk.d.ts +2 -0
- package/components/Button/Button.d.ts +45 -0
- package/components/Button/Button.test.d.ts +1 -0
- package/components/Button/Button.utils.d.ts +6 -0
- package/components/ButtonRound/ButtonRound.d.ts +11 -0
- package/components/ButtonRound/ButtonRound.test.d.ts +1 -0
- package/components/ButtonRound/ButtonRound.utils.d.ts +2 -0
- package/components/Checkbox/Checkbox.d.ts +26 -0
- package/components/Checkbox/Checkbox.test.d.ts +1 -0
- package/components/CheckboxGroup/CheckboxGroup.d.ts +41 -0
- package/components/CheckboxGroup/CheckboxGroup.test.d.ts +1 -0
- package/components/CheckboxGroup/CheckboxGroup.utils.d.ts +4 -0
- package/components/Combobox/Combobox.d.ts +18 -0
- package/components/Combobox/Combobox.test.d.ts +1 -0
- package/components/Combobox/Combobox.utils.d.ts +57 -0
- package/components/Combobox/Combobox.utils.test.d.ts +1 -0
- package/components/CustomReactSelect/CustomReactSelect.d.ts +60 -0
- package/components/CustomReactSelect/CustomReactSelect.utils.d.ts +15 -0
- package/components/CustomReactSelect/CustomReactSelect.utils.test.d.ts +1 -0
- package/components/CustomReactSelect/OptionCheckbox.d.ts +13 -0
- package/components/Fieldset/Fieldset.d.ts +35 -0
- package/components/Fieldset/Fieldset.test.d.ts +1 -0
- package/components/Fieldset/Fieldset.utils.d.ts +10 -0
- package/components/FloatingActionButton/FloatingActionButton.d.ts +13 -0
- package/components/FloatingActionButton/FloatingActionButton.test.d.ts +1 -0
- package/components/Heading/Heading.d.ts +18 -0
- package/components/Heading/Heading.test.d.ts +1 -0
- package/components/Heading/Heading.utils.d.ts +4 -0
- package/components/Icon/Icon.d.ts +23 -0
- package/components/Icon/Icon.test.d.ts +1 -0
- package/components/Icon/Icon.utils.d.ts +12 -0
- package/components/Input/Input.d.ts +54 -0
- package/components/Input/Input.test.d.ts +1 -0
- package/components/Input/Input.utils.d.ts +59 -0
- package/components/Input/Input.utils.test.d.ts +1 -0
- package/components/InputPassword/InputPassword.d.ts +41 -0
- package/components/InputPassword/InputPassword.test.d.ts +1 -0
- package/components/InputPassword/InputPassword.utils.d.ts +12 -0
- package/components/InputPassword/InputPassword.utils.test.d.ts +1 -0
- package/components/InputSearch/InputSearch.d.ts +44 -0
- package/components/InputSearch/InputSearch.test.d.ts +1 -0
- package/components/InputSearch/InputSearch.utils.d.ts +23 -0
- package/components/InputSearch/InputSearch.utils.test.d.ts +1 -0
- package/components/InputStepper/InputStepper.d.ts +52 -0
- package/components/InputStepper/InputStepper.test.d.ts +1 -0
- package/components/InputStepper/InputStepper.utils.d.ts +12 -0
- package/components/InputStepper/InputStepper.utils.test.d.ts +1 -0
- package/components/Link/Link.d.ts +50 -0
- package/components/Link/Link.test.d.ts +1 -0
- package/components/Link/Link.utils.d.ts +8 -0
- package/components/LinkStandalone/LinkStandalone.d.ts +15 -0
- package/components/LinkStandalone/LinkStandalone.test.d.ts +1 -0
- package/components/LinkStandalone/LinkStandalone.utils.d.ts +2 -0
- package/components/Logo/Logo.d.ts +21 -0
- package/components/Logo/Logo.utils.d.ts +3 -0
- package/components/Radio/Radio.d.ts +27 -0
- package/components/Radio/Radio.test.d.ts +1 -0
- package/components/RadioGroup/RadioGroup.d.ts +56 -0
- package/components/RadioGroup/RadioGroup.test.d.ts +1 -0
- package/components/RadioGroup/RadioGroup.utils.d.ts +6 -0
- package/components/Select/Select.d.ts +43 -0
- package/components/Select/Select.test.d.ts +1 -0
- package/components/Select/Select.utils.d.ts +35 -0
- package/components/Select/Select.utils.test.d.ts +1 -0
- package/components/Spinner/Spinner.d.ts +14 -0
- package/components/Spinner/Spinner.test.d.ts +1 -0
- package/components/Spinner/Spinner.utils.d.ts +3 -0
- package/components/Switch/Switch.d.ts +29 -0
- package/components/Switch/Switch.test.d.ts +1 -0
- package/components/Switch/Switch.utils.d.ts +2 -0
- package/components/SystemFeedback/SystemFeedback.d.ts +9 -0
- package/components/SystemFeedback/SystemFeedback.test.d.ts +1 -0
- package/components/SystemFeedback/SystemFeedback.utils.d.ts +8 -0
- package/components/Text/Text.d.ts +21 -0
- package/components/Text/Text.test.d.ts +1 -0
- package/components/Text/Text.utils.d.ts +6 -0
- package/components/Textarea/Textarea.d.ts +42 -0
- package/components/Textarea/Textarea.test.d.ts +1 -0
- package/components/Textarea/Textarea.utils.d.ts +13 -0
- package/components/Textarea/Textarea.utils.test.d.ts +1 -0
- package/components/Title/Title.d.ts +20 -0
- package/components/Title/Title.test.d.ts +1 -0
- package/components/Title/Title.utils.d.ts +3 -0
- package/customreactselect.a53f9932.js +13 -0
- package/customreactselect.d.ts +1 -0
- package/favicon.ico +0 -0
- package/fieldset.d.ts +1 -0
- package/fieldset.fb7b7e49.js +98 -0
- package/floatingactionbutton.281b5465.js +87 -0
- package/floatingactionbutton.d.ts +1 -0
- package/heading.cb7698f4.js +44 -0
- package/heading.d.ts +1 -0
- package/icon-192.png +0 -0
- package/icon-512.png +0 -0
- package/icon.b4211784.js +215 -0
- package/icon.d.ts +1 -0
- package/icon.svg +1 -0
- package/index.d.ts +23 -0
- package/index.es.js +49 -0
- package/input.abb902e3.js +228 -0
- package/input.d.ts +1 -0
- package/inputpassword.11c12c66.js +139 -0
- package/inputpassword.d.ts +1 -0
- package/inputsearch.0c88e71a.js +188 -0
- package/inputsearch.d.ts +1 -0
- package/inputstepper.b74dac4d.js +284 -0
- package/inputstepper.d.ts +1 -0
- package/link.cd3720d1.js +84 -0
- package/link.d.ts +1 -0
- package/linkstandalone.26b52de0.js +80 -0
- package/linkstandalone.d.ts +1 -0
- package/logo.d.ts +1 -0
- package/logo.e6576fe3.js +68 -0
- package/manifest.json +6 -0
- package/manifest.webmanifest +6 -0
- package/optioncheckbox.7195f001.js +43 -0
- package/optioncheckbox.d.ts +1 -0
- package/package.json +125 -0
- package/partials/apple-icon.png +0 -0
- package/partials/copyAssets.js +84 -0
- package/partials/favicon.ico +0 -0
- package/partials/icon-192.png +0 -0
- package/partials/icon-512.png +0 -0
- package/partials/icon.svg +1 -0
- package/partials/index.d.ts +2 -0
- package/partials/index.js +2167 -0
- package/partials/lib/partials.d.ts +17 -0
- package/partials/manifest.json +6 -0
- package/partials/manifest.webmanifest +6 -0
- package/partials/shared.d.ts +2 -0
- package/radio.1b205d64.js +79 -0
- package/radio.d.ts +1 -0
- package/radiogroup.6a22fe96.js +100 -0
- package/radiogroup.d.ts +1 -0
- package/react.svg +1 -0
- package/select.2ff31eab.js +188 -0
- package/select.d.ts +1 -0
- package/spinner.d.ts +1 -0
- package/spinner.ee015469.js +58 -0
- package/styles/fonts/STIHLContrafaceDisplayTitling.woff +0 -0
- package/styles/fonts/STIHLContrafaceDisplayTitling.woff2 +0 -0
- package/styles/fonts/STIHLContrafaceText-Bold.woff +0 -0
- package/styles/fonts/STIHLContrafaceText-Bold.woff2 +0 -0
- package/styles/fonts/STIHLContrafaceText.woff +0 -0
- package/styles/fonts/STIHLContrafaceText.woff2 +0 -0
- package/styles/fonts/font-face.min.css +1 -0
- package/styles/fonts/index.es.js +1 -0
- package/styles/scss/_index.scss +21 -0
- package/styles/scss/lib/_a11y.scss +15 -0
- package/styles/scss/lib/_animation.scss +6 -0
- package/styles/scss/lib/_breakpoints.scss +16 -0
- package/styles/scss/lib/_container-query.scss +58 -0
- package/styles/scss/lib/_focus.scss +61 -0
- package/styles/scss/lib/_grid-extended.scss +11 -0
- package/styles/scss/lib/_grid-full.scss +6 -0
- package/styles/scss/lib/_grid-main.scss +117 -0
- package/styles/scss/lib/_grid-narrow.scss +14 -0
- package/styles/scss/lib/_grid-sidebar-sidebar.scss +48 -0
- package/styles/scss/lib/_grid-sidebar.scss +174 -0
- package/styles/scss/lib/_grid.scss +86 -0
- package/styles/scss/lib/_heading.scss +45 -0
- package/styles/scss/lib/_helpers.scss +3 -0
- package/styles/scss/lib/_hover.scss +10 -0
- package/styles/scss/lib/_link.scss +155 -0
- package/styles/scss/lib/_media-query.scss +32 -0
- package/styles/scss/lib/_spacing.scss +18 -0
- package/styles/scss/lib/_text.scss +63 -0
- package/styles/scss/lib/_theme.scss +160 -0
- package/styles/scss/lib/_transition.scss +26 -0
- package/switch.2f011fcc.js +65 -0
- package/switch.d.ts +1 -0
- package/systemfeedback.6bbd1505.js +25 -0
- package/systemfeedback.d.ts +1 -0
- package/text.8d80704f.js +57 -0
- package/text.d.ts +1 -0
- package/textarea.d.ts +1 -0
- package/textarea.e156b0ce.js +189 -0
- package/title.d.ts +1 -0
- package/title.d855a8e4.js +36 -0
- package/types/aria-types.d.ts +330 -0
- package/types/common-types.d.ts +13 -0
- package/types/icon-types.d.ts +2 -0
- package/types/index.d.ts +3 -0
- package/utils/breakpoint-customizable.d.ts +12 -0
- package/utils/has-document.d.ts +1 -0
- package/utils/has-window.d.ts +1 -0
- package/utils/helpers.d.ts +27 -0
- package/utils/helpers.test.d.ts +1 -0
- package/utils/index.d.ts +4 -0
- package/utils/link-target.d.ts +2 -0
- package/utils/render-documentation.d.ts +26 -0
- package/utils/theme.d.ts +2 -0
- package/utils/useBreakpoint.d.ts +12 -0
- package/utils/useBreakpoint.test.d.ts +1 -0
- package/utils/vitest.setup.d.ts +0 -0
- package/utils/wait-for-icon.d.ts +25 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
@import '_theme';
|
|
2
|
+
|
|
3
|
+
@mixin outline($theme, $offset, $thickness: 2px) {
|
|
4
|
+
outline: $thickness solid;
|
|
5
|
+
outline-color: if(
|
|
6
|
+
$theme == 'light',
|
|
7
|
+
$ds-theme-light-border-color-focus,
|
|
8
|
+
$ds-theme-dark-border-color-focus
|
|
9
|
+
);
|
|
10
|
+
outline-offset: $offset;
|
|
11
|
+
|
|
12
|
+
@media screen and (forced-colors: active) {
|
|
13
|
+
forced-color-adjust: auto;
|
|
14
|
+
outline-color: Highlight;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Read more here: https://www.tpgi.com/focus-visible-and-backwards-compatibility/
|
|
19
|
+
@mixin ds-focus($theme: 'light', $offset: 2px, $thickness: 2px) {
|
|
20
|
+
&:focus {
|
|
21
|
+
@include outline($theme, $offset, $thickness);
|
|
22
|
+
}
|
|
23
|
+
@supports selector(:focus-visible) {
|
|
24
|
+
&:focus {
|
|
25
|
+
/* revert all the above focus styles */
|
|
26
|
+
outline: revert;
|
|
27
|
+
outline-offset: revert;
|
|
28
|
+
}
|
|
29
|
+
&:focus-visible {
|
|
30
|
+
/* and then reapply the styles here instead */
|
|
31
|
+
@include outline($theme, $offset, $thickness);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Adds focus to the before pseudo element, removing the original focus behavior on the parent element
|
|
38
|
+
*/
|
|
39
|
+
@mixin ds-focus-pseudo($theme: 'light', $offset: 2px, $thickness: 2px) {
|
|
40
|
+
// remove focus from actual element
|
|
41
|
+
&:focus,
|
|
42
|
+
&:focus-visible {
|
|
43
|
+
outline: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&:focus::before {
|
|
47
|
+
@include outline($theme, $offset, $thickness);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@supports selector(:focus-visible) {
|
|
51
|
+
&:focus::before {
|
|
52
|
+
/* revert all the above focus styles */
|
|
53
|
+
outline: revert;
|
|
54
|
+
outline-offset: revert;
|
|
55
|
+
}
|
|
56
|
+
&:focus-visible::before {
|
|
57
|
+
/* and then reapply the styles here instead */
|
|
58
|
+
@include outline($theme, $offset, $thickness);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
$ds-grid-extended-column-start: extended-start;
|
|
2
|
+
$ds-grid-extended-column-end: extended-end;
|
|
3
|
+
|
|
4
|
+
@mixin ds-grid-extended-column {
|
|
5
|
+
grid-column: $ds-grid-extended-column-start / $ds-grid-extended-column-end;
|
|
6
|
+
|
|
7
|
+
@media (min-width: 1668px) {
|
|
8
|
+
margin-left: -32px;
|
|
9
|
+
margin-right: -32px;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
$ds-grid-main-column-start: main-start;
|
|
2
|
+
$ds-grid-main-column-end: main-end;
|
|
3
|
+
$ds-grid-sidebar-main-column-start: $ds-grid-main-column-start;
|
|
4
|
+
$ds-grid-sidebar-main-column-end: $ds-grid-main-column-end;
|
|
5
|
+
|
|
6
|
+
@mixin ds-grid-main-column {
|
|
7
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-main-column-end;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@mixin ds-grid-sidebar-main-column {
|
|
11
|
+
@include ds-grid-main-column;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Half
|
|
15
|
+
@mixin ds-grid-span-first-half {
|
|
16
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-span-one-half;
|
|
17
|
+
}
|
|
18
|
+
@mixin ds-grid-span-second-half {
|
|
19
|
+
grid-column: $ds-grid-span-one-half / $ds-grid-main-column-end;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@mixin ds-grid-sidebar-span-first-half {
|
|
23
|
+
@include ds-grid-span-first-half;
|
|
24
|
+
}
|
|
25
|
+
@mixin ds-grid-sidebar-span-second-half {
|
|
26
|
+
@include ds-grid-span-second-half;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Third
|
|
30
|
+
@mixin ds-grid-span-first-third {
|
|
31
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-main-column-end;
|
|
32
|
+
@include ds-media-query-min('m') {
|
|
33
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-span-one-third;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
@mixin ds-grid-span-one-third {
|
|
37
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-main-column-end;
|
|
38
|
+
@include ds-media-query-min('m') {
|
|
39
|
+
grid-column: $ds-grid-span-one-third;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@mixin ds-grid-sidebar-span-first-third {
|
|
44
|
+
@include ds-grid-span-first-third;
|
|
45
|
+
}
|
|
46
|
+
@mixin ds-grid-sidebar-span-one-third {
|
|
47
|
+
@include ds-grid-span-one-third;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Two Thirds
|
|
51
|
+
@mixin ds-grid-span-first-two-thirds {
|
|
52
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-main-column-end;
|
|
53
|
+
@include ds-media-query-min('m') {
|
|
54
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-span-two-thirds;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
@mixin ds-grid-span-two-thirds {
|
|
58
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-main-column-end;
|
|
59
|
+
@include ds-media-query-min('m') {
|
|
60
|
+
grid-column: $ds-grid-span-two-thirds / $ds-grid-main-column-end;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@mixin ds-grid-sidebar-span-first-two-thirds {
|
|
65
|
+
@include ds-grid-span-first-two-thirds;
|
|
66
|
+
}
|
|
67
|
+
@mixin ds-grid-sidebar-span-two-thirds {
|
|
68
|
+
@include ds-grid-span-two-thirds;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Quarter
|
|
72
|
+
@mixin ds-grid-span-first-quarter {
|
|
73
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-span-one-quarter;
|
|
74
|
+
}
|
|
75
|
+
@mixin ds-grid-span-one-quarter {
|
|
76
|
+
grid-column: $ds-grid-span-one-quarter;
|
|
77
|
+
// one quarter on viewports smaller than xl should behave like "first" quarter by starting a new row on "overflow":
|
|
78
|
+
// first-quarter one-quarter
|
|
79
|
+
// one-quarter one-quarter
|
|
80
|
+
&:nth-of-type(odd) {
|
|
81
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-span-one-quarter;
|
|
82
|
+
}
|
|
83
|
+
@include ds-media-query-min('l') {
|
|
84
|
+
&:nth-of-type(odd) {
|
|
85
|
+
grid-column: $ds-grid-span-one-quarter;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@mixin ds-grid-sidebar-span-first-quarter {
|
|
91
|
+
@include ds-grid-span-first-quarter;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@mixin ds-grid-sidebar-span-one-quarter {
|
|
95
|
+
grid-column: $ds-grid-span-one-quarter;
|
|
96
|
+
// one quarter on viewports smaller than xl should behave like "first" quarter by starting a new row on "overflow":
|
|
97
|
+
// first-quarter one-quarter
|
|
98
|
+
// one-quarter one-quarter
|
|
99
|
+
&:nth-of-type(odd) {
|
|
100
|
+
grid-column: $ds-grid-main-column-start / $ds-grid-span-one-quarter;
|
|
101
|
+
}
|
|
102
|
+
@include ds-media-query-min('xl') {
|
|
103
|
+
&:nth-of-type(odd) {
|
|
104
|
+
grid-column: $ds-grid-span-one-quarter;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
$ds-grid-span-one-half: var(--ds-grid-span-one-half);
|
|
110
|
+
$ds-grid-span-one-third: var(--ds-grid-span-one-third);
|
|
111
|
+
$ds-grid-span-two-thirds: var(--ds-grid-span-two-thirds);
|
|
112
|
+
$ds-grid-span-one-quarter: var(--ds-grid-span-one-quarter);
|
|
113
|
+
|
|
114
|
+
$ds-grid-sidebar-span-one-half: $ds-grid-span-one-half;
|
|
115
|
+
$ds-grid-sidebar-span-one-third: $ds-grid-span-one-third;
|
|
116
|
+
$ds-grid-sidebar-span-two-thirds: $ds-grid-span-two-thirds;
|
|
117
|
+
$ds-grid-sidebar-span-one-quarter: $ds-grid-span-one-quarter;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
$ds-grid-narrow-left-column-start: narrow-left-start;
|
|
2
|
+
$ds-grid-narrow-left-column-end: narrow-left-end;
|
|
3
|
+
$ds-grid-narrow-center-column-start: narrow-center-start;
|
|
4
|
+
$ds-grid-narrow-center-column-end: narrow-center-end;
|
|
5
|
+
|
|
6
|
+
@mixin ds-grid-narrow-left-column {
|
|
7
|
+
grid-column: $ds-grid-narrow-left-column-start /
|
|
8
|
+
$ds-grid-narrow-left-column-end;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@mixin ds-grid-narrow-center-column {
|
|
12
|
+
grid-column: $ds-grid-narrow-center-column-start /
|
|
13
|
+
$ds-grid-narrow-center-column-end;
|
|
14
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
$ds-grid-sidebar-sidebar-1-column-start: sidebar-1-start;
|
|
2
|
+
$ds-grid-sidebar-sidebar-1-column-end: sidebar-1-end;
|
|
3
|
+
$ds-grid-sidebar-sidebar-2-column-start: sidebar-2-start;
|
|
4
|
+
$ds-grid-sidebar-sidebar-2-column-end: sidebar-2-end;
|
|
5
|
+
|
|
6
|
+
// Sidebar 1
|
|
7
|
+
@mixin ds-grid-sidebar-sidebar-1($is-open: false) {
|
|
8
|
+
display: none;
|
|
9
|
+
@include ds-media-query-min('l') {
|
|
10
|
+
display: unset;
|
|
11
|
+
// This is a hack for implicit grid spanning a row from 1 till -1
|
|
12
|
+
// Using it leads us to not being able to use the row-gap property and requires us to use margins instead
|
|
13
|
+
// https://stackoverflow.com/a/49076465/2346207
|
|
14
|
+
// https://stackoverflow.com/a/56876772/2346207
|
|
15
|
+
grid-row: span 300;
|
|
16
|
+
grid-column: $ds-grid-sidebar-sidebar-1-column-start /
|
|
17
|
+
$ds-grid-sidebar-sidebar-1-column-end;
|
|
18
|
+
@if ($is-open == true) {
|
|
19
|
+
width: 264px;
|
|
20
|
+
max-width: 264px;
|
|
21
|
+
} @else {
|
|
22
|
+
width: 64px;
|
|
23
|
+
max-width: 64px;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Sidebar 2
|
|
28
|
+
@mixin ds-grid-sidebar-sidebar-2($is-open: false) {
|
|
29
|
+
display: none;
|
|
30
|
+
@include ds-media-query-min('l') {
|
|
31
|
+
// This is a hack for implicit grid spanning a row from 1 till -1
|
|
32
|
+
// Using it leads us to not being able to use the row-gap property and requires us to use margins instead
|
|
33
|
+
// https://stackoverflow.com/a/49076465/2346207
|
|
34
|
+
// https://stackoverflow.com/a/56876772/2346207
|
|
35
|
+
grid-row: span 300;
|
|
36
|
+
@if ($is-open == true) {
|
|
37
|
+
grid-column: $ds-grid-sidebar-sidebar-2-column-start /
|
|
38
|
+
$ds-grid-sidebar-sidebar-2-column-end;
|
|
39
|
+
display: unset;
|
|
40
|
+
width: 320px;
|
|
41
|
+
max-width: 320px;
|
|
42
|
+
margin-left: -24px;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
@media (min-width: 1535px) {
|
|
46
|
+
margin-left: -32px;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
@import './_grid-sidebar-sidebar.scss';
|
|
2
|
+
|
|
3
|
+
@mixin ds-grid-sidebar($is-sidebar-1-open: false, $is-sidebar-2-open: false) {
|
|
4
|
+
@if $is-sidebar-1-open == false and $is-sidebar-2-open == true {
|
|
5
|
+
@error "Sidebar 1 cannot be visually closed when sidebar 2 is open";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
display: grid;
|
|
9
|
+
--ds-grid-sidebar-gap: 16px;
|
|
10
|
+
gap: var(--ds-grid-sidebar-gap);
|
|
11
|
+
min-width: 320px;
|
|
12
|
+
box-sizing: content-box;
|
|
13
|
+
grid-template-columns:
|
|
14
|
+
var(--ds-internal-grid-safe-zone)
|
|
15
|
+
[main-start] repeat(4, minmax(0, 1fr))
|
|
16
|
+
[main-end] var(--ds-internal-grid-safe-zone);
|
|
17
|
+
--ds-internal-grid-safe-zone: 0;
|
|
18
|
+
--ds-grid-span-one-half: span 4;
|
|
19
|
+
--ds-grid-span-one-third: span 4;
|
|
20
|
+
--ds-grid-span-two-thirds: span 4;
|
|
21
|
+
--ds-grid-span-one-quarter: span 2;
|
|
22
|
+
|
|
23
|
+
@if $is-sidebar-1-open == false {
|
|
24
|
+
& > :first-child {
|
|
25
|
+
@include ds-grid-sidebar-sidebar-1(false);
|
|
26
|
+
}
|
|
27
|
+
& > :nth-child(2) {
|
|
28
|
+
@include ds-grid-sidebar-sidebar-2(false);
|
|
29
|
+
}
|
|
30
|
+
} @else if $is-sidebar-1-open == true and $is-sidebar-2-open == false {
|
|
31
|
+
& > :first-child {
|
|
32
|
+
@include ds-grid-sidebar-sidebar-1(true);
|
|
33
|
+
}
|
|
34
|
+
& > :nth-child(2) {
|
|
35
|
+
@include ds-grid-sidebar-sidebar-2(false);
|
|
36
|
+
}
|
|
37
|
+
} @else if $is-sidebar-1-open == true and $is-sidebar-2-open == true {
|
|
38
|
+
& > :first-child {
|
|
39
|
+
@include ds-grid-sidebar-sidebar-1(true);
|
|
40
|
+
}
|
|
41
|
+
& > :nth-child(2) {
|
|
42
|
+
@include ds-grid-sidebar-sidebar-2(true);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@media (min-width: 768px) {
|
|
47
|
+
--ds-grid-sidebar-gap: 24px;
|
|
48
|
+
gap: var(--ds-grid-sidebar-gap);
|
|
49
|
+
grid-template-columns:
|
|
50
|
+
var(--ds-internal-grid-safe-zone)
|
|
51
|
+
[main-start] repeat(6, minmax(0, 1fr))
|
|
52
|
+
[main-end] var(--ds-internal-grid-safe-zone);
|
|
53
|
+
--ds-internal-grid-safe-zone: 9px;
|
|
54
|
+
--ds-grid-span-one-half: span 3;
|
|
55
|
+
--ds-grid-span-one-third: span 2;
|
|
56
|
+
--ds-grid-span-two-thirds: span 4;
|
|
57
|
+
--ds-grid-span-one-quarter: span 3;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@media (min-width: 1024px) {
|
|
61
|
+
--ds-grid-sidebar-gap: 0px;
|
|
62
|
+
gap: var(--ds-grid-sidebar-gap);
|
|
63
|
+
column-gap: 24px;
|
|
64
|
+
// The children get a margin-bottom to imitate row-gap behavior
|
|
65
|
+
// This is counteracted for the last row in the parent
|
|
66
|
+
margin-bottom: -24px;
|
|
67
|
+
& > * {
|
|
68
|
+
margin-bottom: 24px;
|
|
69
|
+
}
|
|
70
|
+
@if $is-sidebar-1-open == false {
|
|
71
|
+
grid-template-columns:
|
|
72
|
+
[sidebar-1-start] fit-content(64px)
|
|
73
|
+
[sidebar-1-end]
|
|
74
|
+
var(--ds-internal-grid-safe-zone-left)
|
|
75
|
+
[main-start] repeat(6, minmax(0, 1fr))
|
|
76
|
+
[main-end] var(--ds-internal-grid-safe-zone-right);
|
|
77
|
+
/* The safe zone + gap equal to what is called "margin" in the designs,
|
|
78
|
+
* the "margin" on the right differs based on the status of the sidebar 1 and 2
|
|
79
|
+
* 28 + 24 = 52
|
|
80
|
+
*/
|
|
81
|
+
--ds-internal-grid-safe-zone-right: 28px;
|
|
82
|
+
} @else if $is-sidebar-1-open == true and $is-sidebar-2-open == false {
|
|
83
|
+
grid-template-columns:
|
|
84
|
+
[sidebar-1-start] fit-content(264px)
|
|
85
|
+
[sidebar-1-end]
|
|
86
|
+
var(--ds-internal-grid-safe-zone-left)
|
|
87
|
+
[main-start] repeat(6, minmax(0, 1fr))
|
|
88
|
+
[main-end] var(--ds-internal-grid-safe-zone-right);
|
|
89
|
+
/* The safe zone + gap equal to what is called "margin" in the designs,
|
|
90
|
+
* the "margin" on the right differs based on the status of the sidebar 1 and 2
|
|
91
|
+
* 26 + 24 = 50
|
|
92
|
+
*/
|
|
93
|
+
--ds-internal-grid-safe-zone-right: 26px;
|
|
94
|
+
} @else if $is-sidebar-1-open == true and $is-sidebar-2-open == true {
|
|
95
|
+
grid-template-columns:
|
|
96
|
+
[sidebar-1-start] fit-content(264px)
|
|
97
|
+
[sidebar-1-end sidebar-2-start] fit-content(320px)
|
|
98
|
+
[sidebar-2-end]
|
|
99
|
+
var(--ds-internal-grid-safe-zone-left)
|
|
100
|
+
[main-start] repeat(6, minmax(0, 1fr))
|
|
101
|
+
[main-end] var(--ds-internal-grid-safe-zone-right);
|
|
102
|
+
/* The safe zone + gap equal to what is called "margin" in the designs,
|
|
103
|
+
* the "margin" on the right differs based on the status of the sidebar 1 and 2
|
|
104
|
+
* 30 + 24 = 54
|
|
105
|
+
*/
|
|
106
|
+
--ds-internal-grid-safe-zone-right: 30px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
--ds-internal-grid-safe-zone-left: 2px;
|
|
110
|
+
|
|
111
|
+
--ds-grid-span-one-half: span 3;
|
|
112
|
+
--ds-grid-span-one-third: span 2;
|
|
113
|
+
--ds-grid-span-two-thirds: span 4;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@media (min-width: 1536px) {
|
|
117
|
+
column-gap: 32px;
|
|
118
|
+
// The children get a margin-bottom to imitate row-gap behavior
|
|
119
|
+
// This is counteracted for the last row in the parent
|
|
120
|
+
margin-bottom: -32px;
|
|
121
|
+
& > * {
|
|
122
|
+
margin-bottom: 32px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@if $is-sidebar-1-open == false {
|
|
126
|
+
grid-template-columns:
|
|
127
|
+
[sidebar-1-start] fit-content(64px)
|
|
128
|
+
[sidebar-1-end]
|
|
129
|
+
var(--ds-internal-grid-safe-zone-left)
|
|
130
|
+
[main-start] repeat(12, minmax(0, 1fr))
|
|
131
|
+
[main-end] var(--ds-internal-grid-safe-zone-right);
|
|
132
|
+
/* The safe zone + gap equal to what is called "margin" in the designs,
|
|
133
|
+
* the "margin" on the right differs based on the status of the sidebar 1 and 2
|
|
134
|
+
* 40 + 32 = 72
|
|
135
|
+
*/
|
|
136
|
+
--ds-internal-grid-safe-zone-right: 40px;
|
|
137
|
+
} @else if $is-sidebar-1-open == true and $is-sidebar-2-open == false {
|
|
138
|
+
grid-template-columns:
|
|
139
|
+
[sidebar-1-start] fit-content(264px)
|
|
140
|
+
[sidebar-1-end]
|
|
141
|
+
var(--ds-internal-grid-safe-zone-left)
|
|
142
|
+
[main-start] repeat(12, minmax(0, 1fr))
|
|
143
|
+
[main-end] var(--ds-internal-grid-safe-zone-right);
|
|
144
|
+
/* The safe zone + gap equal to what is called "margin" in the designs,
|
|
145
|
+
* the "margin" on the right differs based on the status of the sidebar 1 and 2
|
|
146
|
+
* 32 + 32 = 64
|
|
147
|
+
*/
|
|
148
|
+
--ds-internal-grid-safe-zone-right: 32px;
|
|
149
|
+
} @else if $is-sidebar-1-open == true and $is-sidebar-2-open == true {
|
|
150
|
+
grid-template-columns:
|
|
151
|
+
[sidebar-1-start] fit-content(264px)
|
|
152
|
+
[sidebar-1-end sidebar-2-start] fit-content(320px)
|
|
153
|
+
[sidebar-2-end]
|
|
154
|
+
var(--ds-internal-grid-safe-zone-left)
|
|
155
|
+
[main-start] repeat(12, minmax(0, 1fr))
|
|
156
|
+
[main-end] var(--ds-internal-grid-safe-zone-right);
|
|
157
|
+
/* The safe zone + gap equal to what is called "margin" in the designs,
|
|
158
|
+
* the "margin" on the right differs based on the status of the sidebar 1 and 2
|
|
159
|
+
* 36 + 32 = 68
|
|
160
|
+
*/
|
|
161
|
+
--ds-internal-grid-safe-zone-right: 36px;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
--ds-internal-grid-safe-zone-left: 0px;
|
|
165
|
+
|
|
166
|
+
--ds-grid-span-one-half: span 6;
|
|
167
|
+
--ds-grid-span-one-third: span 4;
|
|
168
|
+
--ds-grid-span-two-thirds: span 8;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@media (min-width: 2304px) {
|
|
172
|
+
max-width: 2304px;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
@mixin ds-grid {
|
|
2
|
+
display: grid;
|
|
3
|
+
--ds-grid-gap: 16px;
|
|
4
|
+
gap: var(--ds-grid-gap);
|
|
5
|
+
min-width: 320px;
|
|
6
|
+
box-sizing: content-box;
|
|
7
|
+
grid-template-columns:
|
|
8
|
+
[full-start extended-start] var(--ds-internal-grid-safe-zone)
|
|
9
|
+
[main-start narrow-left-start narrow-center-start] repeat(4, minmax(0, 1fr))
|
|
10
|
+
[narrow-center-end narrow-left-end main-end] var(
|
|
11
|
+
--ds-internal-grid-safe-zone
|
|
12
|
+
)
|
|
13
|
+
[extended-end full-end];
|
|
14
|
+
// The safe zone + gap equal to what is called "margin" in the designs 0+16 = 16
|
|
15
|
+
--ds-internal-grid-safe-zone: 0;
|
|
16
|
+
--ds-grid-span-one-half: span 4;
|
|
17
|
+
--ds-grid-span-one-third: span 4;
|
|
18
|
+
--ds-grid-span-two-thirds: span 4;
|
|
19
|
+
--ds-grid-span-one-quarter: span 2;
|
|
20
|
+
|
|
21
|
+
@media (min-width: 768px) {
|
|
22
|
+
--ds-grid-gap: 24px;
|
|
23
|
+
gap: var(--ds-grid-gap);
|
|
24
|
+
grid-template-columns:
|
|
25
|
+
[full-start extended-start] var(--ds-internal-grid-safe-zone)
|
|
26
|
+
[main-start narrow-left-start narrow-center-start] repeat(
|
|
27
|
+
6,
|
|
28
|
+
minmax(0, 1fr)
|
|
29
|
+
)
|
|
30
|
+
[narrow-center-end narrow-left-end main-end] var(
|
|
31
|
+
--ds-internal-grid-safe-zone
|
|
32
|
+
)
|
|
33
|
+
[extended-end full-end];
|
|
34
|
+
// The safe zone + gap equal to what is called "margin" in the designs 9+24 = 33
|
|
35
|
+
--ds-internal-grid-safe-zone: 9px;
|
|
36
|
+
--ds-grid-span-one-half: span 3;
|
|
37
|
+
--ds-grid-span-one-third: span 2;
|
|
38
|
+
--ds-grid-span-two-thirds: span 4;
|
|
39
|
+
--ds-grid-span-one-quarter: span 3;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@media (min-width: 1024px) {
|
|
43
|
+
grid-template-columns:
|
|
44
|
+
[full-start extended-start] var(--ds-internal-grid-safe-zone)
|
|
45
|
+
[main-start narrow-left-start] repeat(2, minmax(0, 1fr))
|
|
46
|
+
[narrow-center-start] repeat(6, minmax(0, 1fr))
|
|
47
|
+
[narrow-left-end] repeat(2, minmax(0, 1fr))
|
|
48
|
+
[narrow-center-end] repeat(2, minmax(0, 1fr))
|
|
49
|
+
[main-end] var(--ds-internal-grid-safe-zone)
|
|
50
|
+
[extended-end full-end];
|
|
51
|
+
// The safe zone + gap equal to what is called "margin" in the designs 26+24 = 50
|
|
52
|
+
--ds-internal-grid-safe-zone: 26px;
|
|
53
|
+
--ds-grid-span-one-half: span 6;
|
|
54
|
+
--ds-grid-span-one-third: span 4;
|
|
55
|
+
--ds-grid-span-two-thirds: span 8;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@media (min-width: 1536px) {
|
|
59
|
+
--ds-grid-gap: 32px;
|
|
60
|
+
gap: var(--ds-grid-gap);
|
|
61
|
+
grid-template-columns:
|
|
62
|
+
[full-start extended-start] var(--ds-internal-grid-safe-zone)
|
|
63
|
+
[main-start narrow-left-start] repeat(3, minmax(0, 1fr))
|
|
64
|
+
[narrow-center-start] repeat(3, minmax(0, 1fr))
|
|
65
|
+
[narrow-left-end] repeat(3, minmax(0, 1fr))
|
|
66
|
+
[narrow-center-end] repeat(3, minmax(0, 1fr))
|
|
67
|
+
[main-end] var(--ds-internal-grid-safe-zone)
|
|
68
|
+
[extended-end full-end];
|
|
69
|
+
// The safe zone + gap equal to what is called "margin" in the designs 32+32 = 64
|
|
70
|
+
--ds-internal-grid-safe-zone: 32px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media (min-width: 1668px) {
|
|
74
|
+
grid-template-columns:
|
|
75
|
+
[full-start] auto
|
|
76
|
+
[extended-start] var(--ds-internal-grid-safe-zone)
|
|
77
|
+
[main-start narrow-left-start] repeat(3, minmax(0, calc(1668px / 16)))
|
|
78
|
+
[narrow-center-start] repeat(3, minmax(0, calc(1668px / 16)))
|
|
79
|
+
[narrow-left-end] repeat(3, minmax(0, calc(1668px / 16)))
|
|
80
|
+
[narrow-center-end] repeat(3, minmax(0, calc(1668px / 16)))
|
|
81
|
+
[main-end] var(--ds-internal-grid-safe-zone)
|
|
82
|
+
[extended-end]
|
|
83
|
+
auto [full-end];
|
|
84
|
+
--ds-internal-grid-safe-zone: 0px;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Base mixin to define common styles
|
|
2
|
+
@mixin base-heading($fontFamily, $fontSize, $lineHeight) {
|
|
3
|
+
font-family: #{unquote(
|
|
4
|
+
$fontFamily + ', Arial Narrow, Arial, Heiti SC, sans-serif'
|
|
5
|
+
)};
|
|
6
|
+
font-style: normal;
|
|
7
|
+
font-variant: normal;
|
|
8
|
+
font-weight: normal;
|
|
9
|
+
font-size: $fontSize;
|
|
10
|
+
line-height: $lineHeight;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@mixin responsive-heading($min, $fontSize, $lineHeight) {
|
|
14
|
+
@include ds-media-query-min($min: $min) {
|
|
15
|
+
font-size: $fontSize;
|
|
16
|
+
line-height: $lineHeight;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Mixins for specific heading sizes
|
|
21
|
+
@mixin ds-heading-x-large {
|
|
22
|
+
@include base-heading('STIHL Contraface Display Title', 1.625rem, 1.2);
|
|
23
|
+
@include responsive-heading('l', 1.875rem, 1.25);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@mixin ds-heading-large {
|
|
27
|
+
@include base-heading('STIHL Contraface Display Title', 1.375rem, 1.25);
|
|
28
|
+
@include responsive-heading('l', 1.625rem, 1.2);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@mixin ds-heading-medium {
|
|
32
|
+
@include base-heading('STIHL Contraface Text Bold', 1.25rem, 1.2);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@mixin ds-heading-medium-uppercase {
|
|
36
|
+
@include base-heading('STIHL Contraface Display Title', 1.25rem, 1.2);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@mixin ds-heading-small {
|
|
40
|
+
@include base-heading('STIHL Contraface Text Bold', 1rem, 1.5);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@mixin ds-heading-small-uppercase {
|
|
44
|
+
@include base-heading('STIHL Contraface Display Title', 1rem, 1.5);
|
|
45
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This mixin provides a utility to wrap styles within a media query specifically
|
|
3
|
+
* targeting devices that support hover. It ensures that hover styles are
|
|
4
|
+
* applied only to non-touch (hover capable) devices.
|
|
5
|
+
*/
|
|
6
|
+
@mixin hover-media-query {
|
|
7
|
+
@media (hover: hover) {
|
|
8
|
+
@content;
|
|
9
|
+
}
|
|
10
|
+
}
|