@splendidlabz/styles 2.3.2 → 3.0.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.
Files changed (147) hide show
  1. package/dist/no-tw/layouts.css +1278 -0
  2. package/dist/no-tw/styles.css +2018 -0
  3. package/dist/styles.css +1254 -1442
  4. package/package.json +23 -9
  5. package/src/addons/index.css +1 -0
  6. package/src/addons/scrollbars.css +60 -0
  7. package/src/{UI/_Accordion.scss → components/accordion.css} +8 -10
  8. package/src/components/drawer.css +20 -0
  9. package/src/components/index.css +2 -0
  10. package/src/effects/elevation.css +290 -0
  11. package/src/effects/frosted-glass.css +42 -0
  12. package/src/effects/gradients.css +107 -0
  13. package/src/effects/highlight.css +13 -0
  14. package/src/effects/index.css +6 -0
  15. package/src/effects/inner-border.css +18 -0
  16. package/src/effects/shadows.css +49 -0
  17. package/src/effects/text-outline.css +27 -0
  18. package/src/form/index.css +2 -0
  19. package/src/form/text-field.css +72 -0
  20. package/src/form/textarea.css +37 -0
  21. package/src/{Base/_Accessibility.scss → generic/accessibility.css} +21 -20
  22. package/src/generic/anchors-and-buttons.css +55 -0
  23. package/src/generic/form.css +62 -0
  24. package/src/generic/index.css +4 -0
  25. package/src/generic/typography.css +48 -0
  26. package/src/layouts/index.css +6 -0
  27. package/src/layouts/macro/flex-grid.css +33 -0
  28. package/src/layouts/macro/grid.css +127 -0
  29. package/src/layouts/macro/index.css +5 -0
  30. package/src/layouts/macro/masonry.css +23 -0
  31. package/src/layouts/macro/subgrid.css +33 -0
  32. package/src/layouts/macro/wrap.css +6 -0
  33. package/src/layouts/micro/breakout.css +38 -0
  34. package/src/layouts/micro/divider.css +102 -0
  35. package/src/layouts/micro/index.css +6 -0
  36. package/src/layouts/micro/micro.css +54 -0
  37. package/src/layouts/micro/scrollable.css +70 -0
  38. package/src/layouts/micro/stack.css +29 -0
  39. package/src/layouts/micro/stacking-context.css +3 -0
  40. package/src/layouts/position/edge.css +429 -0
  41. package/src/layouts/position/fixed.css +102 -0
  42. package/src/layouts/position/index.css +5 -0
  43. package/src/layouts/position/nudge.css +74 -0
  44. package/src/layouts/position/pos.css +337 -0
  45. package/src/layouts/position/sticky.css +11 -0
  46. package/src/layouts/shell/index.css +2 -0
  47. package/src/layouts/shell/shell-grid.css +34 -0
  48. package/src/layouts/shell/shell-simple.css +15 -0
  49. package/src/primitives/backdrop.css +8 -0
  50. package/src/{utils/_mixins.scss → primitives/break-word.css} +4 -2
  51. package/src/primitives/card.css +51 -0
  52. package/src/primitives/focus-within.css +12 -0
  53. package/src/primitives/hero-heading.css +44 -0
  54. package/src/primitives/indent-list.css +77 -0
  55. package/src/primitives/index.css +11 -0
  56. package/src/{Components/_Prose.scss → primitives/prose.css} +11 -29
  57. package/src/primitives/shapes.css +16 -0
  58. package/src/primitives/simple-svg.css +7 -0
  59. package/src/primitives/table.css +197 -0
  60. package/src/primitives/text.css +4 -0
  61. package/src/primitives/writing-mode.css +51 -0
  62. package/src/reset.css +114 -0
  63. package/src/scripts/Masonry.js +8 -0
  64. package/src/scripts/Scrollable.js +14 -0
  65. package/src/scripts/Sticky.js +34 -0
  66. package/src/scripts/all.js +7 -0
  67. package/src/scripts/index.js +4 -0
  68. package/src/styles.css +14 -0
  69. package/src/tools/border.css +9 -0
  70. package/src/tools/index.css +5 -0
  71. package/src/tools/object.css +5 -0
  72. package/src/tools/outlines.css +27 -0
  73. package/src/tools/pigment.css +205 -0
  74. package/src/tools/transitions.css +14 -0
  75. package/src/type/font-position.css +18 -0
  76. package/src/type/index.css +1 -0
  77. package/src/variables/breakpoints.css +103 -0
  78. package/src/variables/font.css +88 -0
  79. package/src/variables/index.css +4 -0
  80. package/src/variables/radius.css +54 -0
  81. package/src/variables/variables.css +34 -0
  82. package/dist/UI/Codepen.css +0 -13
  83. package/dist/UI/Codepen.css.map +0 -1
  84. package/dist/UI/Tweet.css +0 -7
  85. package/dist/UI/Tweet.css.map +0 -1
  86. package/dist/UI/Youtube.css +0 -13
  87. package/dist/UI/Youtube.css.map +0 -1
  88. package/dist/styles.css.map +0 -1
  89. package/src/Base/_Base.scss +0 -57
  90. package/src/Base/_Focus.scss +0 -38
  91. package/src/Base/_Transition.scss +0 -8
  92. package/src/Base/_index.scss +0 -4
  93. package/src/Components/_Box.scss +0 -9
  94. package/src/Components/_BrowserFrame.scss +0 -89
  95. package/src/Components/_Figure.scss +0 -5
  96. package/src/Components/_List.scss +0 -19
  97. package/src/Components/_Scrollbars.scss +0 -40
  98. package/src/Components/_SimpleSVG.scss +0 -9
  99. package/src/Components/_index.scss +0 -12
  100. package/src/Effects/_Backdrop.scss +0 -4
  101. package/src/Effects/_Elevation.scss +0 -92
  102. package/src/Effects/_Glow.scss +0 -51
  103. package/src/Effects/_Gradients.scss +0 -88
  104. package/src/Effects/_Shadows.scss +0 -51
  105. package/src/Effects/_SpecialShadows.scss +0 -45
  106. package/src/Effects/_Text-Outline.scss +0 -25
  107. package/src/Effects/_index.scss +0 -12
  108. package/src/Experimental/_SimplePricingPlan.scss +0 -141
  109. package/src/Forms/_Button.scss +0 -106
  110. package/src/Forms/_Combobox.scss +0 -49
  111. package/src/Forms/_FormBase.scss +0 -43
  112. package/src/Forms/_FormControls.scss +0 -95
  113. package/src/Forms/_Range.scss +0 -101
  114. package/src/Forms/_Select.scss +0 -114
  115. package/src/Forms/_Switch.scss +0 -66
  116. package/src/Forms/_TextField.scss +0 -116
  117. package/src/Forms/_Textarea.scss +0 -41
  118. package/src/Forms/_index.scss +0 -10
  119. package/src/Typography/_WritingMode.scss +0 -33
  120. package/src/Typography/_index.scss +0 -1
  121. package/src/UI/Codepen.scss +0 -11
  122. package/src/UI/Tweet.scss +0 -5
  123. package/src/UI/Youtube.scss +0 -13
  124. package/src/UI/_Breadcrumbs.scss +0 -24
  125. package/src/UI/_CQChecker.scss +0 -16
  126. package/src/UI/_Callout.scss +0 -31
  127. package/src/UI/_Drawer.scss +0 -28
  128. package/src/UI/_Dropdown.scss +0 -14
  129. package/src/UI/_FancyList.scss +0 -30
  130. package/src/UI/_PerspectiveHover.scss +0 -9
  131. package/src/UI/_Popover.scss +0 -25
  132. package/src/UI/_Resizer.scss +0 -43
  133. package/src/UI/_Spotlight.scss +0 -42
  134. package/src/UI/_Status.scss +0 -33
  135. package/src/UI/_Tabs.scss +0 -112
  136. package/src/UI/_Textwall.scss +0 -22
  137. package/src/UI/_index.scss +0 -17
  138. package/src/Utilities/_Shapes.scss +0 -20
  139. package/src/Utilities/_index.scss +0 -1
  140. package/src/Variables/_Globals.scss +0 -33
  141. package/src/Variables/_index.scss +0 -1
  142. package/src/_Animations.scss +0 -18
  143. package/src/_Fill.scss +0 -314
  144. package/src/styles.scss +0 -12
  145. package/src/utils/_index.scss +0 -3
  146. package/src/utils/functions/_fns.scss +0 -77
  147. package/src/utils/functions/_fonts.scss +0 -114
@@ -1,141 +0,0 @@
1
- // ========================
2
- // Plan
3
- // ========================
4
- .PlanLayout {
5
- display: grid;
6
- align-content: center;
7
- gap: 1rem;
8
-
9
- // We only create a 3-column layout after 1000px width
10
- @media (width >= 1000px) {
11
- grid-template-columns: repeat(3, 1fr);
12
- grid-template-rows: repeat(3, auto);
13
-
14
- > * {
15
- grid-row: 1/-1;
16
- grid-template-rows: subgrid;
17
- }
18
- }
19
- }
20
-
21
- .Plan {
22
- --border-width: 4px;
23
- --radius: 1rem;
24
- --border-color: #ccc;
25
- --bg-color: white;
26
- --bg-color-darker: #fafafa;
27
-
28
- display: grid;
29
- gap: inherit;
30
- padding: 1.5rem 1rem;
31
- border: var(--border-width) solid var(--border-color);
32
- border-radius: var(--radius);
33
- color: color(mine);
34
- background-color: var(--bg-color);
35
-
36
- svg path {
37
- fill: color(mine);
38
- }
39
-
40
- // Plans have a different style below 1000px breakpoint
41
- // We're using breakpoints because container queries don't work with subgrid
42
- // Oh! But why don't we try after a certain amount then container queries? 🤔
43
- @media (550px <= width < 1000px) {
44
- grid-template-columns: 1.5fr 1fr;
45
-
46
- .Plan-body {
47
- grid-column: 2;
48
- grid-row: span 2;
49
- display: flex;
50
- flex-flow: column;
51
- justify-content: center;
52
- margin: -1rem -0.5rem;
53
- padding-inline: inherit;
54
- border: 1px solid var(--border-color);
55
- border-radius: calc(var(--radius) - 0.5rem);
56
- background-color: var(--bg-color-darker);
57
- place-self: stretch stretch;
58
- }
59
-
60
- &:hover .Plan-body,
61
- &:focus .Plan-body {
62
- background-color: var(--bg-color-darker-hover);
63
- }
64
- }
65
-
66
- @media (width >= 1000px) or (width < 550px) {
67
- .Plan-header {
68
- text-align: center;
69
- }
70
- }
71
- }
72
-
73
- .Plan:not(.Plan--Recommended) {
74
- &:hover,
75
- &:focus {
76
- --border-color: #99c48e;
77
- --bg-color: #f8fff6;
78
- --bg-color-darker: #f8fff6;
79
- --bg-color-darker-hover: #ebf7e7;
80
- }
81
- }
82
-
83
- .Plan-recommended {
84
- position: absolute;
85
- font-size: 0.6rem;
86
- text-transform: uppercase;
87
- background-color: var(--recommended-background-color);
88
-
89
- @media (width <= 550px) {
90
- transform: translateX(-50%);
91
- }
92
-
93
- // Show as a pill
94
- @media (width < 1000px) {
95
- top: calc(-0.5rem - 0.5lh + 2px); // Padding, line height and borders
96
- display: inline-block;
97
- margin-bottom: -1.5rem;
98
- padding: 0.25rem 0.5rem;
99
- border: 3px solid var(--border-color);
100
- border-radius: 2em;
101
- font-weight: 700;
102
- letter-spacing: 0.05em;
103
- }
104
-
105
- // Show recommended above plan
106
- @media (width >=1000px) {
107
- position: absolute;
108
- top: 0;
109
- left: calc(-1 * var(--border-width));
110
- right: calc(-1 * var(--border-width));
111
- padding: 0.5rem;
112
- border: var(--border-width) solid var(--border-color);
113
- border-top-left-radius: var(--radius);
114
- border-top-right-radius: var(--radius);
115
- font-weight: bold;
116
- letter-spacing: 0.075em;
117
- transform: translateY(-100%);
118
- text-align: center;
119
- }
120
- }
121
-
122
- // ========================
123
- // Accents for plans
124
- // ========================
125
- .Plan--Recommended {
126
- --border-color: #7198c8;
127
- --recommended-background-color: #c5e2ff;
128
- --bg-color: #edf6ff;
129
- --bg-color-darker: #e1f0ff;
130
- --bg-color-darker-hover: #d4e7fb;
131
-
132
- &:hover,
133
- &:focus {
134
- background-color: #e7f3ff;
135
- }
136
-
137
- @media (width >= 1000px) {
138
- border-top-left-radius: 0;
139
- border-top-right-radius: 0;
140
- }
141
- }
@@ -1,106 +0,0 @@
1
- // ========================
2
- // Reset Button and base styles
3
- // ========================
4
- @layer components {
5
- button,
6
- [class*='Button'] {
7
- flex-shrink: 0; // Prevents button from shrinking when used in flex elements
8
- // align-self: start; // Prevents buttons from expanding to 100% size when used in flex elements. Specify align-self:stretch to expand to full width. This is problematic in Horizontal flow.
9
- justify-content: center;
10
- padding: 0.25em 1em;
11
- border-width: var(--border-width, 1px);
12
- border-color: var(--border-color);
13
- border-radius: var(--radius);
14
- font: var(--input-font, inherit);
15
- color: var(--text-color, currentColor);
16
- background-color: var(--bg-color, #eee);
17
- text-decoration: none !important;
18
- transition: var(--transition-values);
19
- transition-property: var(--transition-props);
20
- cursor: pointer;
21
-
22
- * {
23
- pointer-events: none;
24
- }
25
-
26
- svg path {
27
- transition: var(--transition-values);
28
- transition-property: var(--transition-props);
29
- }
30
-
31
- // Ruleset here is the same as .Fill.
32
- // We are duplicating because CSS doesn't have Tailwind's @apply functionality.
33
- &:hover {
34
- border-color: var(--border-hover-color, var(--border-color));
35
- color: var(--text-hover-color, var(--text-color));
36
- background-color: var(--bg-hover-color, var(--bg-color));
37
- }
38
-
39
- // Fallback to hover color
40
- &:focus {
41
- border-color: var(
42
- --border-focus-color,
43
- var(--border-hover-color, var(--border-color))
44
- );
45
- color: var(
46
- --text-focus-color,
47
- var(--text-hover-color, var(--text-color))
48
- );
49
- background-color: var(
50
- --bg-focus-color,
51
- var(--bg-hover-color, var(--bg-color))
52
- );
53
- }
54
-
55
- // Fallback to hover color
56
- &:active {
57
- border-color: var(
58
- --border-active-color,
59
- var(--border-hover-color, var(--border-color))
60
- );
61
- color: var(
62
- --text-active-color,
63
- var(--text-hover-color, var(--text-color))
64
- );
65
- background-color: var(
66
- --bg-active-color,
67
- var(--bg-hover-color, var(--bg-color))
68
- );
69
- }
70
-
71
- // Fallback to hover color
72
- &.selected,
73
- &[aria-selected],
74
- &[aria-expanded='true'] {
75
- border-color: var(
76
- --border-selected-color,
77
- var(--border-hover-color, var(--border-color))
78
- );
79
- color: var(
80
- --text-selected-color,
81
- var(--text-hover-color, var(--text-color))
82
- );
83
- background-color: var(
84
- --bg-selected-color,
85
- var(--bg-hover-color, var(--bg-color))
86
- );
87
- }
88
- }
89
-
90
- // ========================
91
- // Base Splendid Labz Buttons
92
- // ========================
93
- [class*='Button'] {
94
- display: inline-flex;
95
- align-items: center;
96
- gap: 0.5em;
97
- }
98
- }
99
-
100
- // For using Icons as the button content
101
- @layer components {
102
- .Button-icon {
103
- padding: var(--padding, 0.5em);
104
- line-height: 1;
105
- }
106
- }
@@ -1,49 +0,0 @@
1
- .ListboxPopover {
2
- padding: 0;
3
- border: 0;
4
- }
5
-
6
- [role='listbox'] {
7
- max-height: 15rem; // Default value. Specify as you wish in CSS
8
- overflow-y: auto;
9
-
10
- [role='option'] {
11
- cursor: pointer; // Ensures cursor stays as pointer even when hovering over text
12
- > * {
13
- pointer-events: none;
14
- }
15
- }
16
-
17
- [aria-selected='true'] {
18
- background: var(--bg-selected-color, pink);
19
- }
20
- }
21
-
22
- // @layer components {
23
- .AutocompleteOptions {
24
- .ComboboxMatchedString {
25
- font-weight: bold;
26
- }
27
- }
28
-
29
- // Needs fixing again.
30
- // Transition for AutocompleteLoader and AutocompleteEmpty. Relies on :empty state and @starting-style for transitions.
31
- .AutocompleteLoader,
32
- .AutocompleteEmpty {
33
- transition: var(--transition);
34
- transition-property: var(--transition-props), display;
35
- transition-behavior: allow-discrete;
36
-
37
- @starting-style {
38
- opacity: 0;
39
- }
40
-
41
- &:empty {
42
- display: none;
43
- opacity: 0;
44
- }
45
- }
46
-
47
- .TimepickerOptions .Listbox li {
48
- padding: 0.5rem 1rem;
49
- }
@@ -1,43 +0,0 @@
1
- @layer components {
2
- // Text based inputs
3
- input:where(
4
- [type='text'],
5
- [type='search'],
6
- [type='email'],
7
- [type='password'],
8
- [type='tel'],
9
- [type='url']
10
- ),
11
- textarea,
12
- select,
13
- .Field {
14
- display: block;
15
- width: 100%;
16
- border-radius: inherit;
17
- font: inherit;
18
- font-family: var(--input-font, inherit);
19
- color: var(--text-color, currentColor);
20
- background-color: var(--bg-color, transparent);
21
- }
22
-
23
- // Friendly password dots
24
- // See https://pqina.nl/blog/styling-password-field-dots/
25
- input[type='password'] {
26
- font-family: Verdana, sans-serif;
27
- letter-spacing: 0.125em;
28
- }
29
-
30
- .disabled,
31
- .readonly,
32
- [disabled],
33
- [readonly] {
34
- opacity: 0.5; // Super simple way. Styles can be improved.
35
- &:where(input) {
36
- cursor: not-allowed;
37
- }
38
-
39
- &:focus-visible {
40
- outline-color: transparent;
41
- }
42
- }
43
- }
@@ -1,95 +0,0 @@
1
- // ========================
2
- // Checkboxes and Radios
3
- // ========================
4
- @layer components {
5
- .Legend + * {
6
- margin-top: 0.25rem;
7
- }
8
-
9
- .Radio,
10
- .Checkbox {
11
- display: flex;
12
- align-items: center;
13
- gap: var(--gap, 0.5em);
14
-
15
- :where(&) + :where(&) {
16
- margin-top: 0.125em;
17
- }
18
-
19
- // For both checkbox and radios
20
- > :where(.Checkmark, .Radiomark) {
21
- display: grid;
22
- place-items: center;
23
-
24
- > * {
25
- grid-column: 1;
26
- grid-row: 1;
27
- }
28
-
29
- > input {
30
- appearance: none;
31
- display: grid;
32
- place-content: center;
33
- width: var(--width, var(--size, 1em));
34
- height: var(--height, var(--size, 1em));
35
- margin: 0;
36
- padding: 0;
37
- border: var(--border-width, 1px) var(--border-style, solid)
38
- var(--border-color, black);
39
- font: inherit;
40
- background-color: var(--bg-color, transparent);
41
- }
42
-
43
- svg {
44
- pointer-events: none;
45
- width: 0.85em;
46
- height: 0.85em;
47
- fill: var(--fill-color, none);
48
- transform: scale(0);
49
- transition: transform var(--transition-values);
50
-
51
- path {
52
- stroke: var(--stroke-color, pink);
53
- }
54
- }
55
- }
56
-
57
- :where(.Checkmark, .Radiomark) ~ .TextInput {
58
- display: none;
59
- }
60
-
61
- :where(.Checkmark:has(:checked), .Radiomark:has(:checked)) ~ .TextInput {
62
- display: block;
63
- }
64
-
65
- // Checkboxes
66
- :where(input[type='checkbox']) {
67
- border-radius: var(--checkbox-radius, 0.25em);
68
- }
69
-
70
- // SVG
71
- :where(input:checked) ~ svg {
72
- transform: scale(1);
73
- }
74
-
75
- // Radios only
76
- :where(input[type='radio']) {
77
- border-radius: 50%;
78
- }
79
-
80
- // Default radio
81
- :where(.radio) {
82
- pointer-events: none;
83
- width: 0.5em;
84
- height: 0.5em;
85
- border-radius: 50%;
86
- background-color: var(--stroke-color, pink);
87
- transform: scale(0);
88
- transition: transform var(--transition-values);
89
- }
90
-
91
- :where(input[type='radio']:checked ~ .radio) {
92
- transform: scale(1);
93
- }
94
- }
95
- }
@@ -1,101 +0,0 @@
1
- // WIP. Not included.
2
- // Simple - https://codepen.io/ibaslogic/pen/oNQMWrM
3
- // Simple 2 - https://stackblitz.com/edit/multi-range-slider?file=src%2Fstyle.css,src%2Fcomponents%2FmultiRangeSlider%2FMultiRangeSlider.js
4
- // Complex but more real - https://codepen.io/vsync/pen/mdEJMLv
5
- // Ana tudor collection - https://codepen.io/collection/DgYaMj/?cursor=eyJwYWdlIjo4fQ==
6
- @layer components {
7
- }
8
-
9
- input[type='range'] {
10
- appearance: none;
11
- width: 100%;
12
-
13
- /* New additions */
14
- height: 6px;
15
- border-radius: 15px;
16
- outline: none;
17
- background: #ccc;
18
- cursor: pointer;
19
- }
20
-
21
- /* Thumb: webkit */
22
- input[type='range']::-webkit-slider-thumb {
23
- /* removing default appearance */
24
- appearance: none;
25
- width: 15px;
26
-
27
- /* creating a custom design */
28
- height: 15px;
29
- border: none;
30
- border-radius: 50%;
31
- background-color: #f50;
32
-
33
- /* box-shadow: -407px 0 0 400px #f50; emove this line */
34
- transition: 0.2s ease-in-out;
35
- }
36
-
37
- /* Thumb: Firefox */
38
- input[type='range']::-moz-range-thumb {
39
- width: 15px;
40
- height: 15px;
41
- border: none;
42
- border-radius: 50%;
43
- background-color: #f50;
44
-
45
- /* box-shadow: -407px 0 0 400px #f50; emove this line */
46
- transition: 0.2s ease-in-out;
47
- }
48
-
49
- /* Hover, active & focus Thumb: Webkit */
50
-
51
- input[type='range']::-webkit-slider-thumb:hover {
52
- box-shadow: 0 0 0 10px rgb(255 85 0 / 10%);
53
- }
54
-
55
- input[type='range']:active::-webkit-slider-thumb {
56
- box-shadow: 0 0 0 13px rgb(255 85 0 / 20%);
57
- }
58
-
59
- input[type='range']:focus::-webkit-slider-thumb {
60
- box-shadow: 0 0 0 13px rgb(255 85 0 / 20%);
61
- }
62
-
63
- /* Hover, active & focus Thumb: Firfox */
64
-
65
- input[type='range']::-moz-range-thumb:hover {
66
- box-shadow: 0 0 0 10px rgb(255 85 0 / 10%);
67
- }
68
-
69
- input[type='range']:active::-moz-range-thumb {
70
- box-shadow: 0 0 0 13px rgb(255 85 0 / 20%);
71
- }
72
-
73
- input[type='range']:focus::-moz-range-thumb {
74
- box-shadow: 0 0 0 13px rgb(255 85 0 / 20%);
75
- }
76
-
77
- /* =============
78
- Adding tick marks
79
- ========================= */
80
- .range-slider {
81
- flex: 1;
82
- }
83
-
84
- .sliderticks {
85
- display: flex;
86
- justify-content: space-between;
87
- padding: 0 10px;
88
- }
89
-
90
- .sliderticks span {
91
- display: flex;
92
- justify-content: center;
93
- width: 1px;
94
- height: 10px;
95
- line-height: 40px;
96
- background: #d3d3d3;
97
- }
98
-
99
- /* =============
100
- End tick marks
101
- ========================= */
@@ -1,114 +0,0 @@
1
- @layer components {
2
- .Select {
3
- :where(select) {
4
- appearance: none;
5
- color: var(--text-color);
6
- background: var(--bg-color);
7
-
8
- &:hover {
9
- border-color: var(--border-hover-color, var(--border-color));
10
- color: var(--text-hover-color, var(--text-color));
11
- background-color: var(--bg-hover-color, var(--bg-color));
12
-
13
- :where(svg path) {
14
- fill: var(
15
- --fill-hover-color,
16
- var(--text-hover-color, var(--fill-color, var(--text-color)))
17
- );
18
- stroke: var(
19
- --stroke-hover-color,
20
- var(--text-hover-color, var(--stroke-color, var(--text-color)))
21
- );
22
- }
23
- }
24
-
25
- // Fallback to hover color
26
- &:focus {
27
- border-color: var(
28
- --border-focus-color,
29
- var(--border-hover-color, var(--border-color))
30
- );
31
- color: var(
32
- --text-focus-color,
33
- var(--text-hover-color, var(--text-color))
34
- );
35
- background-color: var(
36
- --bg-focus-color,
37
- var(--bg-hover-color, var(--bg-color))
38
- );
39
-
40
- :where(svg path) {
41
- fill: var(
42
- --fill-focus-color,
43
- var(
44
- --text-focus-color,
45
- var(
46
- --fill-hover-color,
47
- var(--text-hover-color, var(--fill-color, var(--text-color)))
48
- )
49
- )
50
- );
51
- stroke: var(
52
- --stroke-focus-color,
53
- var(
54
- --text-focus-color,
55
- var(
56
- --stroke-hover-color,
57
- var(--text-hover-color, var(--stroke-color, var(--text-color)))
58
- )
59
- )
60
- );
61
- }
62
- }
63
- }
64
-
65
- :where(select[multiple]),
66
- :where(select[multiple]:focus) {
67
- overflow: auto;
68
- padding: 0;
69
-
70
- :where(option) {
71
- padding: 0.375em 0.75em;
72
- color: var(--text-color);
73
- background-image: linear-gradient(
74
- 0deg,
75
- var(--bg-color) 0%,
76
- var(--bg-color) 100%
77
- );
78
- }
79
-
80
- :where(option:hover) {
81
- color: var(--text-hover-color, var(--text-color));
82
- background-image: linear-gradient(
83
- 0deg,
84
- var(--bg-hover-color, var(--bg-color)) 0%,
85
- var(--bg-hover-color, var(--bg-color)) 100%
86
- );
87
- }
88
-
89
- :where(option:focus) {
90
- color: var(
91
- --text-focus-color,
92
- var(--text-hover-color, var(--text-color))
93
- );
94
-
95
- background-image: linear-gradient(
96
- 0deg,
97
- var(--bg-focus-color, var(--bg-hover-color, var(--bg-color))) 0%,
98
- var(--bg-focus-color, var(--bg-hover-color, var(--bg-color))) 100%
99
- );
100
- }
101
-
102
- :where(option:checked) {
103
- color: var(--text-selected-color);
104
- background-image: linear-gradient(
105
- 0deg,
106
- var(--bg-selected-color,) 0%,
107
- var(--bg-selected-color,) 100%
108
- );
109
- }
110
- }
111
- }
112
- }
113
-
114
- // The :selected state of the options is fairly customizable in Chrome, somewhat in Firefox, and not at all in Safari. See the CodePen demo for a section that can be uncommented to preview this.
@@ -1,66 +0,0 @@
1
- @layer components {
2
- // ========================
3
- // Switches
4
- // Inspiration: https://tailwindui.com/components/application-ui/forms/toggles
5
- // Variables Used
6
- // --transition-values
7
-
8
- // Local Variables
9
- // --height
10
- // --aspectRatio
11
- // --gap
12
- // --toggleFill: white;
13
- // --bg-color: #aaa;
14
- // --onStateBg: teal;
15
- // ========================
16
- // Border-width must have a unit here for this to work.
17
- .Switch {
18
- --width: 3.5em;
19
- --height: 1.2em;
20
- --inner-margin: 0.2em;
21
-
22
- display: inline-flex;
23
-
24
- input[type='checkbox'] {
25
- appearance: none;
26
- display: grid;
27
- align-items: center;
28
- width: var(--width);
29
- padding: 0;
30
- border-width: var(--border-width, 1px);
31
- border-style: var(--border-style, solid);
32
- border-color: var(--border-color, black);
33
- border-radius: var(--height);
34
- background-color: var(--bg-color, #eee);
35
- transition: background-color var(--transition-values);
36
- }
37
-
38
- input[type='checkbox']:checked {
39
- background-color: var(--bg-color, teal);
40
- }
41
-
42
- // This is the part that moves
43
- input[type='checkbox']::before {
44
- --translateX: calc(
45
- var(--width) - var(--height) - var(--inner-margin) * 2 - var(
46
- --border-width,
47
- 1px
48
- ) * 2
49
- );
50
-
51
- content: '';
52
- box-sizing: content-box;
53
- width: var(--height);
54
- height: var(--height);
55
- margin: var(--inner-margin);
56
- border-radius: 50%;
57
- background-color: white;
58
- box-shadow: var(--shadow);
59
- transition: transform var(--transition-values);
60
- }
61
-
62
- input[type='checkbox']:checked::before {
63
- transform: translateX(var(--translateX));
64
- }
65
- }
66
- }