frozen_rails 0.0.4 → 0.0.6

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -2
  3. data/LICENSE.txt +1 -1
  4. data/README.md +46 -82
  5. data/Rakefile +20 -0
  6. data/lib/frozen_rails/appendable.rb +9 -2
  7. data/lib/frozen_rails/copyable.rb +7 -2
  8. data/lib/frozen_rails/generator.rb +0 -2
  9. data/lib/frozen_rails/taggable.rb +3 -2
  10. data/lib/frozen_rails/version.rb +1 -3
  11. data/lib/frozen_rails.rb +0 -2
  12. data/lib/generators/frozen/db_generator.rb +2 -5
  13. data/lib/generators/frozen/md_generator.rb +6 -3
  14. data/lib/generators/frozen/rails_generator.rb +6 -14
  15. data/lib/generators/frozen/seo_generator.rb +5 -7
  16. data/lib/generators/frozen/ssg_generator.rb +0 -2
  17. data/lib/generators/frozen/templates/db/database.yml +15 -2
  18. data/lib/generators/frozen/templates/db/initializers/skip_controller_tests_and_helpers.rb +9 -0
  19. data/lib/generators/frozen/templates/db/lib/generators/avo/resource/resource_generator.rb +1 -1
  20. data/lib/generators/frozen/templates/db/lib/templates/active_record/model/model.rb.tt +12 -1
  21. data/lib/generators/frozen/templates/db/lib/templates/erb/scaffold/index.html.erb.tt +14 -8
  22. data/lib/generators/frozen/templates/db/lib/templates/erb/scaffold/partial.html.erb.tt +2 -2
  23. data/lib/generators/frozen/templates/db/lib/templates/erb/scaffold/show.html.erb.tt +8 -7
  24. data/lib/generators/frozen/templates/md/assets/application.css +13 -0
  25. data/lib/generators/frozen/templates/md/assets/rouge/README.md +7 -0
  26. data/lib/generators/frozen/templates/md/assets/rouge/revert.css +11 -0
  27. data/lib/generators/frozen/templates/md/views/categories/index.html.erb +5 -3
  28. data/lib/generators/frozen/templates/md/views/categories/show.html.erb +5 -9
  29. data/lib/generators/frozen/templates/md/views/pages/show.html.erb +6 -3
  30. data/lib/generators/frozen/templates/ssg/.gitlab-ci.yml +34 -0
  31. data/lib/generators/frozen/templates/ui/application.html.erb +27 -0
  32. data/lib/generators/frozen/templates/ui/application_component.rb +2 -0
  33. data/lib/generators/frozen/templates/ui/assets/application.js +4 -0
  34. data/lib/generators/frozen/templates/ui/assets/builds/.keep +0 -0
  35. data/lib/generators/frozen/templates/ui/assets/components/index.js +2 -0
  36. data/lib/generators/frozen/templates/ui/assets/fonts/.keep +0 -0
  37. data/lib/generators/frozen/templates/ui/assets/images/.keep +0 -0
  38. data/lib/generators/frozen/templates/ui/assets/images/pages/.keep +0 -0
  39. data/lib/generators/frozen/templates/ui/assets/jasmine/boot.js +6 -0
  40. data/lib/generators/frozen/templates/ui/assets/jasmine/support/fixtures.js +24 -0
  41. data/lib/generators/frozen/templates/ui/assets/jasmine/support/jasmine-dom.js +1 -0
  42. data/lib/generators/frozen/templates/ui/assets/jasmine/support/unpoly-test-config.js +7 -0
  43. data/lib/generators/frozen/templates/ui/assets/jasmine/support.js +1 -0
  44. data/lib/generators/frozen/templates/ui/assets/jasmine.js +5 -0
  45. data/lib/generators/frozen/templates/ui/assets/rouge/index.js +2 -0
  46. data/lib/generators/frozen/templates/ui/assets/static.js +5 -0
  47. data/lib/generators/frozen/templates/ui/assets/theme/README.md +11 -0
  48. data/lib/generators/frozen/templates/ui/assets/theme/base.css +27 -0
  49. data/lib/generators/frozen/templates/ui/assets/theme/code.css +29 -0
  50. data/lib/generators/frozen/templates/ui/assets/theme/forms.css +160 -0
  51. data/lib/generators/frozen/templates/ui/assets/theme/index.js +2 -0
  52. data/lib/generators/frozen/templates/ui/assets/theme/links.css +8 -0
  53. data/lib/generators/frozen/templates/ui/assets/theme/misc.css +150 -0
  54. data/lib/generators/frozen/templates/ui/assets/theme/parts.css +8 -0
  55. data/lib/generators/frozen/templates/ui/assets/theme/print.css +53 -0
  56. data/lib/generators/frozen/templates/ui/assets/theme/range.css +87 -0
  57. data/lib/generators/frozen/templates/ui/assets/theme/select-arrow.svg +4 -0
  58. data/lib/generators/frozen/templates/ui/assets/theme/typography.css +89 -0
  59. data/lib/generators/frozen/templates/ui/assets/theme/variables.css +49 -0
  60. data/lib/generators/frozen/templates/ui/assets/unpoly/index.js +7 -0
  61. data/lib/generators/frozen/templates/ui/demo_component/counter_component.css +18 -0
  62. data/lib/generators/frozen/templates/ui/demo_component/counter_component.html.erb +6 -0
  63. data/lib/generators/frozen/templates/ui/demo_component/counter_component.js +24 -0
  64. data/lib/generators/frozen/templates/ui/demo_component/counter_component.rb +6 -0
  65. data/lib/generators/frozen/templates/ui/demo_component/counter_component.yml +5 -0
  66. data/lib/generators/frozen/templates/ui/demo_component_tests/counter_component_preview.rb +54 -0
  67. data/lib/generators/frozen/templates/ui/demo_component_tests/counter_component_spec.js +25 -0
  68. data/lib/generators/frozen/templates/ui/demo_component_tests/counter_component_test.rb +40 -0
  69. data/lib/generators/frozen/templates/ui/demo_component_tests/docs/styleguide.md.erb +30 -0
  70. data/lib/generators/frozen/templates/ui/demo_component_tests/manual_test_component_spec.js +14 -0
  71. data/lib/generators/frozen/templates/ui/esbuild.config.js +79 -0
  72. data/lib/generators/frozen/templates/ui/jasmine/controllers/jasmine_controller.rb +12 -0
  73. data/lib/generators/frozen/templates/ui/jasmine/views/jasmine/index.html.erb +19 -0
  74. data/lib/generators/frozen/templates/ui/jasmine/views/layouts/jasmine.html.erb +17 -0
  75. data/lib/generators/frozen/templates/ui/lib/generators/component/component_generator.rb +72 -0
  76. data/lib/generators/frozen/templates/ui/lib/tasks/assets.rake +14 -0
  77. data/lib/generators/frozen/templates/ui/lib/templates/view_component/component/component.rb.tt +19 -0
  78. data/lib/generators/frozen/templates/ui/lib/templates/view_component/frozen_extensions/bem_stylesheet.css.tt +3 -0
  79. data/lib/generators/frozen/templates/ui/lib/templates/view_component/frozen_extensions/erb_template.html.erb.tt +5 -0
  80. data/lib/generators/frozen/templates/ui/lib/templates/view_component/frozen_extensions/jasmine_spec.js.tt +15 -0
  81. data/lib/generators/frozen/templates/ui/lib/templates/view_component/frozen_extensions/unpoly_compiler.js.tt +5 -0
  82. data/lib/generators/frozen/templates/ui/lib/templates/view_component/frozen_extensions/view_spec.rb.tt +21 -0
  83. data/lib/generators/frozen/templates/ui/lib/templates/view_component/preview/component_preview.rb.tt +15 -0
  84. data/lib/generators/frozen/templates/ui/lookbook/lookbook_helper.rb +38 -0
  85. data/lib/generators/frozen/ui_generator.rb +135 -41
  86. metadata +68 -10
  87. data/lib/generators/frozen/templates/ui/cable.yml +0 -5
  88. data/lib/generators/frozen/templates/ui/hotkey_controller.js +0 -9
  89. /data/lib/generators/frozen/templates/db/initializers/{readonly_routes.rb → skip_writing_routes.rb} +0 -0
@@ -0,0 +1,34 @@
1
+ image: ruby:3.4
2
+
3
+ cache:
4
+ paths:
5
+ - vendor
6
+
7
+ stages:
8
+ - build
9
+ - deploy
10
+
11
+ build:
12
+ stage: build
13
+ script:
14
+ - apt-get update -yqqq
15
+ - apt-get install -y nodejs
16
+ - bundle config set path 'vendor'
17
+ - bundle install
18
+ - bin/static-build
19
+ artifacts:
20
+ paths:
21
+ - build
22
+ expire_in: 1 hour
23
+
24
+ pages:
25
+ stage: deploy
26
+ script:
27
+ - rm -rf public/*
28
+ - cp -R build/* public
29
+ - echo "Deploying to GitLab Pages"
30
+ artifacts:
31
+ paths:
32
+ - public
33
+ rules:
34
+ - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= content_for(:title) || "Test Freeze" %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="apple-mobile-web-app-capable" content="yes">
7
+ <meta name="application-name" content="Test Freeze">
8
+ <meta name="mobile-web-app-capable" content="yes">
9
+ <%= csrf_meta_tags %>
10
+ <%= csp_meta_tag %>
11
+
12
+ <%= yield :head %>
13
+
14
+ <%# Enable PWA manifest for installable apps (make sure to enable in config/routes.rb too!) %>
15
+ <%# = tag.link rel: "manifest", href: pwa_manifest_path(format: :json) %>
16
+
17
+ <link rel="icon" href="/icon.png" type="image/png">
18
+ <link rel="icon" href="/icon.svg" type="image/svg+xml">
19
+ <link rel="apple-touch-icon" href="/icon.png">
20
+ <%= stylesheet_link_tag "application" %>
21
+ <%= javascript_include_tag "application", type: "module", defer: true %>
22
+ </head>
23
+
24
+ <body>
25
+ <%= yield %>
26
+ </body>
27
+ </html>
@@ -0,0 +1,2 @@
1
+ class ApplicationComponent < ViewComponent::Base
2
+ end
@@ -0,0 +1,4 @@
1
+ import "./theme"
2
+ import "./unpoly"
3
+ import "./components"
4
+ import "./rouge"
@@ -0,0 +1,2 @@
1
+ import "../../components/**/*.js"
2
+ import "../../components/**/*.css"
@@ -0,0 +1,6 @@
1
+ import 'jasmine-core/lib/jasmine-core/jasmine.css'
2
+
3
+ import 'jasmine-core/lib/jasmine-core/jasmine.js'
4
+ import 'jasmine-core/lib/jasmine-core/jasmine-html.js'
5
+ import 'jasmine-core/lib/jasmine-core/boot0.js'
6
+ import 'jasmine-core/lib/jasmine-core/boot1.js'
@@ -0,0 +1,24 @@
1
+ const fixturesContainer = () => {
2
+ return document.getElementById('fixtures') || up.element.affix(document.body, '#fixtures')
3
+ }
4
+
5
+ afterEach(() => {
6
+ up.destroy('#fixtures')
7
+ })
8
+
9
+ const appendFixtures = (...args) => {
10
+ return up.element.affix(fixturesContainer(), ...args)
11
+ }
12
+ window.appendFixtures = appendFixtures
13
+
14
+ const loadPreviewScenario = (preview, scenario) => {
15
+ const template = document.querySelector(`.test-cases template[data-component="${preview}"][data-scenario="${scenario}"]`)
16
+ if (!template) {
17
+ throw new Error(`Could not find template for [${preview} - ${scenario}]`)
18
+ }
19
+ const container = fixturesContainer()
20
+ container.append(template.content.cloneNode(true))
21
+ up.hello(container)
22
+ return container
23
+ }
24
+ window.loadPreviewScenario = loadPreviewScenario
@@ -0,0 +1 @@
1
+ import 'jasmine_dom_matchers'
@@ -0,0 +1,7 @@
1
+ // Make test faster and less flaky
2
+ up.motion.config.enabled = false
3
+
4
+ // No link and form handling while on Jasmine runner page
5
+ up.link.config.followSelectors = []
6
+ up.link.config.preloadSelectors = []
7
+ up.form.config.submitSelectors = []
@@ -0,0 +1 @@
1
+ import './support/**/*.js'
@@ -0,0 +1,5 @@
1
+ import "./jasmine/boot"
2
+ import "./application"
3
+ import "./jasmine/support"
4
+
5
+ import '../../test/**/*_spec.js'
@@ -0,0 +1,2 @@
1
+ import './revert.css'
2
+ import './rouge.css'
@@ -0,0 +1,5 @@
1
+ // Reference all assets here that are used from Ruby.
2
+ // Assets that are only from JS or CSS work automatically.
3
+
4
+ import './images/**/*'
5
+ import 'jasmine-core/images/jasmine_favicon.png'
@@ -0,0 +1,11 @@
1
+ # water.css
2
+
3
+ This directory contains the `water.css` theme.
4
+
5
+ Instead of using the npm package or linking directly to a CDN,
6
+ the individual source files were inlined so you can use it as a
7
+ starting point and make adjustments.
8
+
9
+ - GitHub: https://github.com/kognise/water.css
10
+ - Source files downloaded from: https://github.com/kognise/water.css/tree/master/src
11
+ - License: [MIT](https://github.com/kognise/water.css/blob/master/LICENSE.md)
@@ -0,0 +1,27 @@
1
+ html {
2
+ scrollbar-color: var(--scrollbar-thumb) var(--background-body);
3
+ scrollbar-width: thin;
4
+ }
5
+
6
+ body {
7
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', sans-serif;
8
+ line-height: 1.4;
9
+ max-width: 800px;
10
+ margin: 20px auto;
11
+ padding: 0 10px;
12
+ word-wrap: break-word;
13
+ color: var(--text-main);
14
+ background: var(--background-body);
15
+ text-rendering: optimizeLegibility;
16
+ }
17
+
18
+ button,
19
+ input,
20
+ textarea {
21
+ transition:
22
+ background-color var(--animation-duration) linear,
23
+ border-color var(--animation-duration) linear,
24
+ color var(--animation-duration) linear,
25
+ box-shadow var(--animation-duration) linear,
26
+ transform var(--animation-duration) ease;
27
+ }
@@ -0,0 +1,29 @@
1
+ code,
2
+ samp,
3
+ time {
4
+ background: var(--background);
5
+ color: var(--code);
6
+ padding: 2.5px 5px;
7
+ border-radius: 6px;
8
+ font-size: 1em;
9
+ }
10
+
11
+ pre > code {
12
+ padding: 10px;
13
+ display: block;
14
+ overflow-x: auto;
15
+ }
16
+
17
+ var {
18
+ color: var(--variable);
19
+ font-style: normal;
20
+ font-family: monospace;
21
+ }
22
+
23
+ kbd {
24
+ background: var(--background);
25
+ border: 1px solid var(--border);
26
+ border-radius: 2px;
27
+ color: var(--text-main);
28
+ padding: 2px 4px 2px 4px;
29
+ }
@@ -0,0 +1,160 @@
1
+ button,
2
+ select,
3
+ input[type='submit'],
4
+ input[type='reset'],
5
+ input[type='button'],
6
+ input[type='checkbox'],
7
+ input[type='range'],
8
+ input[type='radio'] {
9
+ cursor: pointer;
10
+ }
11
+
12
+ input,
13
+ select {
14
+ display: block;
15
+ }
16
+
17
+ [type='checkbox'],
18
+ [type='radio'] {
19
+ display: initial;
20
+ }
21
+
22
+ input,
23
+ button,
24
+ textarea,
25
+ select {
26
+ color: var(--form-text);
27
+ background-color: var(--background);
28
+ font-family: inherit;
29
+ font-size: inherit;
30
+ margin-right: 6px;
31
+ margin-bottom: 6px;
32
+ padding: 10px;
33
+ border: none;
34
+ border-radius: 6px;
35
+ outline: none;
36
+ }
37
+
38
+ button,
39
+ input[type='submit'],
40
+ input[type='reset'],
41
+ input[type='button'] {
42
+ background-color: var(--button-base);
43
+ padding-right: 30px;
44
+ padding-left: 30px;
45
+ }
46
+
47
+ button:hover,
48
+ input[type='submit']:hover,
49
+ input[type='reset']:hover,
50
+ input[type='button']:hover {
51
+ background: var(--button-hover);
52
+ }
53
+
54
+ input[type='color'] {
55
+ min-height: 2rem;
56
+ padding: 8px;
57
+ cursor: pointer;
58
+ }
59
+
60
+ input[type='checkbox'],
61
+ input[type='radio'] {
62
+ height: 1em;
63
+ width: 1em;
64
+ }
65
+
66
+ input[type='radio'] {
67
+ border-radius: 100%;
68
+ }
69
+
70
+ input {
71
+ vertical-align: top;
72
+ }
73
+
74
+ label {
75
+ vertical-align: middle;
76
+ margin-bottom: 4px;
77
+ display: inline-block;
78
+ }
79
+
80
+ input:not([type='checkbox']):not([type='radio']),
81
+ input[type='range'],
82
+ select,
83
+ button,
84
+ textarea {
85
+ appearance: none;
86
+ -webkit-appearance: none;
87
+ }
88
+
89
+ textarea {
90
+ display: block;
91
+ margin-right: 0;
92
+ box-sizing: border-box;
93
+ resize: vertical;
94
+ }
95
+
96
+ textarea:not([cols]) {
97
+ width: 100%;
98
+ }
99
+
100
+ textarea:not([rows]) {
101
+ min-height: 40px;
102
+ height: 140px;
103
+ }
104
+
105
+ select {
106
+ background: var(--background) var(--select-arrow) calc(100% - 12px) 50% / 12px no-repeat;
107
+ padding-right: 35px;
108
+ }
109
+
110
+ select::-ms-expand {
111
+ display: none;
112
+ }
113
+
114
+ select[multiple] {
115
+ padding-right: 10px;
116
+ background-image: none;
117
+ overflow-y: auto;
118
+ }
119
+
120
+ input:focus,
121
+ select:focus,
122
+ button:focus,
123
+ textarea:focus {
124
+ box-shadow: 0 0 0 2px var(--focus);
125
+ }
126
+
127
+ input[type='checkbox']:active,
128
+ input[type='radio']:active,
129
+ input[type='submit']:active,
130
+ input[type='reset']:active,
131
+ input[type='button']:active,
132
+ input[type='range']:active,
133
+ button:active {
134
+ transform: translateY(2px);
135
+ }
136
+
137
+ input:disabled,
138
+ select:disabled,
139
+ button:disabled,
140
+ textarea:disabled {
141
+ cursor: not-allowed;
142
+ opacity: 0.5;
143
+ }
144
+
145
+ ::placeholder {
146
+ color: var(--form-placeholder);
147
+ }
148
+
149
+ fieldset {
150
+ border: 1px var(--focus) solid;
151
+ border-radius: 6px;
152
+ margin: 0;
153
+ margin-bottom: 12px;
154
+ padding: 10px;
155
+ }
156
+
157
+ legend {
158
+ font-size: 0.9em;
159
+ font-weight: 600;
160
+ }
@@ -0,0 +1,2 @@
1
+ import "./variables.css"
2
+ import "./parts.css"
@@ -0,0 +1,8 @@
1
+ a {
2
+ text-decoration: none;
3
+ color: var(--links);
4
+ }
5
+
6
+ a:hover {
7
+ text-decoration: underline;
8
+ }
@@ -0,0 +1,150 @@
1
+ img,
2
+ video {
3
+ max-width: 100%;
4
+ height: auto;
5
+ }
6
+
7
+ hr {
8
+ border: none;
9
+ border-top: 1px solid var(--border);
10
+ }
11
+
12
+ table {
13
+ border-collapse: collapse;
14
+ margin-bottom: 10px;
15
+ width: 100%;
16
+ table-layout: fixed;
17
+ }
18
+
19
+ table caption {
20
+ text-align: left;
21
+ }
22
+
23
+ td,
24
+ th {
25
+ padding: 6px;
26
+ text-align: left;
27
+ vertical-align: top;
28
+ word-wrap: break-word;
29
+ }
30
+
31
+ thead {
32
+ border-bottom: 1px solid var(--border);
33
+ }
34
+
35
+ tfoot {
36
+ border-top: 1px solid var(--border);
37
+ }
38
+
39
+ tbody tr:nth-child(even) {
40
+ background-color: var(--background);
41
+ }
42
+
43
+ tbody tr:nth-child(even) button {
44
+ background-color: var(--background-alt);
45
+ }
46
+
47
+ tbody tr:nth-child(even) button:hover {
48
+ background-color: var(--background-body);
49
+ }
50
+
51
+ ::-webkit-scrollbar {
52
+ height: 10px;
53
+ width: 10px;
54
+ }
55
+
56
+ ::-webkit-scrollbar-track {
57
+ background: var(--background);
58
+ border-radius: 6px;
59
+ }
60
+
61
+ ::-webkit-scrollbar-thumb {
62
+ background: var(--scrollbar-thumb);
63
+ border-radius: 6px;
64
+ }
65
+
66
+ ::-webkit-scrollbar-thumb:hover {
67
+ background: var(--scrollbar-thumb-hover);
68
+ }
69
+
70
+ ::selection {
71
+ background-color: var(--selection);
72
+ color: var(--text-bright);
73
+ }
74
+
75
+ details {
76
+ display: flex;
77
+ flex-direction: column;
78
+ align-items: flex-start;
79
+ background-color: var(--background-alt);
80
+ padding: 10px 10px 0;
81
+ margin: 1em 0;
82
+ border-radius: 6px;
83
+ overflow: hidden;
84
+ }
85
+
86
+ details[open] {
87
+ padding: 10px;
88
+ }
89
+
90
+ details > :last-child {
91
+ margin-bottom: 0;
92
+ }
93
+
94
+ details[open] summary {
95
+ margin-bottom: 10px;
96
+ }
97
+
98
+ summary {
99
+ display: list-item;
100
+ background-color: var(--background);
101
+ padding: 10px;
102
+ margin: -10px -10px 0;
103
+ cursor: pointer;
104
+ outline: none;
105
+ }
106
+
107
+ summary:hover,
108
+ summary:focus {
109
+ text-decoration: underline;
110
+ }
111
+
112
+ details > :not(summary) {
113
+ margin-top: 0;
114
+ }
115
+
116
+ summary::-webkit-details-marker {
117
+ color: var(--text-main);
118
+ }
119
+
120
+ dialog {
121
+ background-color: var(--background-alt);
122
+ color: var(--text-main);
123
+ border: none;
124
+ border-radius: 6px;
125
+ border-color: var(--border);
126
+ padding: 10px 30px;
127
+ }
128
+
129
+ dialog > header:first-child {
130
+ background-color: var(--background);
131
+ border-radius: 6px 6px 0 0;
132
+ margin: -10px -30px 10px;
133
+ padding: 10px;
134
+ text-align: center;
135
+ }
136
+
137
+ dialog::backdrop {
138
+ background: #0000009c;
139
+ backdrop-filter: blur(4px);
140
+ }
141
+
142
+ footer {
143
+ border-top: 1px solid var(--border);
144
+ padding-top: 10px;
145
+ color: var(--text-muted);
146
+ }
147
+
148
+ body > footer {
149
+ margin-top: 40px;
150
+ }
@@ -0,0 +1,8 @@
1
+ @import "./base.css" layer(theme);
2
+ @import "./typography.css" layer(theme);
3
+ @import "./forms.css" layer(theme);
4
+ @import "./range.css" layer(theme);
5
+ @import "./links.css" layer(theme);
6
+ @import "./code.css" layer(theme);
7
+ @import "./misc.css" layer(theme);
8
+ @import "./print.css" layer(theme);
@@ -0,0 +1,53 @@
1
+ @media print {
2
+ body,
3
+ pre,
4
+ code,
5
+ summary,
6
+ details,
7
+ button,
8
+ input,
9
+ textarea {
10
+ background-color: #fff;
11
+ }
12
+
13
+ button,
14
+ input,
15
+ textarea {
16
+ border: 1px solid #000;
17
+ }
18
+
19
+ body,
20
+ h1,
21
+ h2,
22
+ h3,
23
+ h4,
24
+ h5,
25
+ h6,
26
+ pre,
27
+ code,
28
+ button,
29
+ input,
30
+ textarea,
31
+ footer,
32
+ summary,
33
+ strong {
34
+ color: #000;
35
+ }
36
+
37
+ summary::marker {
38
+ color: #000;
39
+ }
40
+
41
+ summary::-webkit-details-marker {
42
+ color: #000;
43
+ }
44
+
45
+ tbody tr:nth-child(even) {
46
+ background-color: #f2f2f2;
47
+ }
48
+
49
+ a {
50
+ color: #00f;
51
+ text-decoration: underline;
52
+ }
53
+ }
@@ -0,0 +1,87 @@
1
+ input[type='range'] {
2
+ margin: 10px 0;
3
+ padding: 10px 0;
4
+ background: transparent;
5
+ }
6
+
7
+ input[type='range']:focus {
8
+ outline: none;
9
+ }
10
+
11
+ input[type='range']::-webkit-slider-runnable-track {
12
+ width: 100%;
13
+ height: 9.5px;
14
+ transition: 0.2s;
15
+ background: var(--background);
16
+ border-radius: 3px;
17
+ }
18
+
19
+ input[type='range']::-webkit-slider-thumb {
20
+ box-shadow: 0 1px 1px #000, 0 0 1px #0d0d0d;
21
+ height: 20px;
22
+ width: 20px;
23
+ border-radius: 50%;
24
+ background: var(--border);
25
+ -webkit-appearance: none;
26
+ margin-top: -7px;
27
+ }
28
+
29
+ input[type='range']:focus::-webkit-slider-runnable-track {
30
+ background: var(--background);
31
+ }
32
+
33
+ input[type='range']::-moz-range-track {
34
+ width: 100%;
35
+ height: 9.5px;
36
+ transition: 0.2s;
37
+ background: var(--background);
38
+ border-radius: 3px;
39
+ }
40
+
41
+ input[type='range']::-moz-range-thumb {
42
+ box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
43
+ height: 20px;
44
+ width: 20px;
45
+ border-radius: 50%;
46
+ background: var(--border);
47
+ }
48
+
49
+ input[type='range']::-ms-track {
50
+ width: 100%;
51
+ height: 9.5px;
52
+ background: transparent;
53
+ border-color: transparent;
54
+ border-width: 16px 0;
55
+ color: transparent;
56
+ }
57
+
58
+ input[type='range']::-ms-fill-lower {
59
+ background: var(--background);
60
+ border: 0.2px solid #010101;
61
+ border-radius: 3px;
62
+ box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
63
+ }
64
+
65
+ input[type='range']::-ms-fill-upper {
66
+ background: var(--background);
67
+ border: 0.2px solid #010101;
68
+ border-radius: 3px;
69
+ box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
70
+ }
71
+
72
+ input[type='range']::-ms-thumb {
73
+ box-shadow: 1px 1px 1px #000, 0 0 1px #0d0d0d;
74
+ border: 1px solid #000;
75
+ height: 20px;
76
+ width: 20px;
77
+ border-radius: 50%;
78
+ background: var(--border);
79
+ }
80
+
81
+ input[type='range']:focus::-ms-fill-lower {
82
+ background: var(--background);
83
+ }
84
+
85
+ input[type='range']:focus::-ms-fill-upper {
86
+ background: var(--background);
87
+ }