diff --git a/README.md b/README.md index 4eebdc3..38f0f87 100644 --- a/README.md +++ b/README.md @@ -9,24 +9,25 @@ This repository is including and will be including components, enumerates in tab - [x] Icon - [x] FAB - [X] Radio - - [ ] Segmented (WIP) + - [X] Segmented - [X] Checkbox - [x] Text fields - [X] Switches -- [ ] Chips - [x] Icon - [x] Ripple Effect - [X] Dividers - [x] Badges -- [ ] Select field -- [ ] Bottom sheets - [X] Cards +- [X] Typography +- [ ] Chips +- [ ] Select field (WIP) +- [ ] Bottom sheets - [ ] Menus - [ ] Navigation - [ ] Bars - [ ] Drawer - [ ] Rail -- [ ] Sliders +- [ ] Sliders (WIP) - [ ] Snackbar - [ ] Tabs - [ ] Bottom sheets diff --git a/app/page.tsx b/app/page.tsx index d17a745..f09e93d 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,7 +1,7 @@ import React from 'react'; import testImage1 from './test-images/test-image-1.jpg'; import { Card } from '../src/primitive-components/card/card'; -import {Checkbox, Radio} from '../src/primitive-components/components'; +import { Checkbox, IconButton } from '../src/primitive-components/components'; import { CardBody } from '../src/primitive-components/card/card-body'; import { CardMedia } from '../src/primitive-components/card/card-media'; import { CardFooter } from '../src/primitive-components/card/card-footer'; @@ -9,7 +9,6 @@ import { CardHeader } from '../src/primitive-components/card/card-header'; import { Typography } from '../src/primitive-components/typography/typography'; import { CardActionArea } from '../src/primitive-components/card/card-action-area'; import { Slider } from '../src/primitive-components/input-components/slider/slider'; -import { Button } from '../src/primitive-components/button-components/button/button'; import { SegmentButton } from '../src/primitive-components/button-components/segmented-buttons/segment-button'; import { SegmentedButtons } from '../src/primitive-components/button-components/segmented-buttons/segmented-buttons'; @@ -25,15 +24,22 @@ export default function Page() { padding: '8px', }} > -
+
- Header-3 + + Welcome to Material You for Next.js! + + + {"It's UI kit for fast frontend development!"} + -

+ Lorem ipsum dolor sit amet, consecrate adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. @@ -45,16 +51,20 @@ export default function Page() { Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -

+
- - - + + - - + +
diff --git a/src/primitive-components/button-components/button/button.tsx b/src/primitive-components/button-components/button/button.tsx index 6bd73d6..57fc106 100644 --- a/src/primitive-components/button-components/button/button.tsx +++ b/src/primitive-components/button-components/button/button.tsx @@ -5,6 +5,7 @@ import { ButtonProps } from './button.types'; import { bool, oneOf, string } from 'prop-types'; import { ButtonLayout } from '../button-layout/button-layout'; import { IconWrapper } from '../../icon/icon-wrapper'; +import { Typography } from '../../typography/typography'; /** * Button component @@ -32,7 +33,13 @@ export const Button = forwardRef( ref={ref} > - {props.children} + + {props.children} + ), diff --git a/src/primitive-components/button-components/fab/fab.tsx b/src/primitive-components/button-components/fab/fab.tsx index 250f045..8e67b83 100644 --- a/src/primitive-components/button-components/fab/fab.tsx +++ b/src/primitive-components/button-components/fab/fab.tsx @@ -1,9 +1,10 @@ 'use client'; -import { forwardRef } from 'react'; -import { Icon } from '../../components'; import { FABProps } from './fab.types'; +import { Icon } from '../../components'; +import React, { forwardRef } from 'react'; import { bool, oneOf, string } from 'prop-types'; +import { Typography } from '../../typography/typography'; import { ButtonLayout } from '../button-layout/button-layout'; /** @@ -21,6 +22,7 @@ const sizes = { export const FAB = forwardRef( ( { + children, icon = 'edit', className = '', size = 'default', @@ -43,7 +45,13 @@ export const FAB = forwardRef( {icon} {size === 'extended' ? ( - {props.children} + + {children} + ) : ( <> )} diff --git a/src/primitive-components/button-components/segmented-buttons/segment-button.tsx b/src/primitive-components/button-components/segmented-buttons/segment-button.tsx index ed084b6..5497d78 100644 --- a/src/primitive-components/button-components/segmented-buttons/segment-button.tsx +++ b/src/primitive-components/button-components/segmented-buttons/segment-button.tsx @@ -3,10 +3,8 @@ import { string } from 'prop-types'; import React, { forwardRef, useState } from 'react'; import { IconWrapper } from '../../icon/icon-wrapper'; +import { Typography } from '../../typography/typography'; import { SegmentedButton } from './segmented-buttons.types'; -import { ButtonLayout } from '../button-layout/button-layout'; -import { ButtonLayoutProps } from '../button-layout/button-layout.types'; - export const SegmentButton = forwardRef< HTMLButtonElement, ButtonLayoutProps & SegmentedButton @@ -19,6 +17,7 @@ export const SegmentButton = forwardRef< weight, svgSize, fillIcon, + children, iconSize, opticalSize, toggled = false, @@ -58,13 +57,22 @@ export const SegmentButton = forwardRef< type={type} weight={weight} > - {props.children} + + {children} + ); }, ); +import { ButtonLayout } from '../button-layout/button-layout'; + +import { ButtonLayoutProps } from '../button-layout/button-layout.types'; SegmentButton.propTypes = { children: string, diff --git a/src/primitive-components/button-components/segmented-buttons/segmented-buttons.types.ts b/src/primitive-components/button-components/segmented-buttons/segmented-buttons.types.ts index 8d049e9..c4cadaa 100644 --- a/src/primitive-components/button-components/segmented-buttons/segmented-buttons.types.ts +++ b/src/primitive-components/button-components/segmented-buttons/segmented-buttons.types.ts @@ -1,11 +1,10 @@ import { HTMLAttributes, ReactElement } from 'react'; -import { IconProps, IconWrapperProps } from '../../icon/icon.types'; +import { IconWrapperProps } from '../../icon/icon.types'; export type SegmentedButton = IconWrapperProps & { icon?: string; toggled?: boolean; centralRipple?: boolean; - children?: string | ReactElement; }; export interface SegmentedButtons { diff --git a/src/primitive-components/icon/icon.types.ts b/src/primitive-components/icon/icon.types.ts index 9f26de1..8fb0f28 100644 --- a/src/primitive-components/icon/icon.types.ts +++ b/src/primitive-components/icon/icon.types.ts @@ -20,7 +20,4 @@ export type IconWrapperProps = IconPlacement & icon?: string; }; -export type IconProps = SVGProps & - GeneralIconProps & { - children?: string | undefined; - }; +export type IconProps = SVGProps & GeneralIconProps; diff --git a/src/primitive-components/input-components/checkbox/checkbox.tsx b/src/primitive-components/input-components/checkbox/checkbox.tsx index 27f59ad..cd9046a 100644 --- a/src/primitive-components/input-components/checkbox/checkbox.tsx +++ b/src/primitive-components/input-components/checkbox/checkbox.tsx @@ -3,8 +3,8 @@ import { bool } from 'prop-types'; import { CheckboxProps } from './checkbox.types'; import { RippleEffect } from '../../ripple/ripple-effect'; -import useRippleEffect from '../../ripple/hooks/useRippleEffect'; import { InputLayout } from '../input-layout/input-layout'; +import useRippleEffect from '../../ripple/hooks/useRippleEffect'; import { forwardRef, useEffect, @@ -51,7 +51,6 @@ export const Checkbox = forwardRef( className={'m3-checkbox-ripple-layer'} ref={ripplesRef} /> - {props.children}
); }, diff --git a/src/primitive-components/input-components/input-layout/input-layout.types.ts b/src/primitive-components/input-components/input-layout/input-layout.types.ts index 4dc77ec..c7131b8 100644 --- a/src/primitive-components/input-components/input-layout/input-layout.types.ts +++ b/src/primitive-components/input-components/input-layout/input-layout.types.ts @@ -6,7 +6,3 @@ export interface InputLayoutProps typeInput?: string; type?: string; } - -export interface LabelPlacement { - labelPlacement?: 'left' | 'right'; -} diff --git a/src/primitive-components/input-components/slider/slider.tsx b/src/primitive-components/input-components/slider/slider.tsx index 248dc55..4b18604 100644 --- a/src/primitive-components/input-components/slider/slider.tsx +++ b/src/primitive-components/input-components/slider/slider.tsx @@ -1,18 +1,60 @@ -import React, { forwardRef, HTMLAttributes } from 'react'; -import { InputLayout } from '../input-layout/input-layout'; +'use client'; -export const Slider = forwardRef< - HTMLInputElement, - HTMLAttributes ->((props, ref) => { - return ( -
- -
- ); -}); +import { InputLayout } from '../input-layout/input-layout'; +import React, { + ChangeEvent, + forwardRef, + InputHTMLAttributes, + useId, + useLayoutEffect, + useState, +} from 'react'; + +interface SliderProps extends InputHTMLAttributes { + options?: number[]; +} + +export const Slider = forwardRef( + ({ options, ...props }, ref) => { + const sliderId = useId(); + const [isChrome, setIsChrome] = useState(false); + + useLayoutEffect(() => { + setIsChrome(navigator.userAgent.indexOf('AppleWebKit') != -1); + }, []); + + return ( +
+ ) => { + props.onChange?.apply(this, props?.onChange?.prototype); + + if (isChrome) { + const fraction = + (parseInt(event.target.value) / + parseInt(event.target.max)) * + 100; + event.target.style.background = `linear-gradient(\ + to right, var(--md-sys-color-primary) ${fraction}%, \ + var(--md-sys-color-surface-container-highest) ${fraction}%\ + )`; + } + }} + ref={ref} + type={'range'} + typeInput={'slider'} + /> + {options && ( + + {options.map((option, index) => ( + + )} +
+ ); + }, +); diff --git a/src/primitive-components/input-components/switch/switch.tsx b/src/primitive-components/input-components/switch/switch.tsx index 070d146..855aa9f 100644 --- a/src/primitive-components/input-components/switch/switch.tsx +++ b/src/primitive-components/input-components/switch/switch.tsx @@ -4,37 +4,41 @@ import { bool } from 'prop-types'; import React, { forwardRef } from 'react'; import { SwitchMainProps } from './switch.types'; import { InputLayout } from '../input-layout/input-layout'; -import { LabelPlacement } from '../input-layout/input-layout.types'; /** * Switch component ** description */ -export const Switch = forwardRef< - HTMLInputElement, - SwitchMainProps & LabelPlacement ->(({ icon, selected = false, ...props }, ref) => ( -
- - - - - - - {icon && !selected && ( - close - )} - {icon && check} - - -
-)); +export const Switch = forwardRef( + ({ icon, selected = false, ...props }, ref) => ( + <> +
+ + + + + + + {icon && !selected && ( + + close + + )} + {icon && ( + check + )} + + +
+ + ), +); Switch.propTypes = { icon: bool, diff --git a/src/primitive-components/typography/typography.tsx b/src/primitive-components/typography/typography.tsx index b072768..83142ec 100644 --- a/src/primitive-components/typography/typography.tsx +++ b/src/primitive-components/typography/typography.tsx @@ -1,76 +1,25 @@ -import { forwardRef, HTMLAttributes } from 'react'; +import { createElement, forwardRef } from 'react'; +import { getTypographyRole } from './utils/get-typography-role'; +import { + TypographyProps, + Typography as TypographyTargetRef, +} from './typography.types'; -export const Typography = { - h1: forwardRef>( - (props, ref) => { - return ( -

- {props.children} -

- ); - }, - ), - h2: forwardRef>( - (props, ref) => { - return ( -

- {props.children} -

- ); - }, - ), - h3: forwardRef>( - (props, ref) => { - return ( -

- {props.children} -

- ); - }, - ), - h4: forwardRef>( - (props, ref) => { - return ( -

- {props.children} -

- ); - }, - ), - h5: forwardRef>( - (props, ref) => { - return ( -
- {props.children} -
- ); - }, - ), - h6: forwardRef>( - (props, ref) => { - return ( -
- {props.children} -
- ); - }, - ), -}; +export const Typography = forwardRef( + ({ size, role, children, ...props }, ref) => { + const typeElement = getTypographyRole(role, size); + + const extraClasses = + `m3 m3-typography ${size && role ? `${role}-${size}` : ''}`.trimEnd(); + + return createElement( + typeElement, + { + ...props, + ref: ref, + className: extraClasses, + }, + children, + ); + }, +); diff --git a/src/primitive-components/typography/typography.types.ts b/src/primitive-components/typography/typography.types.ts new file mode 100644 index 0000000..141479d --- /dev/null +++ b/src/primitive-components/typography/typography.types.ts @@ -0,0 +1,21 @@ +import { HTMLAttributes } from 'react'; + +export type Typography = + | HTMLLabelElement + | HTMLHeadingElement + | HTMLSpanElement + | HTMLParagraphElement; + +export type TypographySize = 'hero' | 'xl' | 'small' | 'medium' | 'large'; + +export type TypographyRole = + | 'display' + | 'headline' + | 'title' + | 'body' + | 'label'; + +export interface TypographyProps extends HTMLAttributes { + size: TypographySize; + role: TypographyRole; +} diff --git a/src/primitive-components/typography/utils/get-typography-role.ts b/src/primitive-components/typography/utils/get-typography-role.ts new file mode 100644 index 0000000..c67a92e --- /dev/null +++ b/src/primitive-components/typography/utils/get-typography-role.ts @@ -0,0 +1,32 @@ +import { TypographyRole, TypographySize } from '../typography.types'; + +export function getTypographyRole(role: TypographyRole, size: TypographySize) { + switch (role) { + case 'display': + return 'h1'; + case 'headline': + switch (size) { + case 'large' || 'hero' || 'xl': + return 'h2'; + case 'medium': + return 'h3'; + case 'small': + return 'h4'; + } + break; + case 'title': + switch (size) { + case 'large' || 'hero' || 'xl': + return 'h4'; + case 'medium': + return 'h5'; + case 'small': + return 'h6'; + } + break; + case 'body': + return 'p'; + case 'label': + return 'label'; + } +} diff --git a/src/styles/button-styles/segmented-button.sass b/src/styles/button-styles/segmented-button.sass index a23ddfb..a0e18c0 100644 --- a/src/styles/button-styles/segmented-button.sass +++ b/src/styles/button-styles/segmented-button.sass @@ -30,6 +30,9 @@ div.m3.m3-segmented-buttons & > svg > text fill: var(--md-sys-color-on-surface) + & > span.m3.m3-ripple-domain > span.m3.ripple + background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent) + &:disabled border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 12%, transparent) @@ -61,6 +64,3 @@ div.m3.m3-segmented-buttons & > span.m3.m3-button-segment-state-layer background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent) - &:active - & > span.m3.m3-ripple-domain > span.m3.ripple - background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent) diff --git a/src/styles/card.sass b/src/styles/card.sass index 1d55299..dd45522 100644 --- a/src/styles/card.sass +++ b/src/styles/card.sass @@ -12,17 +12,17 @@ div.m3.m3-card & > :is(div.m3-card-footer, header.m3-card-header, section.m3-card-body) > .m3-card-media:first-child, & > .m3-card-media:first-child, & > .m3-card-action-area:first-child > .m3-card-action-area-content > .m3-card-media:first-child - padding: padding-calculating(false) border-radius: 12px !important + padding: padding-calculating(false) div.m3.m3-card > .m3-card-action-area:first-child > .m3-card-action-area-content > .m3-card-media:first-child - padding: padding-calculating(false) border-radius: 12px !important + padding: padding-calculating(false) div.m3-card-footer, header.m3-card-header, section.m3-card-body, .m3-card-media.m3 - padding: padding-calculating(true) display: block box-sizing: border-box + padding: padding-calculating(true) .m3.m3-card-media &.m3-rounded @@ -40,7 +40,7 @@ div.m3.m3-card-action-area contain: content position: relative border-radius: inherit - transition: box-shadow .2s cubic-bezier(0.2, 0, 0, 1) + transition: background-color, box-shadow, .2s cubic-bezier(0.2, 0, 0, 1) & > div.m3.m3-card-action-area-content top: 0 @@ -52,7 +52,9 @@ div.m3.m3-card-action-area width: 100% height: 100% position: absolute - transition: background-color .2s cubic-bezier(0.2, 0, 0, 1) + + & > .m3.m3-ripple-domain > .m3.ripple + background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) &:hover & > span.m3.m3-card-state-layer @@ -79,6 +81,3 @@ div.m3.m3-card-action-area &:not(&:has(span.m3.m3-ripple-domain)) & > span.m3.m3-card-state-layer background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) - - & > span.m3.m3-ripple-domain > .m3.ripple - background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) diff --git a/src/styles/fonts.sass b/src/styles/fonts.sass index 40c7fb8..39606ab 100644 --- a/src/styles/fonts.sass +++ b/src/styles/fonts.sass @@ -10,7 +10,7 @@ $weights: ("Thin": 100, "Light": 300, "Regular": 400, "Medium": 500, "Bold": 700 @each $name, $weight in $weights @font-face - font-family: Roboto + font-family: Roboto, sans-serif font-face-name: #{$name} font-weight: #{$weight} src: url("./font/Roboto-#{$name}.ttf") diff --git a/src/styles/generics.css b/src/styles/generics.css index 13eef79..dcdd403 100644 --- a/src/styles/generics.css +++ b/src/styles/generics.css @@ -1,22 +1,19 @@ -@import "./themes/tokens.css"; -@import "./themes/colors.module.css"; -@import "./themes/typography.module.css"; @import "./themes/theme.dark.css" (prefers-color-scheme: dark); @import "./themes/theme.light.css" (prefers-color-scheme: light); div.m3.m3-card > :is(div.m3-card-footer, header.m3-card-header, section.m3-card-body) > .m3-card-media:first-child, div.m3.m3-card > .m3-card-media:first-child, div.m3.m3-card > .m3-card-action-area:first-child > .m3-card-action-area-content > .m3-card-media:first-child { - padding: 0px; border-radius: 12px !important; + padding: 0px; } div.m3.m3-card > .m3-card-action-area:first-child > .m3-card-action-area-content > .m3-card-media:first-child { - padding: 0px; border-radius: 12px !important; + padding: 0px; } div.m3-card-footer, header.m3-card-header, section.m3-card-body, .m3-card-media.m3 { - padding: 16px; display: block; box-sizing: border-box; + padding: 16px; } .m3.m3-card-media { @@ -36,7 +33,7 @@ div.m3.m3-card-action-area { contain: content; position: relative; border-radius: inherit; - transition: box-shadow 0.2s cubic-bezier(0.2, 0, 0, 1); + transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1); } div.m3.m3-card-action-area > div.m3.m3-card-action-area-content { top: 0; @@ -48,7 +45,9 @@ div.m3.m3-card-action-area > span.m3:is(.m3-card-state-layer, .m3-ripple-domain) width: 100%; height: 100%; position: absolute; - transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1); +} +div.m3.m3-card-action-area > .m3.m3-ripple-domain > .m3.ripple { + background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent); } div.m3.m3-card-action-area:hover > span.m3.m3-card-state-layer { background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent); @@ -71,67 +70,65 @@ div.m3.m3-card-action-area:active.m3-card-elevated { div.m3.m3-card-action-area:active:not(div.m3.m3-card-action-area:active:has(span.m3.m3-ripple-domain)) > span.m3.m3-card-state-layer { background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent); } -div.m3.m3-card-action-area:active > span.m3.m3-ripple-domain > .m3.ripple { - background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent); -} svg.m3.m3-svg-icon > text { - alignment-baseline: central; text-anchor: middle; + dominant-baseline: central; + alignment-baseline: central; } svg.m3.m3-svg-icon > text.m3-size-12px { width: 12px; aspect-ratio: 1; - line-height: 12px; font-size: 12px; + line-height: 12px; } svg.m3.m3-svg-icon > text.m3-size-16px { width: 16px; aspect-ratio: 1; - line-height: 16px; font-size: 16px; + line-height: 16px; } svg.m3.m3-svg-icon > text.m3-size-20px { width: 20px; aspect-ratio: 1; - line-height: 20px; font-size: 20px; + line-height: 20px; } svg.m3.m3-svg-icon > text.m3-size-24px { width: 24px; aspect-ratio: 1; - line-height: 24px; font-size: 24px; + line-height: 24px; } svg.m3.m3-svg-icon > text.m3-size-28px { width: 28px; aspect-ratio: 1; - line-height: 28px; font-size: 28px; + line-height: 28px; } svg.m3.m3-svg-icon > text.m3-size-32px { width: 32px; aspect-ratio: 1; - line-height: 32px; font-size: 32px; + line-height: 32px; } svg.m3.m3-svg-icon > text.m3-size-36px { width: 36px; aspect-ratio: 1; - line-height: 36px; font-size: 36px; + line-height: 36px; } svg.m3.m3-svg-icon > text.m3-size-40px { width: 40px; aspect-ratio: 1; - line-height: 40px; font-size: 40px; + line-height: 40px; } svg.m3.m3-svg-icon > text.m3-size-48px { width: 48px; aspect-ratio: 1; - line-height: 48px; font-size: 48px; + line-height: 48px; } svg.m3.m3-svg-icon > text.m3-Outlined { font-family: Material-Symbols-Outlined-Regular; @@ -189,37 +186,37 @@ svg.m3.m3-badge > text { src: url("./font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].woff2") format("woff2"); } @font-face { - font-family: Roboto; + font-family: Roboto, sans-serif; font-face-name: Thin; font-weight: 100; src: url("./font/Roboto-Thin.ttf"); } @font-face { - font-family: Roboto; + font-family: Roboto, sans-serif; font-face-name: Light; font-weight: 300; src: url("./font/Roboto-Light.ttf"); } @font-face { - font-family: Roboto; + font-family: Roboto, sans-serif; font-face-name: Regular; font-weight: 400; src: url("./font/Roboto-Regular.ttf"); } @font-face { - font-family: Roboto; + font-family: Roboto, sans-serif; font-face-name: Medium; font-weight: 500; src: url("./font/Roboto-Medium.ttf"); } @font-face { - font-family: Roboto; + font-family: Roboto, sans-serif; font-face-name: Bold; font-weight: 700; src: url("./font/Roboto-Bold.ttf"); } @font-face { - font-family: Roboto; + font-family: Roboto, sans-serif; font-face-name: Black; font-weight: 900; src: url("./font/Roboto-Black.ttf"); @@ -241,10 +238,13 @@ svg.m3.m3-badge > text { z-index: 20; aspect-ratio: 1; border-radius: 50%; + animation-duration: 0.55s; + animation-iteration-count: 1; animation-name: rippleAppearanceAnimation; animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - animation-duration: 0.55s; - transition: opacity, background, background-color, 0.55s cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 0.55s; + transition-property: opacity, background-color; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } .m3.ripple.visible { opacity: 1 !important; @@ -305,6 +305,12 @@ div.m3.m3-container.m3-container-elevated { background-color: var(--md-sys-color-surface-container-low); } +label { + white-space: nowrap; + display: inline-block; + vertical-align: middle; +} + button.m3.m3-fab { transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important; } @@ -753,6 +759,9 @@ div.m3.m3-segmented-buttons > button.m3.m3-button-segment > span { div.m3.m3-segmented-buttons > button.m3.m3-button-segment > svg > text { fill: var(--md-sys-color-on-surface); } +div.m3.m3-segmented-buttons > button.m3.m3-button-segment > span.m3.m3-ripple-domain > span.m3.ripple { + background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent); +} div.m3.m3-segmented-buttons > button.m3.m3-button-segment:disabled { border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 12%, transparent); } @@ -782,9 +791,6 @@ div.m3.m3-segmented-buttons > button.m3.m3-button-segment:hover > span.m3.m3-but div.m3.m3-segmented-buttons > button.m3.m3-button-segment:is(div.m3.m3-segmented-buttons > button.m3.m3-button-segment:active, div.m3.m3-segmented-buttons > button.m3.m3-button-segment:focus-visible) > span.m3.m3-button-segment-state-layer { background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent); } -div.m3.m3-segmented-buttons > button.m3.m3-button-segment:active > span.m3.m3-ripple-domain > span.m3.ripple { - background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent); -} div.m3.m3-radio-container { width: 20px; @@ -793,12 +799,16 @@ div.m3.m3-radio-container { display: inline-flex; justify-content: center; } +div.m3.m3-radio-container + label.m3.m3-radio-label { + margin-inline: 3px; +} div.m3.m3-radio-container > span.m3-checkbox-ripple-layer, div.m3.m3-radio-container span.m3.m3-radio-state-layer { z-index: 5; + width: 40px; + height: 40px; + aspect-ratio: 1; } div.m3.m3-radio-container > span.m3.m3-radio-state-layer { - width: 40px; - aspect-ratio: 1; border-radius: 50%; position: absolute; pointer-events: none; @@ -880,71 +890,113 @@ div.m3.m3-slider-container { display: flex; align-items: center; } +div.m3.m3-slider-container > datalist { + display: none; +} input[type=range].m3.m3-slider { margin: 0; - height: 4px; appearance: none; - overflow: visible; border-radius: 2px; - margin-inline: 10px; - background-color: var(--md-sys-color-surface-container-highest); + margin-inline: 8px; + background: var(--md-sys-color-surface-container-highest); +} +input[type=range].m3.m3-slider:-moz-any(input[type=range].m3.m3-slider) { + height: 4px; +} +input[type=range].m3.m3-slider:-webkit-any(input[type=range].m3.m3-slider) { + background: linear-gradient(to right, var(--md-sys-color-primary) 0%, var(--md-sys-color-surface-container-highest) 0%); +} +input[type=range].m3.m3-slider::-moz-range-track { + height: 4px; + overflow: hidden; + border-radius: 2px; +} +input[type=range].m3.m3-slider::-moz-range-progress { + height: 4px; + overflow: hidden; + border-radius: 2px; + background-color: var(--md-sys-color-primary); +} +input[type=range].m3.m3-slider::-moz-range-thumb { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3); + width: 20px; + height: 20px; + appearance: none; + border-radius: 50%; + box-sizing: border-box; + outline: 10px solid transparent; + background: var(--md-sys-color-primary); + transition: 0.2s cubic-bezier(0.2, 0, 0, 1); + border: none; +} +input[type=range].m3.m3-slider::-moz-range-thumb:hover { + outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent); +} +input[type=range].m3.m3-slider::-moz-range-thumb:hover:after { + content: "1"; +} +input[type=range].m3.m3-slider::-moz-range-thumb:is(:active, :focus-visible) { + outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent); } input[type=range].m3.m3-slider::-webkit-slider-container { - margin-inline: -8px; + appearance: none; + box-shadow: none; + border-radius: 2px; + min-block-size: 4px; + height: 4px; +} +input[type=range].m3.m3-slider::-webkit-slider-runnable-track { + height: 20px; } input[type=range].m3.m3-slider::-webkit-slider-thumb { box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3); width: 20px; - aspect-ratio: 1; + height: 20px; appearance: none; - overflow: visible; border-radius: 50%; box-sizing: border-box; outline: 10px solid transparent; background: var(--md-sys-color-primary); transition: 0.2s cubic-bezier(0.2, 0, 0, 1); } -input[type=range].m3.m3-slider::-webkit-slider-thumb::after { - width: 40px; - aspect-ratio: 1; - background-color: transparent; -} input[type=range].m3.m3-slider::-webkit-slider-thumb:hover { outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent); } +input[type=range].m3.m3-slider::-webkit-slider-thumb:hover:after { + content: "1"; +} input[type=range].m3.m3-slider::-webkit-slider-thumb:is(:active, :focus-visible) { outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent); } div.m3.m3-switch { - margin: 4px; gap: 20px; - box-sizing: content-box; + margin: 4px; + height: 32px; display: flex; align-items: center; - justify-content: center; - width: 52px; - height: 32px; + justify-content: left; + box-sizing: content-box; } div.m3.m3-switch > svg { - overflow: visible; - transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); width: 52px; height: 32px; + overflow: visible; + transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); } div.m3.m3-switch > svg > g { transform: translate(11.5%, 81%); transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); } div.m3.m3-switch > svg > g > text { - font-family: Material-Symbols-Outlined-Regular; font-size: 20px; + font-family: Material-Symbols-Outlined-Regular, serif; } div.m3.m3-switch > svg > circle.m3.m3-switch-handler-state-layer, div.m3.m3-switch > svg > circle.m3.m3-switch-handler { - transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); cy: 50%; cx: 16px; + transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); } div.m3.m3-switch > svg > circle.m3.m3-switch-handler-state-layer { r: 20px; @@ -962,13 +1014,13 @@ div.m3.m3-switch > svg > rect.m3.m3-switch-track { height: 30px; } div.m3.m3-switch > input.m3 { - cursor: pointer; - appearance: none; - opacity: 0 !important; margin: 0; width: 52px; height: 32px; + cursor: pointer; + appearance: none; position: absolute; + opacity: 0 !important; } div.m3.m3-switch > input.m3:disabled { cursor: not-allowed; @@ -1007,30 +1059,30 @@ div.m3.m3-switch > input.m3:is(div.m3.m3-switch > input.m3:checked, div.m3.m3-sw r: 14px; } div.m3.m3-switch > input.m3:not(:checked):disabled + svg > circle.m3.m3-switch-handler { - fill: var(--md-sys-color-on-surface); fill-opacity: 38%; + fill: var(--md-sys-color-on-surface); } div.m3.m3-switch > input.m3:hover:not(:disabled):checked + svg > circle.m3.m3-switch-handler { fill: var(--md-sys-color-primary-container); } div.m3.m3-switch > input.m3:hover:not(:disabled):checked + svg > circle.m3.m3-switch-handler-state-layer { - fill: var(--md-sys-color-primary); fill-opacity: 8%; + fill: var(--md-sys-color-primary); } div.m3.m3-switch > input.m3:hover:not(:disabled):not(:checked) + svg > circle.m3.m3-switch-handler { fill: var(--md-sys-color-on-surface-variant); } div.m3.m3-switch > input.m3:hover:not(:disabled):not(:checked) + svg > circle.m3.m3-switch-handler-state-layer { - fill: var(--md-sys-color-on-surface); fill-opacity: 8%; + fill: var(--md-sys-color-on-surface); } div.m3.m3-switch > input.m3:active:not(:disabled):checked + svg > circle.m3.m3-switch-handler-state-layer { - fill: var(--md-sys-color-primary); fill-opacity: 12%; + fill: var(--md-sys-color-primary); } div.m3.m3-switch > input.m3:active:not(:disabled):not(:checked) + svg > circle.m3.m3-switch-handler-state-layer { - fill: var(--md-sys-color-on-surface); fill-opacity: 12%; + fill: var(--md-sys-color-on-surface); } div.m3.m3-switch > input.m3:is(:checked, :checked:disabled) + svg > rect.m3.m3-switch-track { rx: 16px; @@ -1047,8 +1099,8 @@ div.m3.m3-switch > input.m3:not(:checked) + svg > rect.m3.m3-switch-track { fill: var(--md-sys-color-surface-container-highest); } div.m3.m3-switch > input.m3:checked + svg > rect.m3.m3-switch-track { - stroke: var(--md-sys-color-primary); fill: var(--md-sys-color-primary); + stroke: var(--md-sys-color-primary); } div.m3.m3-switch > input.m3:disabled + svg > g > text.m3 { fill: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 38%, transparent); @@ -1062,28 +1114,27 @@ div.m3.m3-switch > input.m3:checked:disabled + svg > g > text.m3 { fill: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent); } div.m3.m3-switch > input.m3:checked:disabled + svg > rect.m3.m3-switch-track { - stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 0%, transparent); fill: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent); + stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 0%, transparent); } div.m3.m3-checkbox-container { + gap: 16px; + height: 40px; display: flex; + aspect-ratio: 1; position: relative; align-items: center; justify-content: center; - aspect-ratio: 1; - width: 18px; - height: 18px; } div.m3.m3-checkbox-container > span.m3.m3-checkbox-state-layer { - position: absolute; - width: 2.5rem; - aspect-ratio: inherit; + width: 40px; + aspect-ratio: 1; border-radius: 50%; + position: absolute; transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1); } - -span.m3.m3-checkbox-ripple-layer { +div.m3.m3-checkbox-container > span.m3.m3-checkbox-ripple-layer { z-index: 20; width: 2.5rem; height: 2.5rem; @@ -1093,7 +1144,6 @@ span.m3.m3-checkbox-ripple-layer { } input[type=checkbox].m3.m3-checkbox { - margin: 0; z-index: 10; display: flex; width: 1.125rem; @@ -1107,6 +1157,7 @@ input[type=checkbox].m3.m3-checkbox { transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1); } input[type=checkbox].m3.m3-checkbox ~ span.m3-checkbox-state { + position: absolute; color: var(--md-sys-color-on-surface-variant); transition: color 0.2s cubic-bezier(0.2, 0, 0, 1); } @@ -1132,13 +1183,13 @@ input[type=checkbox].m3.m3-checkbox:disabled ~ *:is(:hover, input[type=checkbox] opacity: 38%; } input[type=checkbox].m3.m3-checkbox ~ span.m3-checkbox-state { - pointer-events: none; z-index: 10; display: flex; font-size: 24px; font-weight: 700; line-height: 24px; align-items: center; + pointer-events: none; justify-content: center; font-family: Material-Symbols-Outlined-Regular, sans-serif; font-variation-settings: "FILL" 1, "wght" 300, "GRAD" 0, "opsz" 24; @@ -1394,16 +1445,733 @@ div.m3.m3-text-field.outlined:hover:not(div.m3.m3-text-field.outlined:hover:has( border-color: var(--md-sys-color-on-surface); } +:root { + /* display - hero */ + --md-sys-typescale-display-hero-font-family-name: Roboto; + --md-sys-typescale-display-hero-font-family-style: Regular; + --md-sys-typescale-display-hero-font-weight: 475; + --md-sys-typescale-display-hero-font-size: 112px; + --md-sys-typescale-display-hero-line-height: 1; + --md-sys-typescale-display-hero-letter-spacing: 0; + /* display - xl */ + --md-sys-typescale-display-xl-font-family-name: Roboto; + --md-sys-typescale-display-xl-font-family-style: Regular; + --md-sys-typescale-display-xl-font-weight: 475; + --md-sys-typescale-display-xl-font-size: 88px; + --md-sys-typescale-display-xl-line-height: 96px; + --md-sys-typescale-display-xl-letter-spacing: 0; + /* display - large */ + --md-sys-typescale-display-large-font-family-name: Roboto; + --md-sys-typescale-display-large-font-family-style: Regular; + --md-sys-typescale-display-large-font-weight: 400; + --md-sys-typescale-display-large-font-size: 57px; + --md-sys-typescale-display-large-line-height: 64px; + --md-sys-typescale-display-large-letter-spacing: -0.25px; + /* display - medium */ + --md-sys-typescale-display-medium-font-family-name: Roboto; + --md-sys-typescale-display-medium-font-family-style: Regular; + --md-sys-typescale-display-medium-font-weight: 400; + --md-sys-typescale-display-medium-font-size: 45px; + --md-sys-typescale-display-medium-line-height: 52px; + --md-sys-typescale-display-medium-letter-spacing: 0px; + /* display - small */ + --md-sys-typescale-display-small-font-family-name: Roboto; + --md-sys-typescale-display-small-font-family-style: Regular; + --md-sys-typescale-display-small-font-weight: 400; + --md-sys-typescale-display-small-font-size: 36px; + --md-sys-typescale-display-small-line-height: 44px; + --md-sys-typescale-display-small-letter-spacing: 0px; + /* headline - large */ + --md-sys-typescale-headline-large-font-family-name: Roboto; + --md-sys-typescale-headline-large-font-family-style: Regular; + --md-sys-typescale-headline-large-font-weight: 400; + --md-sys-typescale-headline-large-font-size: 32px; + --md-sys-typescale-headline-large-line-height: 40px; + --md-sys-typescale-headline-large-letter-spacing: 0px; + /* headline - medium */ + --md-sys-typescale-headline-medium-font-family-name: Roboto; + --md-sys-typescale-headline-medium-font-family-style: Regular; + --md-sys-typescale-headline-medium-font-weight: 400; + --md-sys-typescale-headline-medium-font-size: 28px; + --md-sys-typescale-headline-medium-line-height: 36px; + --md-sys-typescale-headline-medium-letter-spacing: 0px; + /* headline - small */ + --md-sys-typescale-headline-small-font-family-name: Roboto; + --md-sys-typescale-headline-small-font-family-style: Regular; + --md-sys-typescale-headline-small-font-weight: 400; + --md-sys-typescale-headline-small-font-size: 24px; + --md-sys-typescale-headline-small-line-height: 32px; + --md-sys-typescale-headline-small-letter-spacing: 0px; + /* title - large */ + --md-sys-typescale-title-large-font-family-name: Roboto; + --md-sys-typescale-title-large-font-family-style: Regular; + --md-sys-typescale-title-large-font-weight: 400; + --md-sys-typescale-title-large-font-size: 22px; + --md-sys-typescale-title-large-line-height: 28px; + --md-sys-typescale-title-large-letter-spacing: 0px; + /* title - medium */ + --md-sys-typescale-title-medium-font-family-name: Roboto; + --md-sys-typescale-title-medium-font-family-style: Medium; + --md-sys-typescale-title-medium-font-weight: 500; + --md-sys-typescale-title-medium-font-size: 16px; + --md-sys-typescale-title-medium-line-height: 24px; + --md-sys-typescale-title-medium-letter-spacing: 0.15px; + /* title - small */ + --md-sys-typescale-title-small-font-family-name: Roboto; + --md-sys-typescale-title-small-font-family-style: Medium; + --md-sys-typescale-title-small-font-weight: 500; + --md-sys-typescale-title-small-font-size: 14px; + --md-sys-typescale-title-small-line-height: 20px; + --md-sys-typescale-title-small-letter-spacing: 0.1px; + /* body - large */ + --md-sys-typescale-body-large-font-family-name: Roboto; + --md-sys-typescale-body-large-font-family-style: Regular; + --md-sys-typescale-body-large-font-weight: 400; + --md-sys-typescale-body-large-font-size: 16px; + --md-sys-typescale-body-large-line-height: 24px; + --md-sys-typescale-body-large-letter-spacing: 0.5px; + /* body - medium */ + --md-sys-typescale-body-medium-font-family-name: Roboto; + --md-sys-typescale-body-medium-font-family-style: Regular; + --md-sys-typescale-body-medium-font-weight: 400; + --md-sys-typescale-body-medium-font-size: 14px; + --md-sys-typescale-body-medium-line-height: 20px; + --md-sys-typescale-body-medium-letter-spacing: 0.25px; + /* body - small */ + --md-sys-typescale-body-small-font-family-name: Roboto; + --md-sys-typescale-body-small-font-family-style: Regular; + --md-sys-typescale-body-small-font-weight: 400; + --md-sys-typescale-body-small-font-size: 12px; + --md-sys-typescale-body-small-line-height: 16px; + --md-sys-typescale-body-small-letter-spacing: 0.4px; + /* label - large */ + --md-sys-typescale-label-large-font-family-name: Roboto; + --md-sys-typescale-label-large-font-family-style: Medium; + --md-sys-typescale-label-large-font-weight: 500; + --md-sys-typescale-label-large-font-size: 14px; + --md-sys-typescale-label-large-line-height: 20px; + --md-sys-typescale-label-large-letter-spacing: 0.1px; + /* label - medium */ + --md-sys-typescale-label-medium-font-family-name: Roboto; + --md-sys-typescale-label-medium-font-family-style: Medium; + --md-sys-typescale-label-medium-font-weight: 500; + --md-sys-typescale-label-medium-font-size: 12px; + --md-sys-typescale-label-medium-line-height: 16px; + --md-sys-typescale-label-medium-letter-spacing: 0.5px; + /* label - small */ + --md-sys-typescale-label-small-font-family-name: Roboto; + --md-sys-typescale-label-small-font-family-style: Medium; + --md-sys-typescale-label-small-font-weight: 500; + --md-sys-typescale-label-small-font-size: 11px; + --md-sys-typescale-label-small-line-height: 16px; + --md-sys-typescale-label-small-letter-spacing: 0.5px; + /* shape - extra large top rounding */ + --md-sys-shape-extra-large-top-rounding: 28px 28px 0 0; + /* shape - extra large rounding */ + --md-sys-shape-extra-large-rounding: 28px; + /* shape - large top rounding */ + --md-sys-shape-large-top-rounding: 16px 16px 0 0; + /* shape - large end rounding */ + --md-sys-shape-large-end-rounding: 0 16px 16px 0; + /* shape - large start rounding */ + --md-sys-shape-large-start-rounding: 16px 0 0 16px; + /* shape - large rounding */ + --md-sys-shape-large-rounding: 16px; + /* shape - medium rounding */ + --md-sys-shape-medium-rounding: 12px; + /* shape - small rounding */ + --md-sys-shape-small-rounding: 8px; + /* shape - extra small top rounding */ + --md-sys-shape-extra-small-top-rounding: 4px 4px 0 0; + /* shape - extra small rounding */ + --md-sys-shape-extra-small-rounding: 4px; +} + +.primary { + background-color: var(--md-sys-color-primary); +} + +.primary-text { + color: var(--md-sys-color-primary); +} + +.on-primary { + background-color: var(--md-sys-color-on-primary); +} + +.on-primary-text { + color: var(--md-sys-color-on-primary); +} + +.primary-container { + background-color: var(--md-sys-color-primary-container); +} + +.primary-container-text { + color: var(--md-sys-color-primary-container); +} + +.on-primary-container { + background-color: var(--md-sys-color-on-primary-container); +} + +.on-primary-container-text { + color: var(--md-sys-color-on-primary-container); +} + +.primary-fixed { + background-color: var(--md-sys-color-primary-fixed); +} + +.primary-fixed-text { + color: var(--md-sys-color-primary-fixed); +} + +.on-primary-fixed { + background-color: var(--md-sys-color-on-primary-fixed); +} + +.on-primary-fixed-text { + color: var(--md-sys-color-on-primary-fixed); +} + +.primary-fixed-dim { + background-color: var(--md-sys-color-primary-fixed-dim); +} + +.primary-fixed-dim-text { + color: var(--md-sys-color-primary-fixed-dim); +} + +.on-primary-fixed-variant { + background-color: var(--md-sys-color-on-primary-fixed-variant); +} + +.on-primary-fixed-variant-text { + color: var(--md-sys-color-on-primary-fixed-variant); +} + +.secondary { + background-color: var(--md-sys-color-secondary); +} + +.secondary-text { + color: var(--md-sys-color-secondary); +} + +.on-secondary { + background-color: var(--md-sys-color-on-secondary); +} + +.on-secondary-text { + color: var(--md-sys-color-on-secondary); +} + +.secondary-container { + background-color: var(--md-sys-color-secondary-container); +} + +.secondary-container-text { + color: var(--md-sys-color-secondary-container); +} + +.on-secondary-container { + background-color: var(--md-sys-color-on-secondary-container); +} + +.on-secondary-container-text { + color: var(--md-sys-color-on-secondary-container); +} + +.secondary-fixed { + background-color: var(--md-sys-color-secondary-fixed); +} + +.secondary-fixed-text { + color: var(--md-sys-color-secondary-fixed); +} + +.on-secondary-fixed { + background-color: var(--md-sys-color-on-secondary-fixed); +} + +.on-secondary-fixed-text { + color: var(--md-sys-color-on-secondary-fixed); +} + +.secondary-fixed-dim { + background-color: var(--md-sys-color-secondary-fixed-dim); +} + +.secondary-fixed-dim-text { + color: var(--md-sys-color-secondary-fixed-dim); +} + +.on-secondary-fixed-variant { + background-color: var(--md-sys-color-on-secondary-fixed-variant); +} + +.on-secondary-fixed-variant-text { + color: var(--md-sys-color-on-secondary-fixed-variant); +} + +.tertiary { + background-color: var(--md-sys-color-tertiary); +} + +.tertiary-text { + color: var(--md-sys-color-tertiary); +} + +.on-tertiary { + background-color: var(--md-sys-color-on-tertiary); +} + +.on-tertiary-text { + color: var(--md-sys-color-on-tertiary); +} + +.tertiary-container { + background-color: var(--md-sys-color-tertiary-container); +} + +.tertiary-container-text { + color: var(--md-sys-color-tertiary-container); +} + +.on-tertiary-container { + background-color: var(--md-sys-color-on-tertiary-container); +} + +.on-tertiary-container-text { + color: var(--md-sys-color-on-tertiary-container); +} + +.tertiary-fixed { + background-color: var(--md-sys-color-tertiary-fixed); +} + +.tertiary-fixed-text { + color: var(--md-sys-color-tertiary-fixed); +} + +.on-tertiary-fixed { + background-color: var(--md-sys-color-on-tertiary-fixed); +} + +.on-tertiary-fixed-text { + color: var(--md-sys-color-on-tertiary-fixed); +} + +.tertiary-fixed-dim { + background-color: var(--md-sys-color-tertiary-fixed-dim); +} + +.tertiary-fixed-dim-text { + color: var(--md-sys-color-tertiary-fixed-dim); +} + +.on-tertiary-fixed-variant { + background-color: var(--md-sys-color-on-tertiary-fixed-variant); +} + +.on-tertiary-fixed-variant-text { + color: var(--md-sys-color-on-tertiary-fixed-variant); +} + +.error { + background-color: var(--md-sys-color-error); +} + +.error-text { + color: var(--md-sys-color-error); +} + +.error-container { + background-color: var(--md-sys-color-error-container); +} + +.error-container-text { + color: var(--md-sys-color-error-container); +} + +.on-error { + background-color: var(--md-sys-color-on-error); +} + +.on-error-text { + color: var(--md-sys-color-on-error); +} + +.on-error-container { + background-color: var(--md-sys-color-on-error-container); +} + +.on-error-container-text { + color: var(--md-sys-color-on-error-container); +} + +.background { + background-color: var(--md-sys-color-background); +} + +.background-text { + color: var(--md-sys-color-background); +} + +.on-background { + background-color: var(--md-sys-color-on-background); +} + +.on-background-text { + color: var(--md-sys-color-on-background); +} + +.outline { + background-color: var(--md-sys-color-outline); +} + +.outline-text { + color: var(--md-sys-color-outline); +} + +.inverse-on-surface { + background-color: var(--md-sys-color-inverse-on-surface); +} + +.inverse-on-surface-text { + color: var(--md-sys-color-inverse-on-surface); +} + +.inverse-surface { + background-color: var(--md-sys-color-inverse-surface); +} + +.inverse-surface-text { + color: var(--md-sys-color-inverse-surface); +} + +.inverse-primary { + background-color: var(--md-sys-color-inverse-primary); +} + +.inverse-primary-text { + color: var(--md-sys-color-inverse-primary); +} + +.shadow { + background-color: var(--md-sys-color-shadow); +} + +.shadow-text { + color: var(--md-sys-color-shadow); +} + +.surface-tint { + background-color: var(--md-sys-color-surface-tint); +} + +.surface-tint-text { + color: var(--md-sys-color-surface-tint); +} + +.outline-variant { + background-color: var(--md-sys-color-outline-variant); +} + +.outline-variant-text { + color: var(--md-sys-color-outline-variant); +} + +.scrim { + background-color: var(--md-sys-color-scrim); +} + +.scrim-text { + color: var(--md-sys-color-scrim); +} + +.surface { + background-color: var(--md-sys-color-surface); +} + +.surface-text { + color: var(--md-sys-color-surface); +} + +.on-surface { + background-color: var(--md-sys-color-on-surface); +} + +.on-surface-text { + color: var(--md-sys-color-on-surface); +} + +.surface-variant { + background-color: var(--md-sys-color-surface-variant); +} + +.surface-variant-text { + color: var(--md-sys-color-surface-variant); +} + +.on-surface-variant { + background-color: var(--md-sys-color-on-surface-variant); +} + +.on-surface-variant-text { + color: var(--md-sys-color-on-surface-variant); +} + +.surface-container-highest { + background-color: var(--md-sys-color-surface-container-highest); +} + +.surface-container-highest-text { + color: var(--md-sys-color-surface-container-highest); +} + +.surface-container-high { + background-color: var(--md-sys-color-surface-container-high); +} + +.surface-container-high-text { + color: var(--md-sys-color-surface-container-high); +} + +.surface-container { + background-color: var(--md-sys-color-surface-container); +} + +.surface-container-text { + color: var(--md-sys-color-surface-container); +} + +.surface-container-low { + background-color: var(--md-sys-color-surface-container-low); +} + +.surface-container-low-text { + color: var(--md-sys-color-surface-container-low); +} + +.surface-container-lowest { + background-color: var(--md-sys-color-surface-container-lowest); +} + +.surface-container-lowest-text { + color: var(--md-sys-color-surface-container-lowest); +} + +.surface-dim { + background-color: var(--md-sys-color-surface-dim); +} + +.surface-dim-text { + color: var(--md-sys-color-surface-dim); +} + +.surface-bright { + background-color: var(--md-sys-color-surface-bright); +} + +.surface-bright-text { + color: var(--md-sys-color-surface-bright); +} + +.display-hero { + font-family: var(--md-sys-typescale-display-hero-font-family-name); + font-style: var(--md-sys-typescale-display-hero-font-family-style); + font-weight: var(--md-sys-typescale-display-hero-font-weight); + font-size: var(--md-sys-typescale-display-hero-font-size); + letter-spacing: var(--md-sys-typescale-display-hero-letter-spacing); + line-height: var(--md-sys-typescale-display-hero-line-height); + text-transform: var(--md-sys-typescale-display-hero-text-transform); + text-decoration: var(--md-sys-typescale-display-hero-text-decoration); +} + +.display-xl { + font-family: var(--md-sys-typescale-display-xl-font-family-name); + font-style: var(--md-sys-typescale-display-xl-font-family-style); + font-weight: var(--md-sys-typescale-display-xl-font-weight); + font-size: var(--md-sys-typescale-display-xl-font-size); + letter-spacing: var(--md-sys-typescale-display-xl-letter-spacing); + line-height: var(--md-sys-typescale-display-xl-line-height); + text-transform: var(--md-sys-typescale-display-xl-text-transform); + text-decoration: var(--md-sys-typescale-display-xl-text-decoration); +} + +.display-large { + font-family: var(--md-sys-typescale-display-large-font-family-name); + font-style: var(--md-sys-typescale-display-large-font-family-style); + font-weight: var(--md-sys-typescale-display-large-font-weight); + font-size: var(--md-sys-typescale-display-large-font-size); + letter-spacing: var(--md-sys-typescale-display-large-letter-spacing); + line-height: var(--md-sys-typescale-display-large-line-height); + text-transform: var(--md-sys-typescale-display-large-text-transform); + text-decoration: var(--md-sys-typescale-display-large-text-decoration); +} + +.display-medium { + font-family: var(--md-sys-typescale-display-medium-font-family-name); + font-style: var(--md-sys-typescale-display-medium-font-family-style); + font-weight: var(--md-sys-typescale-display-medium-font-weight); + font-size: var(--md-sys-typescale-display-medium-font-size); + letter-spacing: var(--md-sys-typescale-display-medium-letter-spacing); + line-height: var(--md-sys-typescale-display-medium-line-height); + text-transform: var(--md-sys-typescale-display-medium-text-transform); + text-decoration: var(--md-sys-typescale-display-medium-text-decoration); +} + +.display-small { + font-family: var(--md-sys-typescale-display-small-font-family-name); + font-style: var(--md-sys-typescale-display-small-font-family-style); + font-weight: var(--md-sys-typescale-display-small-font-weight); + font-size: var(--md-sys-typescale-display-small-font-size); + letter-spacing: var(--md-sys-typescale-display-small-letter-spacing); + line-height: var(--md-sys-typescale-display-small-line-height); + text-transform: var(--md-sys-typescale-display-small-text-transform); + text-decoration: var(--md-sys-typescale-display-small-text-decoration); +} + +.headline-large { + font-family: var(--md-sys-typescale-headline-large-font-family-name); + font-style: var(--md-sys-typescale-headline-large-font-family-style); + font-weight: var(--md-sys-typescale-headline-large-font-weight); + font-size: var(--md-sys-typescale-headline-large-font-size); + letter-spacing: var(--md-sys-typescale-headline-large-letter-spacing); + line-height: var(--md-sys-typescale-headline-large-line-height); + text-transform: var(--md-sys-typescale-headline-large-text-transform); + text-decoration: var(--md-sys-typescale-headline-large-text-decoration); +} + +.headline-medium { + font-family: var(--md-sys-typescale-headline-medium-font-family-name); + font-style: var(--md-sys-typescale-headline-medium-font-family-style); + font-weight: var(--md-sys-typescale-headline-medium-font-weight); + font-size: var(--md-sys-typescale-headline-medium-font-size); + letter-spacing: var(--md-sys-typescale-headline-medium-letter-spacing); + line-height: var(--md-sys-typescale-headline-medium-line-height); + text-transform: var(--md-sys-typescale-headline-medium-text-transform); + text-decoration: var(--md-sys-typescale-headline-medium-text-decoration); +} + +.headline-small { + font-family: var(--md-sys-typescale-headline-small-font-family-name); + font-style: var(--md-sys-typescale-headline-small-font-family-style); + font-weight: var(--md-sys-typescale-headline-small-font-weight); + font-size: var(--md-sys-typescale-headline-small-font-size); + letter-spacing: var(--md-sys-typescale-headline-small-letter-spacing); + line-height: var(--md-sys-typescale-headline-small-line-height); + text-transform: var(--md-sys-typescale-headline-small-text-transform); + text-decoration: var(--md-sys-typescale-headline-small-text-decoration); +} + +.body-large { + font-family: var(--md-sys-typescale-body-large-font-family-name); + font-style: var(--md-sys-typescale-body-large-font-family-style); + font-weight: var(--md-sys-typescale-body-large-font-weight); + font-size: var(--md-sys-typescale-body-large-font-size); + letter-spacing: var(--md-sys-typescale-body-large-letter-spacing); + line-height: var(--md-sys-typescale-body-large-line-height); + text-transform: var(--md-sys-typescale-body-large-text-transform); + text-decoration: var(--md-sys-typescale-body-large-text-decoration); +} + +.body-medium { + font-family: var(--md-sys-typescale-body-medium-font-family-name); + font-style: var(--md-sys-typescale-body-medium-font-family-style); + font-weight: var(--md-sys-typescale-body-medium-font-weight); + font-size: var(--md-sys-typescale-body-medium-font-size); + letter-spacing: var(--md-sys-typescale-body-medium-letter-spacing); + line-height: var(--md-sys-typescale-body-medium-line-height); + text-transform: var(--md-sys-typescale-body-medium-text-transform); + text-decoration: var(--md-sys-typescale-body-medium-text-decoration); +} + +.body-small { + font-family: var(--md-sys-typescale-body-small-font-family-name); + font-style: var(--md-sys-typescale-body-small-font-family-style); + font-weight: var(--md-sys-typescale-body-small-font-weight); + font-size: var(--md-sys-typescale-body-small-font-size); + letter-spacing: var(--md-sys-typescale-body-small-letter-spacing); + line-height: var(--md-sys-typescale-body-small-line-height); + text-transform: var(--md-sys-typescale-body-small-text-transform); + text-decoration: var(--md-sys-typescale-body-small-text-decoration); +} + +.label-large { + font-family: var(--md-sys-typescale-label-large-font-family-name); + font-style: var(--md-sys-typescale-label-large-font-family-style); + font-weight: var(--md-sys-typescale-label-large-font-weight); + font-size: var(--md-sys-typescale-label-large-font-size); + letter-spacing: var(--md-sys-typescale-label-large-letter-spacing); + line-height: var(--md-sys-typescale-label-large-line-height); + text-transform: var(--md-sys-typescale-label-large-text-transform); + text-decoration: var(--md-sys-typescale-label-large-text-decoration); +} + +.label-medium { + font-family: var(--md-sys-typescale-label-medium-font-family-name); + font-style: var(--md-sys-typescale-label-medium-font-family-style); + font-weight: var(--md-sys-typescale-label-medium-font-weight); + font-size: var(--md-sys-typescale-label-medium-font-size); + letter-spacing: var(--md-sys-typescale-label-medium-letter-spacing); + line-height: var(--md-sys-typescale-label-medium-line-height); + text-transform: var(--md-sys-typescale-label-medium-text-transform); + text-decoration: var(--md-sys-typescale-label-medium-text-decoration); +} + +.label-small { + font-family: var(--md-sys-typescale-label-small-font-family-name); + font-style: var(--md-sys-typescale-label-small-font-family-style); + font-weight: var(--md-sys-typescale-label-small-font-weight); + font-size: var(--md-sys-typescale-label-small-font-size); + letter-spacing: var(--md-sys-typescale-label-small-letter-spacing); + line-height: var(--md-sys-typescale-label-small-line-height); + text-transform: var(--md-sys-typescale-label-small-text-transform); + text-decoration: var(--md-sys-typescale-label-small-text-decoration); +} + +.title-large { + font-family: var(--md-sys-typescale-title-large-font-family-name); + font-style: var(--md-sys-typescale-title-large-font-family-style); + font-weight: var(--md-sys-typescale-title-large-font-weight); + font-size: var(--md-sys-typescale-title-large-font-size); + letter-spacing: var(--md-sys-typescale-title-large-letter-spacing); + line-height: var(--md-sys-typescale-title-large-line-height); + text-transform: var(--md-sys-typescale-title-large-text-transform); + text-decoration: var(--md-sys-typescale-title-large-text-decoration); +} + +.title-medium { + font-family: var(--md-sys-typescale-title-medium-font-family-name); + font-style: var(--md-sys-typescale-title-medium-font-family-style); + font-weight: var(--md-sys-typescale-title-medium-font-weight); + font-size: var(--md-sys-typescale-title-medium-font-size); + letter-spacing: var(--md-sys-typescale-title-medium-letter-spacing); + line-height: var(--md-sys-typescale-title-medium-line-height); + text-transform: var(--md-sys-typescale-title-medium-text-transform); + text-decoration: var(--md-sys-typescale-title-medium-text-decoration); +} + +.title-small { + font-family: var(--md-sys-typescale-title-small-font-family-name); + font-style: var(--md-sys-typescale-title-small-font-family-style); + font-weight: var(--md-sys-typescale-title-small-font-weight); + font-size: var(--md-sys-typescale-title-small-font-size); + letter-spacing: var(--md-sys-typescale-title-small-letter-spacing); + line-height: var(--md-sys-typescale-title-small-line-height); + text-transform: var(--md-sys-typescale-title-small-text-transform); + text-decoration: var(--md-sys-typescale-title-small-text-decoration); +} + html { font-family: Roboto, serif; color: var(--md-sys-color-on-surface); background-color: var(--md-sys-color-surface-container); } -.m3 { - user-select: none; -} - .m3.m3-wrapper { position: relative; display: block; diff --git a/src/styles/generics.css.map b/src/styles/generics.css.map index 72527f3..4a76ba9 100644 --- a/src/styles/generics.css.map +++ b/src/styles/generics.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["generics.sass","card.sass","mixins/m3-mixins.sass","icon.sass","badge.sass","fonts.sass","ripple.sass","divider.sass","container.sass","button-styles/fabs.sass","button-styles/button.sass","button-styles/icon-button.sass","button-styles/segmented-button.sass","input-styles/radio.sass","input-styles/slider.sass","input-styles/swtich.sass","input-styles/checkbox.sass","input-styles/text-field.sass"],"names":[],"mappings":"AAqBQ;AACA;AACA;AACA;AACA;ACdJ;EAGI;EACA;;;AAER;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EAII;EACA;EACA;EACA;EACA;;AAPA;EACI;;;AAQR;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAGA;EACI;;AAGJ;EACI;;AAGJ;ECzBA;;AD4BA;ECtBA;;AD0BA;ECxCA;;AD2CA;ECrCA;;ADyCI;EACI;;AAER;EACI;;;AE/ER;EACI;EACA;;AAGA;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAeJ;EACI;;AADJ;EACI;;AADJ;EACI;;;ACjBZ;EACI;EACA;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI;;AACR;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACrBJ;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAKJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;ACfR;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;IACE;;EACF;IACE;;;AC5BJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;;AAEJ;EACI;;AAGR;EACI;EACA;;AAEA;EACI;;AAEJ;EACI;;;ACvBZ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;;AAEJ;ENuBI;EMrBA;;;ACnBR;EACI;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EPkDA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AOtDA;EPGA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AOLJ;EPAA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AOFJ;EPHA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AOCJ;EPNA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AOIJ;EPjBA,OOkBkC;EPjBlC,QOiBwC;EPhBxC,eOgB4B;EPf5B,SOe8C;EAC1C;;AAEJ;EPrBA,OOsBkC;EPrBlC,QOqBwC;EPpBxC,eOoB4B;EPnB5B,SOmB8C;EAC1C;;AAEJ;EPzBA,OO0BkC;EPzBlC,QOyBwC;EPxBxC,eOwB4B;EPvB5B,SOuB8C;EAC1C;;AAEJ;EP7BA,OO8BkC;EP7BlC,QO6BwC;EP5BxC,eO4B4B;EP3B5B,SO2B8C;EAC1C;;AAEJ;EPUI;;AOPJ;EPDI;;AOKA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;AC9EZ;EACI;;AACA;EACI;;AACJ;EACI;;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAER;EACI;EACA;EACA;;AAEA;EACI;;AAER;ERfI;EQiBA;EACA;;AAEA;EACI;;AAER;EACI;EACA;;AAEA;EACI;;AAER;ERHA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AQDA;EACI;;AAGA;EACI;;AAER;EACI;;AAGA;ERpDA;;AQuDA;ERjDA;;AQoDA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;ERnEA;;AQsEA;ERhEA;;AQmEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;ACvIZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGA;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;;AAGA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI;;;ACrIZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEA;EACI;;AAER;EACI;;AAEA;EACI;;AAEA;EACI;;AAEZ;EACI;EACA;EACA;;AAEJ;EACI;;AAGA;EACI;;AAGJ;EACI;;AAGJ;EACI;;;ACjEhB;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGI;EACI;;AAEJ;EACI;;AACA;EACI;;AAGJ;EACI;;AAER;EACI;;AACA;EACI;;AAIJ;EACI;EACA;;AAER;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAEZ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;;AC1FhB;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EZuBI;EYTA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAnBA;EACI;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;;AC7BZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEJ;EAEI;;AAGA;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAER;EACI;;AAEJ;EACI;EACA;;AAII;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGA;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;;AC7JhB;EdCI;EACA;EACA;EACA;EACA;EcHA;EACA;;AACA;EdIA;EACA;EACA;EACA;EACA;;;AcLJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEJ;EAII;;AAHA;EACI;;AAKJ;EACI;;AAER;EAII;;AAHA;EACI;;AAIR;EACI;;AAGA;EACI;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAII;EACI;;AAER;EACI;;AACA;EACI;;AAER;EACI;;AAEJ;EACI;;AACA;EACI;;AAGJ;EACI;;AAER;EACI;;AACA;EACI;;;ACvGhB;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAGA;EACI;;AAER;EACI;EACA;;AAEA;EAgBI;EACA;EACA;EACA;EACA;EACA;;AApBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AASR;EACI;EACA;EACA;;AAEJ;EACI;;AAEA;EACI;;AACJ;EACI;;AAER;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGA;EACI;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAER;EAgBI;EACA;;AAhBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAKR;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EACI;;AAEJ;EACI;;AAGA;EACI;EACA;;;AjB5LhB;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA","file":"generics.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["generics.sass","card.sass","mixins/m3-mixins.sass","icon.sass","badge.sass","fonts.sass","ripple.sass","divider.sass","container.sass","typography.sass","button-styles/fabs.sass","button-styles/button.sass","button-styles/icon-button.sass","button-styles/segmented-button.sass","input-styles/radio.sass","input-styles/slider.sass","input-styles/swtich.sass","input-styles/checkbox.sass","input-styles/text-field.sass","themes/tokens.css","themes/colors.module.css","themes/typography.module.css"],"names":[],"mappings":"AAyBQ;AACA;ACfJ;EAGI;EACA;;;AAER;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EAII;EACA;EACA;EACA;EACA;;AAPA;EACI;;;AAQR;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AAGA;EACI;;AAGJ;EACI;;AAGJ;ECzBA;;AD4BA;ECtBA;;AD0BA;ECxCA;;AD2CA;ECrCA;;ADyCI;EACI;;;AE9EZ;EACI;EACA;EACA;;AAGA;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AASJ;EACI,OAVA;EAWA;EACA,WAZA;EAaA,aAbA;;AAgBJ;EACI;;AADJ;EACI;;AADJ;EACI;;;AClBZ;EACI;EACA;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI;;AACR;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACrBJ;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAKJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;ACfR;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;IACE;;EACF;IACE;;;ACjCJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;;AAEJ;EACI;;AAGR;EACI;EACA;;AAEA;EACI;;AAEJ;EACI;;;ACvBZ;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;;AAEJ;ENyBI;EMvBA;;;ACnBR;EACI;EACA;EACA;;;ACHJ;EACI;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;ERoDA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AQxDA;ERKA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AQPJ;EREA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AQJJ;ERDA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AQDJ;ERJA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;AQEJ;ERfA,OQgBkC;ERflC,QQewC;ERdxC,eQc4B;ERb5B,SQa8C;EAC1C;;AAEJ;ERnBA,OQoBkC;ERnBlC,QQmBwC;ERlBxC,eQkB4B;ERjB5B,SQiB8C;EAC1C;;AAEJ;ERvBA,OQwBkC;ERvBlC,QQuBwC;ERtBxC,eQsB4B;ERrB5B,SQqB8C;EAC1C;;AAEJ;ER3BA,OQ4BkC;ER3BlC,QQ2BwC;ER1BxC,eQ0B4B;ERzB5B,SQyB8C;EAC1C;;AAEJ;ERYI;;AQTJ;ERCI;;AQGA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;AC9EZ;EACI;;AACA;EACI;;AACJ;EACI;;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAER;EACI;EACA;EACA;;AAEA;EACI;;AAER;ETbI;ESeA;EACA;;AAEA;EACI;;AAER;EACI;EACA;;AAEA;EACI;;AAER;ETDA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ASHA;EACI;;AAGA;EACI;;AAER;EACI;;AAGA;ETlDA;;ASqDA;ET/CA;;ASkDA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;ETjEA;;ASoEA;ET9DA;;ASiEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;ACvIZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGA;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;;AAGA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI;;;ACrIZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEA;EACI;;AAER;EACI;;AAEA;EACI;;AAEA;EACI;;AAEZ;EACI;EACA;EACA;;AAEJ;EACI;;AAGA;EACI;;AAGJ;EACI;;;AChEhB;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGI;EACI;;AAEJ;EACI;;AACA;EACI;;AAGJ;EACI;;AAER;EACI;;AACA;EACI;;AAIJ;EACI;EACA;;AAER;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAEZ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;;AC9FhB;EACI;EACA;EACA;;AAEA;EACI;;;AAGR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EbSI;EAiDJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;Ea9DI;;Ab6CJ;EAKI;;AAHA;EACI;;AAIR;EACI;;AanDJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EbNI;EAiDJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAjBA;EAKI;;AAHA;EACI;;AAIR;EACI;;;AczFR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEJ;EAEI;;AAGA;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAER;EACI;;AAEJ;EACI;EACA;;AAII;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGA;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;;AC5JhB;EfCI;EACA;EACA;EACA;EACA;EACA;EACA;;AeJA;EfOA;EACA;EACA;EACA;EACA;;AeRA;EACI;EACA;EACA;EACA;EACA;EACA;;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEJ;EAII;;AAHA;EACI;;AAKJ;EACI;;AAER;EAII;;AAHA;EACI;;AAIR;EACI;;AAGA;EACI;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAII;EACI;;AAER;EACI;;AAEA;EACI;;AAER;EACI;;AAEJ;EACI;;AAEA;EACI;;AAGJ;EACI;;AAER;EACI;;AAEA;EACI;;;ACzGhB;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAGA;EACI;;AAER;EACI;EACA;;AAEA;EAgBI;EACA;EACA;EACA;EACA;EACA;;AApBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AASR;EACI;EACA;EACA;;AAEJ;EACI;;AAEA;EACI;;AACJ;EACI;;AAER;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGA;EACI;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAER;EAgBI;EACA;;AAhBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAKR;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EACI;;AAEJ;EACI;;AAGA;EACI;EACA;;;ACvNhB;AACE;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;;;AC5IF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACpSF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ArB5IF;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA","file":"generics.css"} \ No newline at end of file diff --git a/src/styles/generics.sass b/src/styles/generics.sass index ad09c77..ef7cceb 100644 --- a/src/styles/generics.sass +++ b/src/styles/generics.sass @@ -5,6 +5,7 @@ @import "ripple" @import "divider" @import "container" +@import "typography" @import "mixins/m3-mixins" @@ -19,9 +20,9 @@ @import "input-styles/checkbox" @import "input-styles/text-field" -@import "./themes/tokens.css" -@import "./themes/colors.module.css" -@import "./themes/typography.module.css" +@import "./themes/tokens" +@import "./themes/colors.module" +@import "./themes/typography.module" @import "./themes/theme.dark.css" (prefers-color-scheme: dark) @import "./themes/theme.light.css" (prefers-color-scheme: light) @@ -30,9 +31,6 @@ html color: var(--md-sys-color-on-surface) background-color: var(--md-sys-color-surface-container) -.m3 - user-select: none - .m3.m3-wrapper position: relative display: block diff --git a/src/styles/icon.sass b/src/styles/icon.sass index 8e139cd..a8e6cbf 100644 --- a/src/styles/icon.sass +++ b/src/styles/icon.sass @@ -3,15 +3,16 @@ svg.m3.m3-svg-icon $types: ["Outlined", "Rounded", "Sharp"] & > text - alignment-baseline: central text-anchor: middle + dominant-baseline: central + alignment-baseline: central @each $size in $sizes & > text.m3-size-#{$size} width: $size aspect-ratio: 1 - line-height: $size font-size: $size + line-height: $size @each $type in $types & > text.m3-#{$type} diff --git a/src/styles/input-styles/checkbox.sass b/src/styles/input-styles/checkbox.sass index 921706f..2735b8d 100644 --- a/src/styles/input-styles/checkbox.sass +++ b/src/styles/input-styles/checkbox.sass @@ -1,20 +1,18 @@ div.m3.m3-checkbox-container - @include m3-label-mixin - width: 18px - height: 18px + @include m3-checkbox-container-mixin + & > span.m3.m3-checkbox-state-layer @include m3-state-layer-mixin -span.m3.m3-checkbox-ripple-layer - z-index: 20 - width: 2.5rem - height: 2.5rem - contain: content - border-radius: 50% - position: absolute + & > span.m3.m3-checkbox-ripple-layer + z-index: 20 + width: 2.5rem + height: 2.5rem + contain: content + border-radius: 50% + position: absolute input[type="checkbox"].m3.m3-checkbox - margin: 0 z-index: 10 display: flex width: 1.125rem @@ -28,6 +26,7 @@ input[type="checkbox"].m3.m3-checkbox transition: background-color .2s cubic-bezier(0.2, 0, 0, 1) & ~ span.m3-checkbox-state + position: absolute color: var(--md-sys-color-on-surface-variant) transition: color .2s cubic-bezier(0.2, 0, 0, 1) @@ -55,13 +54,13 @@ input[type="checkbox"].m3.m3-checkbox opacity: 38% & ~ span.m3-checkbox-state - pointer-events: none z-index: 10 display: flex font-size: 24px font-weight: 700 line-height: 24px align-items: center + pointer-events: none justify-content: center font-family: Material-Symbols-Outlined-Regular, sans-serif font-variation-settings: 'FILL' 1, 'wght' 300, 'GRAD' 0, 'opsz' 24 @@ -83,6 +82,7 @@ input[type="checkbox"].m3.m3-checkbox &:is(:user-invalid:is(:active, :indeterminate:active), .m3.m3-error:active) ~ span.m3.m3-checkbox-state-layer background-color: color-mix(in srgb, var(--md-sys-color-error) 12%, transparent) + & ~ span.m3-ripple-domain > .m3.ripple background-color: color-mix(in srgb, var(--md-sys-color-error) 20%, transparent) @@ -91,6 +91,7 @@ input[type="checkbox"].m3.m3-checkbox &:is(:checked:active, :indeterminate:active) ~ span.m3.m3-checkbox-state-layer background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent) + & ~ span.m3-ripple-domain > .m3.ripple background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 20%, transparent) @@ -100,6 +101,7 @@ input[type="checkbox"].m3.m3-checkbox &:active ~ span.m3.m3-checkbox-state-layer background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) + & ~ span.m3-ripple-domain > .m3.ripple background-color: color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent) diff --git a/src/styles/input-styles/radio.sass b/src/styles/input-styles/radio.sass index e29754e..5dd0e10 100644 --- a/src/styles/input-styles/radio.sass +++ b/src/styles/input-styles/radio.sass @@ -5,12 +5,16 @@ div.m3.m3-radio-container display: inline-flex justify-content: center + & + label.m3.m3-radio-label + margin-inline: 3px + & > span.m3-checkbox-ripple-layer, span.m3.m3-radio-state-layer z-index: 5 + width: 40px + height: 40px + aspect-ratio: 1 & > span.m3.m3-radio-state-layer - width: 40px - aspect-ratio: 1 border-radius: 50% position: absolute pointer-events: none diff --git a/src/styles/input-styles/slider.sass b/src/styles/input-styles/slider.sass index b80a547..708ba9e 100644 --- a/src/styles/input-styles/slider.sass +++ b/src/styles/input-styles/slider.sass @@ -3,41 +3,51 @@ div.m3.m3-slider-container display: flex align-items: center + & > datalist + display: none + + input[type="range"].m3.m3-slider margin: 0 - height: 4px appearance: none - overflow: visible border-radius: 2px - margin-inline: 10px - background-color: var(--md-sys-color-surface-container-highest) + margin-inline: 8px + background: var(--md-sys-color-surface-container-highest) + + &:-moz-any(&) + height: 4px + + &:-webkit-any(&) + background: linear-gradient(to right, var(--md-sys-color-primary) 0%, var(--md-sys-color-surface-container-highest) 0%) + + &::-moz-range-track + height: 4px + overflow: hidden + border-radius: 2px + + &::-moz-range-progress + height: 4px + overflow: hidden + border-radius: 2px + background-color: var(--md-sys-color-primary) + + &::-moz-range-thumb + @include input-range-thumb-mixin + + border: none &::-webkit-slider-container - margin-inline: -8px + appearance: none + box-shadow: none + border-radius: 2px + min-block-size: 4px + height: 4px + + &::-webkit-slider-runnable-track + height: 20px &::-webkit-slider-thumb - @include elevation-1(false) - - &::after - width: 40px - aspect-ratio: 1 - background-color: transparent - - &:hover - outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent) - - &:is(:active, :focus-visible) - outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent) - - width: 20px - aspect-ratio: 1 - appearance: none - overflow: visible - border-radius: 50% - box-sizing: border-box - outline: 10px solid transparent - background: var(--md-sys-color-primary) - transition: .2s cubic-bezier(0.2, 0, 0, 1) + @include input-range-thumb-mixin diff --git a/src/styles/input-styles/swtich.sass b/src/styles/input-styles/swtich.sass index a149f04..aba49a9 100644 --- a/src/styles/input-styles/swtich.sass +++ b/src/styles/input-styles/swtich.sass @@ -1,30 +1,29 @@ div.m3.m3-switch - margin: 4px gap: 20px - box-sizing: content-box + margin: 4px + height: 32px display: flex align-items: center - justify-content: center - width: 52px - height: 32px + justify-content: left + box-sizing: content-box & > svg - overflow: visible - transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275) width: 52px height: 32px + overflow: visible + transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275) & > g transform: translate(11.5%, 81%) transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275) & > text - font-family: Material-Symbols-Outlined-Regular font-size: 20px + font-family: Material-Symbols-Outlined-Regular,serif & > circle.m3.m3-switch-handler-state-layer, & > circle.m3.m3-switch-handler - transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275) cy: 50% cx: 16px + transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275) & > circle.m3.m3-switch-handler-state-layer r: 20px @@ -42,13 +41,13 @@ div.m3.m3-switch height: 30px & > input.m3 - cursor: pointer - appearance: none - opacity: 0 !important margin: 0 width: 52px height: 32px + cursor: pointer + appearance: none position: absolute + opacity: 0 !important &:disabled cursor: not-allowed @@ -93,8 +92,8 @@ div.m3.m3-switch r: 14px &:not(:checked):disabled + svg > circle.m3.m3-switch-handler - fill: var(--md-sys-color-on-surface) fill-opacity: 38% + fill: var(--md-sys-color-on-surface) &:hover:not(:disabled) &:checked + svg @@ -102,25 +101,25 @@ div.m3.m3-switch fill: var(--md-sys-color-primary-container) & > circle.m3.m3-switch-handler-state-layer - fill: var(--md-sys-color-primary) fill-opacity: 8% + fill: var(--md-sys-color-primary) &:not(:checked) + svg & > circle.m3.m3-switch-handler fill: var(--md-sys-color-on-surface-variant) & > circle.m3.m3-switch-handler-state-layer - fill: var(--md-sys-color-on-surface) fill-opacity: 8% + fill: var(--md-sys-color-on-surface) &:active:not(:disabled) &:checked + svg > circle.m3.m3-switch-handler-state-layer - fill: var(--md-sys-color-primary) fill-opacity: 12% + fill: var(--md-sys-color-primary) &:not(:checked) + svg > circle.m3.m3-switch-handler-state-layer - fill: var(--md-sys-color-on-surface) fill-opacity: 12% + fill: var(--md-sys-color-on-surface) &:is(:checked, :checked:disabled) + svg > rect.m3.m3-switch-track rx: 16px @@ -137,8 +136,8 @@ div.m3.m3-switch fill: var(--md-sys-color-surface-container-highest) &:checked + svg > rect.m3.m3-switch-track - stroke: var(--md-sys-color-primary) fill: var(--md-sys-color-primary) + stroke: var(--md-sys-color-primary) &:disabled + svg & > g > text.m3 @@ -154,5 +153,5 @@ div.m3.m3-switch fill: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent) & > rect.m3.m3-switch-track - stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 0%, transparent) - fill: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) \ No newline at end of file + fill: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) + stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 0%, transparent) \ No newline at end of file diff --git a/src/styles/mixins/m3-mixins.sass b/src/styles/mixins/m3-mixins.sass index c5ff5b2..f892072 100644 --- a/src/styles/mixins/m3-mixins.sass +++ b/src/styles/mixins/m3-mixins.sass @@ -1,15 +1,17 @@ -@mixin m3-label-mixin +@mixin m3-checkbox-container-mixin + gap: 16px + height: 40px display: flex + aspect-ratio: 1 position: relative align-items: center justify-content: center - aspect-ratio: 1 @mixin m3-state-layer-mixin - position: absolute - width: 2.5rem - aspect-ratio: inherit + width: 40px + aspect-ratio: 1 border-radius: 50% + position: absolute transition: background-color .2s cubic-bezier(0.2, 0, 0, 1) @mixin m3-fab-default($b-radius, $width, $height : $width, $padding : 0) @@ -73,3 +75,25 @@ right: 0 position: absolute background: #00000000 + +@mixin input-range-thumb-mixin + @include elevation-1(false) + + &:hover + + &:after + content: '1' + + outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent) + + &:is(:active, :focus-visible) + outline: 10px solid color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent) + + width: 20px + height: 20px + appearance: none + border-radius: 50% + box-sizing: border-box + outline: 10px solid transparent + background: var(--md-sys-color-primary) + transition: .2s cubic-bezier(0.2, 0, 0, 1) diff --git a/src/styles/ripple.sass b/src/styles/ripple.sass index 2ac8725..d9b540a 100644 --- a/src/styles/ripple.sass +++ b/src/styles/ripple.sass @@ -14,10 +14,15 @@ z-index: 20 aspect-ratio: 1 border-radius: 50% + + animation-duration: .55s + animation-iteration-count: 1 animation-name: rippleAppearanceAnimation animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1) - animation-duration: .55s - transition: opacity, background, background-color, .55s cubic-bezier(0.4, 0, 0.2, 1) + + transition-duration: .55s + transition-property: opacity, background-color + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) &.visible opacity: 1 !important diff --git a/src/styles/typography.css b/src/styles/typography.css new file mode 100644 index 0000000..ab5b08d --- /dev/null +++ b/src/styles/typography.css @@ -0,0 +1,5 @@ +:is(h1, h2, h3, h4, h5, h6, code, p, span, pre, label).m3.m3-typography { + vertical-align: center; +} + +/*# sourceMappingURL=typography.css.map */ diff --git a/src/styles/typography.css.map b/src/styles/typography.css.map new file mode 100644 index 0000000..2cde4b2 --- /dev/null +++ b/src/styles/typography.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["typography.sass"],"names":[],"mappings":"AAAA;EACI","file":"typography.css"} \ No newline at end of file diff --git a/src/styles/typography.sass b/src/styles/typography.sass new file mode 100644 index 0000000..c43c688 --- /dev/null +++ b/src/styles/typography.sass @@ -0,0 +1,4 @@ +label + white-space: nowrap + display: inline-block + vertical-align: middle