katalyst-koi 4.18.1 → 5.0.0.alpha.1
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.
- checksums.yaml +4 -4
- data/app/assets/images/koi/icons/add.svg +3 -0
- data/app/assets/images/koi/icons/close.svg +1 -0
- data/app/assets/images/koi/koi.png +0 -0
- data/app/assets/javascripts/koi/controllers/file_field_controller.js +2 -2
- data/app/assets/javascripts/koi/controllers/index.js +0 -3
- data/app/assets/javascripts/koi/controllers/koi/modal_controller.js +40 -0
- data/app/assets/javascripts/koi/controllers/navigation_controller.js +14 -21
- data/app/assets/javascripts/koi/controllers/webauthn_registration_controller.js +4 -1
- data/app/assets/stylesheets/koi/blocks/actions.css +8 -0
- data/app/assets/stylesheets/koi/blocks/application-header.css +15 -0
- data/app/assets/stylesheets/koi/blocks/application-navigation.css +54 -0
- data/app/assets/stylesheets/koi/blocks/button.css +90 -0
- data/app/assets/stylesheets/koi/blocks/flash.css +19 -0
- data/app/assets/stylesheets/koi/blocks/icon.css +15 -0
- data/app/assets/stylesheets/koi/blocks/index.css +13 -0
- data/app/assets/stylesheets/koi/blocks/modal.css +26 -0
- data/app/assets/stylesheets/koi/blocks/navigation.css +23 -0
- data/app/assets/stylesheets/koi/blocks/page-header.css +31 -0
- data/app/assets/stylesheets/koi/blocks/pagy.css +82 -0
- data/app/assets/stylesheets/koi/blocks/prose.css +37 -0
- data/app/assets/stylesheets/koi/blocks/tables/index.css +4 -0
- data/app/assets/stylesheets/koi/{components/_query.scss → blocks/tables/query.css} +13 -13
- data/app/assets/stylesheets/koi/{base/_tables.scss → blocks/tables/table.css} +11 -59
- data/app/assets/stylesheets/koi/compositions/cover.css +17 -0
- data/app/assets/stylesheets/koi/{base/_flow.scss → compositions/flow.css} +1 -1
- data/app/assets/stylesheets/koi/compositions/index.css +4 -0
- data/app/assets/stylesheets/koi/compositions/wrapper.css +11 -0
- data/app/assets/stylesheets/koi/forms/caption.css +22 -0
- data/app/assets/stylesheets/koi/forms/checkboxes.css +153 -0
- data/app/assets/stylesheets/koi/forms/date-input.css +12 -0
- data/app/assets/stylesheets/koi/{components/_document-field.scss → forms/document-field.css} +20 -15
- data/app/assets/stylesheets/koi/forms/errors.css +38 -0
- data/app/assets/stylesheets/koi/forms/fieldset.css +73 -0
- data/app/assets/stylesheets/koi/forms/file-upload.css +20 -0
- data/app/assets/stylesheets/koi/forms/form-group.css +19 -0
- data/app/assets/stylesheets/koi/forms/hint.css +11 -0
- data/app/assets/stylesheets/koi/forms/image-field.css +96 -0
- data/app/assets/stylesheets/koi/forms/index.css +44 -0
- data/app/assets/stylesheets/koi/forms/input.css +194 -0
- data/app/assets/stylesheets/koi/forms/label.css +43 -0
- data/app/assets/stylesheets/koi/forms/password.css +18 -0
- data/app/assets/stylesheets/koi/forms/radios.css +162 -0
- data/app/assets/stylesheets/koi/forms/select.css +18 -0
- data/app/assets/stylesheets/koi/forms/textarea.css +3 -0
- data/app/assets/stylesheets/koi/forms/trix.css +33 -0
- data/app/assets/stylesheets/koi/global/fonts.css +22 -0
- data/app/assets/stylesheets/koi/global/global-styles.css +297 -0
- data/app/assets/stylesheets/koi/global/reset.css +98 -0
- data/app/assets/stylesheets/koi/global/variables.css +97 -0
- data/app/assets/stylesheets/koi/icons.css +14 -0
- data/app/assets/stylesheets/koi/{admin.scss → index.css} +16 -7
- data/app/assets/stylesheets/koi/login.css +26 -0
- data/app/assets/stylesheets/koi/themes/_index.scss +0 -1
- data/app/assets/stylesheets/koi/utilities/index.css +1 -0
- data/app/assets/stylesheets/koi/utilities/visually-hidden.css +18 -0
- data/app/components/concerns/koi/tables/cells.rb +3 -3
- data/app/components/koi/header_component.html.erb +12 -11
- data/app/components/koi/header_component.rb +2 -0
- data/app/components/koi/table_component.rb +8 -0
- data/app/controllers/admin/admin_users_controller.rb +24 -18
- data/app/controllers/admin/application_controller.rb +1 -3
- data/app/controllers/admin/credentials_controller.rb +18 -14
- data/app/controllers/admin/otps_controller.rb +15 -13
- data/app/controllers/admin/sessions_controller.rb +12 -1
- data/app/controllers/admin/url_rewrites_controller.rb +19 -17
- data/app/controllers/admin/well_knowns_controller.rb +20 -18
- data/app/controllers/concerns/koi/controller.rb +37 -0
- data/app/helpers/koi/form_helper.rb +18 -0
- data/app/helpers/koi/header_helper.rb +122 -0
- data/app/helpers/koi/index_actions_helper.rb +3 -2
- data/app/helpers/koi/modal_helper.rb +71 -0
- data/app/models/admin/user.rb +7 -1
- data/app/models/url_rewrite.rb +1 -9
- data/app/views/admin/admin_users/_form.html+self.erb +8 -0
- data/app/views/admin/admin_users/_form.html.erb +8 -0
- data/app/views/admin/admin_users/archived.html.erb +7 -4
- data/app/views/admin/admin_users/edit.html+self.erb +12 -0
- data/app/views/admin/admin_users/edit.html.erb +13 -8
- data/app/views/admin/admin_users/index.html.erb +10 -5
- data/app/views/admin/admin_users/new.html.erb +8 -8
- data/app/views/admin/admin_users/show.html+self.erb +26 -14
- data/app/views/admin/admin_users/show.html.erb +22 -20
- data/app/views/admin/credentials/_credentials.html+self.erb +8 -6
- data/app/views/admin/credentials/_credentials.html.erb +3 -1
- data/app/views/admin/credentials/create.turbo_stream.erb +4 -3
- data/app/views/admin/credentials/destroy.turbo_stream.erb +4 -2
- data/app/views/admin/credentials/new.html.erb +42 -36
- data/app/views/admin/dashboards/show.html.erb +13 -1
- data/app/views/admin/otps/_form.html.erb +7 -7
- data/app/views/admin/otps/create.turbo_stream.erb +3 -3
- data/app/views/admin/otps/new.html.erb +5 -3
- data/app/views/admin/sessions/new.html.erb +2 -3
- data/app/views/admin/sessions/otp.html.erb +1 -3
- data/app/views/admin/sessions/password.html.erb +1 -3
- data/app/views/admin/tokens/show.html.erb +4 -6
- data/app/views/admin/url_rewrites/_form.html.erb +9 -0
- data/app/views/admin/url_rewrites/edit.html.erb +13 -9
- data/app/views/admin/url_rewrites/index.html.erb +10 -7
- data/app/views/admin/url_rewrites/new.html.erb +8 -8
- data/app/views/admin/url_rewrites/show.html.erb +17 -12
- data/app/views/admin/well_knowns/_form.html.erb +9 -0
- data/app/views/admin/well_knowns/edit.html.erb +13 -9
- data/app/views/admin/well_knowns/index.html.erb +8 -5
- data/app/views/admin/well_knowns/new.html.erb +8 -8
- data/app/views/admin/well_knowns/show.html.erb +14 -13
- data/app/views/katalyst/content/asides/_aside.html+form.erb +6 -4
- data/app/views/katalyst/content/columns/_column.html+form.erb +5 -3
- data/app/views/katalyst/content/contents/_content.html+form.erb +8 -6
- data/app/views/katalyst/content/figures/_figure.html+form.erb +8 -5
- data/app/views/katalyst/content/groups/_group.html+form.erb +5 -3
- data/app/views/katalyst/content/items/_item.html+form.erb +5 -3
- data/app/views/katalyst/content/sections/_section.html+form.erb +5 -3
- data/app/views/katalyst/content/tables/_table.html+form.erb +16 -11
- data/app/views/katalyst/navigation/items/_button.html.erb +6 -12
- data/app/views/katalyst/navigation/items/_heading.html.erb +3 -10
- data/app/views/katalyst/navigation/items/_link.html.erb +6 -11
- data/app/views/katalyst/navigation/menus/edit.html.erb +10 -6
- data/app/views/katalyst/navigation/menus/index.html.erb +4 -2
- data/app/views/katalyst/navigation/menus/new.html.erb +5 -3
- data/app/views/katalyst/navigation/menus/show.html.erb +8 -7
- data/app/views/layouts/koi/_application_header.html.erb +20 -0
- data/app/views/layouts/koi/_application_navigation.html.erb +34 -0
- data/app/views/layouts/koi/_flash.html.erb +6 -3
- data/app/views/layouts/koi/_navigation_header.html.erb +0 -2
- data/app/views/layouts/koi/application.html.erb +22 -27
- data/app/views/layouts/koi/frame.html.erb +1 -3
- data/app/views/layouts/koi/login.html.erb +12 -5
- data/config/locales/koi.en.yml +9 -1
- data/config/routes.rb +1 -1
- data/lib/generators/koi/admin/admin_generator.rb +3 -12
- data/lib/generators/koi/admin_controller/admin_controller_generator.rb +6 -16
- data/lib/generators/koi/admin_controller/templates/controller.rb.tt +82 -18
- data/lib/generators/koi/admin_controller/templates/controller_spec.rb.tt +113 -47
- data/lib/generators/koi/admin_route/admin_route_generator.rb +60 -6
- data/lib/generators/koi/admin_views/USAGE +18 -7
- data/lib/generators/koi/admin_views/admin_views_generator.rb +19 -11
- data/lib/generators/koi/admin_views/templates/_form.html.erb.tt +8 -0
- data/lib/generators/koi/admin_views/templates/archived.html.erb.tt +33 -0
- data/lib/generators/koi/admin_views/templates/edit.html.erb.tt +17 -9
- data/lib/generators/koi/admin_views/templates/index.html.erb.tt +31 -3
- data/lib/generators/koi/admin_views/templates/new.html.erb.tt +8 -8
- data/lib/generators/koi/admin_views/templates/show.html.erb.tt +15 -18
- data/lib/generators/koi/helpers/attribute_helpers.rb +147 -0
- data/lib/generators/koi/helpers/attribute_types.rb +218 -0
- data/lib/generators/koi/helpers/resource_helpers.rb +121 -0
- data/lib/generators/koi/{active_record/active_record_generator.rb → model/model_generator.rb} +1 -1
- data/lib/koi/config.rb +3 -1
- data/lib/koi/engine.rb +0 -9
- data/lib/koi/form/builder.rb +4 -4
- data/lib/koi/form/content.rb +55 -0
- data/lib/koi/form/elements/document.rb +1 -1
- data/lib/koi/form/elements/image.rb +1 -1
- data/lib/koi/form_builder.rb +1 -0
- data/lib/koi/menu.rb +14 -1
- data/spec/factories/admins.rb +1 -1
- metadata +90 -99
- data/app/assets/builds/koi/admin.css +0 -1
- data/app/assets/stylesheets/koi/base/_button.scss +0 -122
- data/app/assets/stylesheets/koi/base/_icon.scss +0 -29
- data/app/assets/stylesheets/koi/base/_index.scss +0 -21
- data/app/assets/stylesheets/koi/base/_input.scss +0 -19
- data/app/assets/stylesheets/koi/base/_link.scss +0 -26
- data/app/assets/stylesheets/koi/base/_list.scss +0 -11
- data/app/assets/stylesheets/koi/base/_typography.scss +0 -160
- data/app/assets/stylesheets/koi/components/_actions-group.scss +0 -7
- data/app/assets/stylesheets/koi/components/_image-field.scss +0 -95
- data/app/assets/stylesheets/koi/components/_index.scss +0 -9
- data/app/assets/stylesheets/koi/components/_pagy.scss +0 -29
- data/app/assets/stylesheets/koi/components/_summary-list.scss +0 -40
- data/app/assets/stylesheets/koi/layouts/_banner.scss +0 -7
- data/app/assets/stylesheets/koi/layouts/_content.scss +0 -40
- data/app/assets/stylesheets/koi/layouts/_flash.scss +0 -41
- data/app/assets/stylesheets/koi/layouts/_header.scss +0 -61
- data/app/assets/stylesheets/koi/layouts/_index.scss +0 -48
- data/app/assets/stylesheets/koi/layouts/_main.scss +0 -23
- data/app/assets/stylesheets/koi/layouts/_navigation.scss +0 -180
- data/app/assets/stylesheets/koi/layouts/_stack.scss +0 -13
- data/app/assets/stylesheets/koi/pages/_index.scss +0 -1
- data/app/assets/stylesheets/koi/pages/_login.scss +0 -46
- data/app/assets/stylesheets/koi/themes/_govuk.scss +0 -56
- data/app/assets/stylesheets/koi/themes/_kpop.scss +0 -5
- data/app/assets/stylesheets/koi/utils/_breakpoints.scss +0 -13
- data/app/assets/stylesheets/koi/utils/_hide.scss +0 -11
- data/app/assets/stylesheets/koi/utils/_index.scss +0 -2
- data/app/assets/stylesheets/koi/utils/_typography.scss +0 -42
- data/app/components/koi/content/editor/item_form_component.html.erb +0 -11
- data/app/components/koi/content/editor/item_form_component.rb +0 -94
- data/app/components/koi/summary_list/attachment_component.rb +0 -47
- data/app/components/koi/summary_list/base.rb +0 -59
- data/app/components/koi/summary_list/boolean_component.rb +0 -15
- data/app/components/koi/summary_list/date_component.rb +0 -17
- data/app/components/koi/summary_list/datetime_component.rb +0 -17
- data/app/components/koi/summary_list/item_component.rb +0 -26
- data/app/components/koi/summary_list/number_component.rb +0 -21
- data/app/components/koi/summary_list/rich_text_component.rb +0 -8
- data/app/components/koi/summary_list/text_component.rb +0 -8
- data/app/components/koi/summary_list_component.html.erb +0 -5
- data/app/components/koi/summary_list_component.rb +0 -75
- data/app/controllers/concerns/koi/controller/is_admin_controller.rb +0 -66
- data/app/helpers/koi/application_helper.rb +0 -7
- data/app/helpers/koi/date_helper.rb +0 -26
- data/app/helpers/koi/definition_list_helper.rb +0 -10
- data/app/views/admin/admin_users/_fields.html+self.erb +0 -3
- data/app/views/admin/admin_users/_fields.html.erb +0 -3
- data/app/views/admin/url_rewrites/_fields.html.erb +0 -4
- data/app/views/admin/well_knowns/_fields.html.erb +0 -6
- data/app/views/layouts/koi/_environment.html.erb +0 -4
- data/app/views/layouts/koi/_header.html.erb +0 -11
- data/app/views/layouts/koi/_navigation.html.erb +0 -23
- data/app/views/layouts/koi/_navigation_collapse.html.erb +0 -3
- data/lib/generators/koi/admin_views/templates/_fields.html.erb.tt +0 -3
- data/lib/generators/koi/helpers/admin_generator_attributes.rb +0 -66
- data/lib/koi/extensions/dartsass.rb +0 -23
- /data/app/assets/stylesheets/koi/{components/_clipboard.scss → blocks/clipboard.css} +0 -0
- /data/app/assets/stylesheets/koi/{components/_index-actions.scss → blocks/index-actions.css} +0 -0
- /data/app/assets/stylesheets/koi/{components/_toolbar.scss → blocks/toolbar.css} +0 -0
- /data/app/assets/stylesheets/koi/{base/_repel.scss → compositions/repel.css} +0 -0
@@ -1,62 +1,13 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
.katalyst-table {
|
2
|
+
--tag-color: var(--color-primary);
|
3
|
+
--on-tag-color: white;
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
border: none;
|
8
|
-
border-collapse: collapse;
|
9
|
-
}
|
10
|
-
|
11
|
-
thead {
|
12
|
-
border-top: 1px solid var(--site-text-color);
|
13
|
-
border-bottom: 1px solid var(--site-text-color);
|
14
|
-
}
|
15
|
-
|
16
|
-
th {
|
17
|
-
text-align: left;
|
18
|
-
font-weight: 600;
|
19
|
-
line-height: 1.2;
|
20
|
-
}
|
21
|
-
|
22
|
-
tbody tr {
|
23
|
-
box-shadow: inset 0 -1px 0 #ddd;
|
24
|
-
}
|
25
|
-
|
26
|
-
td,
|
27
|
-
th {
|
28
|
-
vertical-align: top;
|
29
|
-
padding: var(--space-xs, 0.5rem) var(--space-s, 0.75rem);
|
30
|
-
|
31
|
-
&:has(> a[href]:only-child) {
|
32
|
-
padding: 0;
|
33
|
-
|
34
|
-
a[href] {
|
35
|
-
display: block;
|
36
|
-
padding: var(--space-xs, 0.5rem) var(--space-s, 0.75rem);
|
37
|
-
}
|
38
|
-
}
|
39
|
-
}
|
40
|
-
|
41
|
-
thead th {
|
42
|
-
white-space: nowrap;
|
43
|
-
overflow-x: hidden;
|
44
|
-
text-overflow: ellipsis;
|
45
|
-
}
|
46
|
-
|
47
|
-
caption {
|
48
|
-
caption-side: bottom;
|
49
|
-
margin-block-start: var(--space-s);
|
50
|
-
}
|
51
|
-
|
52
|
-
/* Katalyst tables overrides */
|
53
|
-
|
54
|
-
.katalyst--table {
|
55
|
-
:where(th[data-cell-type="selection"], td[data-cell-type="selection"]) {
|
56
|
-
width: 2rem;
|
5
|
+
td.type-enum small {
|
6
|
+
color: var(--on-tag-color);
|
7
|
+
font-size: small;
|
57
8
|
}
|
58
9
|
|
59
|
-
[
|
10
|
+
.selection:has(input[type="checkbox"]) {
|
60
11
|
position: relative;
|
61
12
|
padding: 0;
|
62
13
|
|
@@ -142,10 +93,11 @@ caption {
|
|
142
93
|
p {
|
143
94
|
margin-bottom: 0.5rem;
|
144
95
|
}
|
96
|
+
}
|
145
97
|
|
146
|
-
|
147
|
-
|
148
|
-
|
98
|
+
.table-container {
|
99
|
+
overflow-x: auto;
|
100
|
+
max-width: 100%;
|
149
101
|
}
|
150
102
|
|
151
103
|
.katalyst--tables--query {
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/*
|
2
|
+
* Based on cover composition: https://every-layout.dev/layouts/cover/
|
3
|
+
*/
|
4
|
+
.cover {
|
5
|
+
display: flex;
|
6
|
+
flex-direction: column;
|
7
|
+
min-block-size: 100vh;
|
8
|
+
padding: 1rem;
|
9
|
+
}
|
10
|
+
|
11
|
+
.cover > * {
|
12
|
+
margin-block: auto;
|
13
|
+
}
|
14
|
+
|
15
|
+
.cover[data-centered] {
|
16
|
+
align-items: center;
|
17
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.govuk-caption-xl,
|
2
|
+
.govuk-caption-l,
|
3
|
+
.govuk-caption-m {
|
4
|
+
color: var(--govuk-hint-color);
|
5
|
+
display: block;
|
6
|
+
font-weight: var(--font-regular);
|
7
|
+
line-height: var(--leading-fine);
|
8
|
+
}
|
9
|
+
|
10
|
+
.govuk-caption-xl {
|
11
|
+
font-size: var(--size-step-2);
|
12
|
+
margin-bottom: var(--space-3xs);
|
13
|
+
}
|
14
|
+
|
15
|
+
.govuk-caption-l {
|
16
|
+
font-size: var(--size-step-1);
|
17
|
+
margin-bottom: var(--space-3xs);
|
18
|
+
}
|
19
|
+
|
20
|
+
.govuk-caption-m {
|
21
|
+
font-size: var(--size-step-0);
|
22
|
+
}
|
@@ -0,0 +1,153 @@
|
|
1
|
+
.govuk-checkboxes--small {
|
2
|
+
--input-size: var(--small-input-size);
|
3
|
+
}
|
4
|
+
|
5
|
+
.govuk-checkboxes__item {
|
6
|
+
display: grid;
|
7
|
+
grid-template-areas: "input label" "input hint";
|
8
|
+
grid-template-columns: var(--input-size) 1fr;
|
9
|
+
grid-column-gap: var(--space-xs);
|
10
|
+
align-items: baseline;
|
11
|
+
}
|
12
|
+
|
13
|
+
.govuk-checkboxes__input {
|
14
|
+
cursor: pointer;
|
15
|
+
grid-area: input;
|
16
|
+
height: var(--input-size);
|
17
|
+
margin-block-start: calc(-0.5 * var(--input-size));
|
18
|
+
margin: 0;
|
19
|
+
opacity: 0;
|
20
|
+
translate: 0 calc(var(--stroke-input-width) + 0.25 * var(--input-size));
|
21
|
+
width: var(--input-size);
|
22
|
+
z-index: 1;
|
23
|
+
}
|
24
|
+
|
25
|
+
.govuk-checkboxes__item::before {
|
26
|
+
content: "";
|
27
|
+
aspect-ratio: 1;
|
28
|
+
background: transparent;
|
29
|
+
border-radius: var(--radius-s);
|
30
|
+
border: var(--stroke-input);
|
31
|
+
display: inline-block;
|
32
|
+
grid-area: input;
|
33
|
+
margin-block-start: calc(-0.5 * var(--input-size));
|
34
|
+
translate: 0 calc(var(--stroke-input-width) + 0.25 * var(--input-size));
|
35
|
+
}
|
36
|
+
|
37
|
+
.govuk-checkboxes__item::after {
|
38
|
+
content: "";
|
39
|
+
aspect-ratio: 1;
|
40
|
+
background: currentcolor;
|
41
|
+
border: calc(0.25 * var(--input-size)) solid currentcolor;
|
42
|
+
display: inline-block;
|
43
|
+
grid-area: input;
|
44
|
+
margin-block-start: calc(-0.5 * var(--input-size));
|
45
|
+
margin-inline: calc(0.25 * var(--input-size));
|
46
|
+
opacity: 0;
|
47
|
+
translate: 0 var(--stroke-input-width);
|
48
|
+
}
|
49
|
+
|
50
|
+
.govuk-checkboxes__label {
|
51
|
+
grid-area: label;
|
52
|
+
padding-block: calc(
|
53
|
+
var(--input-size) * 0.5 + var(--stroke-input-width) - 0.5em
|
54
|
+
);
|
55
|
+
cursor: pointer;
|
56
|
+
touch-action: manipulation;
|
57
|
+
margin-block-end: 0;
|
58
|
+
min-height: var(--input-size);
|
59
|
+
}
|
60
|
+
|
61
|
+
.govuk-checkboxes__hint {
|
62
|
+
grid-area: hint;
|
63
|
+
}
|
64
|
+
|
65
|
+
.govuk-checkboxes__label:has(+ .govuk-checkboxes__hint) {
|
66
|
+
padding-block-end: 0;
|
67
|
+
}
|
68
|
+
|
69
|
+
.govuk-checkboxes__item:has(.govuk-checkboxes__input:focus)::before {
|
70
|
+
border-width: calc(var(--stroke-input-width) + 1px);
|
71
|
+
outline: var(--focus-outline);
|
72
|
+
outline-offset: 0;
|
73
|
+
}
|
74
|
+
|
75
|
+
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
|
76
|
+
.govuk-checkboxes__item:has(.govuk-checkboxes__input:focus)::before {
|
77
|
+
outline-color: Highlight;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
.govuk-checkboxes__item:has(.govuk-checkboxes__input:checked)::after {
|
82
|
+
opacity: 1;
|
83
|
+
}
|
84
|
+
|
85
|
+
.govuk-checkboxes__input:disabled,
|
86
|
+
.govuk-checkboxes__input:disabled + .govuk-checkboxes__label {
|
87
|
+
cursor: not-allowed;
|
88
|
+
}
|
89
|
+
|
90
|
+
.govuk-checkboxes__input:disabled + .govuk-checkboxes__label,
|
91
|
+
.govuk-checkboxes__input:disabled ~ .govuk-hint {
|
92
|
+
opacity: 0.5;
|
93
|
+
}
|
94
|
+
|
95
|
+
.govuk-checkboxes__divider {
|
96
|
+
width: var(--input-size);
|
97
|
+
text-align: center;
|
98
|
+
}
|
99
|
+
|
100
|
+
.govuk-checkboxes__conditional {
|
101
|
+
margin-bottom: var(--space-s);
|
102
|
+
margin-left: calc(var(--input-size) * 0.5 - var(--stroke-input-width) * 0.5);
|
103
|
+
padding-left: calc(
|
104
|
+
var(--input-size) * 0.5 - var(--stroke-input-width) * 0.5 + var(--space-xs)
|
105
|
+
);
|
106
|
+
border-left: calc(2 * var(--stroke-input-width)) solid var(--color-mid);
|
107
|
+
|
108
|
+
> :not([type="hidden"]) + * {
|
109
|
+
margin-top: var(--flow-space, var(--space-xs));
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
.govuk-frontend-supported .govuk-checkboxes__conditional--hidden {
|
114
|
+
display: none;
|
115
|
+
}
|
116
|
+
|
117
|
+
.govuk-checkboxes--small {
|
118
|
+
.govuk-checkboxes__item:hover:has(
|
119
|
+
.govuk-checkboxes__input:not(:disabled)
|
120
|
+
)::before {
|
121
|
+
outline: var(--focus-width) 1px dashed transparent;
|
122
|
+
outline-offset: 1px;
|
123
|
+
box-shadow: 0 0 0 var(--space-3xs) var(--color-mid);
|
124
|
+
}
|
125
|
+
|
126
|
+
.govuk-checkboxes__item:hover:has(.govuk-checkboxes__input:focus)::before {
|
127
|
+
box-shadow:
|
128
|
+
0 0 0 var(--focus-width) var(--focus-color),
|
129
|
+
0 0 0 var(--space-3xs) var(--color-mid);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
|
134
|
+
.govuk-checkboxes--small {
|
135
|
+
.govuk-checkboxes__item:hover:has(.govuk-checkboxes__input:focus)::before {
|
136
|
+
outline-color: Highlight;
|
137
|
+
}
|
138
|
+
}
|
139
|
+
}
|
140
|
+
|
141
|
+
@media (hover: none), (pointer: coarse) {
|
142
|
+
.govuk-checkboxes--small {
|
143
|
+
.govuk-checkboxes__item:hover:has(
|
144
|
+
.govuk-checkboxes__input:not(:disabled)
|
145
|
+
)::before {
|
146
|
+
box-shadow: initial;
|
147
|
+
}
|
148
|
+
|
149
|
+
.govuk-checkboxes__item:hover:has(.govuk-checkboxes__input:focus)::before {
|
150
|
+
box-shadow: 0 0 0 var(--focus-width) var(--focus-color);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
data/app/assets/stylesheets/koi/{components/_document-field.scss → forms/document-field.css}
RENAMED
@@ -7,7 +7,7 @@
|
|
7
7
|
"preview"
|
8
8
|
"file"
|
9
9
|
"supplemental";
|
10
|
-
grid-template-columns:
|
10
|
+
grid-template-columns: auto;
|
11
11
|
grid-auto-rows: auto;
|
12
12
|
|
13
13
|
label {
|
@@ -24,27 +24,32 @@
|
|
24
24
|
|
25
25
|
input {
|
26
26
|
grid-area: file;
|
27
|
-
}
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
&::file-selector-button {
|
29
|
+
color: var(--color-dark);
|
30
|
+
background: var(--color-tint);
|
31
|
+
border: var(--stroke-input);
|
32
|
+
border-radius: var(--input-radius);
|
33
|
+
}
|
33
34
|
}
|
34
35
|
|
35
36
|
.preview-file {
|
36
37
|
grid-area: preview;
|
37
38
|
position: relative;
|
38
39
|
overflow: visible;
|
39
|
-
background-color:
|
40
|
-
border:
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
background-color: var(--color-tint);
|
41
|
+
border: var(--stroke-input);
|
42
|
+
border-radius: var(--input-radius);
|
43
|
+
margin-bottom: var(--space-2xs);
|
44
|
+
padding: var(--space-3xs);
|
45
|
+
line-height: var(--leading-standard);
|
44
46
|
align-items: start;
|
45
|
-
display: inline-flex;
|
46
47
|
margin-right: auto;
|
47
48
|
|
49
|
+
&:not([hidden]) {
|
50
|
+
display: inline-flex;
|
51
|
+
}
|
52
|
+
|
48
53
|
.preview-filename {
|
49
54
|
line-height: unset;
|
50
55
|
}
|
@@ -71,9 +76,9 @@
|
|
71
76
|
|
72
77
|
> div:last-child {
|
73
78
|
grid-area: supplemental;
|
74
|
-
}
|
75
79
|
|
76
|
-
|
77
|
-
|
80
|
+
> * + * {
|
81
|
+
margin-top: var(--flow-space, var(--space-2xs));
|
82
|
+
}
|
78
83
|
}
|
79
84
|
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
:root {
|
2
|
+
--govuk-error-bar-padding: var(--space-xs);
|
3
|
+
--govuk-error-stroke-width: var(--space-3xs);
|
4
|
+
--govuk-error-stroke: var(--govuk-error-stroke-width) solid
|
5
|
+
var(--govuk-error-color);
|
6
|
+
}
|
7
|
+
|
8
|
+
.govuk-error-message {
|
9
|
+
font-weight: var(--font-bold);
|
10
|
+
font-size: var(--size-step-0);
|
11
|
+
line-height: var(--leading-fine);
|
12
|
+
margin-block-end: var(--space-xs);
|
13
|
+
color: var(--govuk-error-color);
|
14
|
+
}
|
15
|
+
|
16
|
+
/* error indicator as a bar next to group (excludes nested) */
|
17
|
+
.govuk-form-group--error:not(.govuk-form-group &) {
|
18
|
+
margin-left: calc(-1 * (var(--space-xs) + var(--govuk-error-stroke-width)));
|
19
|
+
border-left: var(--govuk-error-stroke);
|
20
|
+
padding-left: var(--space-xs);
|
21
|
+
}
|
22
|
+
|
23
|
+
.govuk-error-summary {
|
24
|
+
padding: var(--space-s);
|
25
|
+
border: var(--govuk-error-stroke);
|
26
|
+
}
|
27
|
+
|
28
|
+
.govuk-error-summary:focus {
|
29
|
+
outline: var(--focus-outline);
|
30
|
+
}
|
31
|
+
|
32
|
+
.govuk-error-summary__title {
|
33
|
+
font-size: var(--size-step-1);
|
34
|
+
line-height: var(--leading-fine);
|
35
|
+
font-weight: var(--font-bold);
|
36
|
+
margin-top: 0;
|
37
|
+
margin-bottom: var(--space-s);
|
38
|
+
}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
fieldset {
|
2
|
+
border: var(--stroke);
|
3
|
+
padding: var(--space-s);
|
4
|
+
}
|
5
|
+
|
6
|
+
legend {
|
7
|
+
font-weight: var(--font-medium);
|
8
|
+
padding-inline: var(--space-xs);
|
9
|
+
}
|
10
|
+
|
11
|
+
.govuk-fieldset {
|
12
|
+
min-width: 0;
|
13
|
+
margin: 0;
|
14
|
+
padding: 0;
|
15
|
+
border: none;
|
16
|
+
|
17
|
+
> * + * {
|
18
|
+
margin-top: var(--flow-space, var(--space-2xs));
|
19
|
+
}
|
20
|
+
|
21
|
+
/* remove space created by hidden inputs */
|
22
|
+
&:has(> [type="hidden"]:first-child) {
|
23
|
+
margin-top: calc(-1 * var(--flow-space, var(--space-2xs)));
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
.govuk-fieldset__legend {
|
28
|
+
font-weight: var(--font-regular);
|
29
|
+
font-size: var(--size-step-0);
|
30
|
+
line-height: var(--leading-fine);
|
31
|
+
max-width: 100%;
|
32
|
+
padding: 0;
|
33
|
+
white-space: normal;
|
34
|
+
|
35
|
+
& + * {
|
36
|
+
--flow-space: var(--space-2xs);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
.govuk-fieldset__legend--xl,
|
41
|
+
.govuk-fieldset__legend--l,
|
42
|
+
.govuk-fieldset__legend--m {
|
43
|
+
font-weight: var(--font-bold);
|
44
|
+
|
45
|
+
& + * {
|
46
|
+
--flow-space: var(--space-xs);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
.govuk-fieldset__legend--xl {
|
51
|
+
font-size: var(--size-step-4);
|
52
|
+
line-height: var(--leading-fine);
|
53
|
+
}
|
54
|
+
|
55
|
+
.govuk-fieldset__legend--l {
|
56
|
+
font-size: var(--size-step-3);
|
57
|
+
line-height: var(--leading-fine);
|
58
|
+
}
|
59
|
+
|
60
|
+
.govuk-fieldset__legend--m {
|
61
|
+
font-size: var(--size-step-1);
|
62
|
+
line-height: var(--leading-fine);
|
63
|
+
}
|
64
|
+
|
65
|
+
.govuk-fieldset__legend--s {
|
66
|
+
font-weight: var(--font-bold);
|
67
|
+
}
|
68
|
+
|
69
|
+
.govuk-fieldset__heading {
|
70
|
+
margin: 0;
|
71
|
+
font-size: inherit;
|
72
|
+
font-weight: inherit;
|
73
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
.govuk-file-upload {
|
2
|
+
max-width: 100%;
|
3
|
+
}
|
4
|
+
|
5
|
+
.govuk-file-upload::-webkit-file-upload-button {
|
6
|
+
-webkit-appearance: button;
|
7
|
+
color: inherit;
|
8
|
+
font: inherit;
|
9
|
+
}
|
10
|
+
|
11
|
+
.govuk-file-upload:focus,
|
12
|
+
.govuk-file-upload:focus-within {
|
13
|
+
outline: var(--focus-outline);
|
14
|
+
box-shadow: var(--focus-shadow);
|
15
|
+
}
|
16
|
+
|
17
|
+
.govuk-file-upload:disabled {
|
18
|
+
opacity: 0.5;
|
19
|
+
cursor: not-allowed;
|
20
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/* flow for form elements (mostly groups and fieldsets) */
|
2
|
+
form:not([class]),
|
3
|
+
.govuk-form {
|
4
|
+
> * + * {
|
5
|
+
margin-top: var(--flow-space, var(--space-m));
|
6
|
+
}
|
7
|
+
|
8
|
+
&:has(> [type="hidden"]:first-child) {
|
9
|
+
margin-top: calc(-1 * var(--flow-space, var(--space-m)));
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
.govuk-form-group {
|
14
|
+
container: form-group / inline-size;
|
15
|
+
|
16
|
+
.govuk-form-group {
|
17
|
+
container: unset;
|
18
|
+
}
|
19
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
.govuk-hint {
|
2
|
+
font-weight: var(--font-regular);
|
3
|
+
font-size: var(--size-step-0);
|
4
|
+
line-height: var(--leading-fine);
|
5
|
+
color: var(--govuk-hint-color);
|
6
|
+
margin-block-end: var(--space-3xs);
|
7
|
+
}
|
8
|
+
|
9
|
+
.govuk-fieldset__legend + .govuk-hint {
|
10
|
+
--flow-space: var(--space-2xs);
|
11
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
.govuk-image-field {
|
2
|
+
display: grid;
|
3
|
+
grid-template-areas:
|
4
|
+
"label preview"
|
5
|
+
"hint preview"
|
6
|
+
"error preview"
|
7
|
+
"file preview"
|
8
|
+
"supplemental supplemental";
|
9
|
+
grid-template-columns: 1fr auto;
|
10
|
+
grid-template-rows: auto auto auto 1fr auto;
|
11
|
+
gap: 0 1rem;
|
12
|
+
|
13
|
+
label {
|
14
|
+
grid-area: label;
|
15
|
+
}
|
16
|
+
|
17
|
+
.govuk-hint {
|
18
|
+
grid-area: hint;
|
19
|
+
}
|
20
|
+
|
21
|
+
.govuk-error-message {
|
22
|
+
grid-area: error;
|
23
|
+
}
|
24
|
+
|
25
|
+
input {
|
26
|
+
grid-area: file;
|
27
|
+
align-self: start;
|
28
|
+
|
29
|
+
&::file-selector-button {
|
30
|
+
color: var(--color-dark);
|
31
|
+
background: var(--color-tint);
|
32
|
+
border: var(--stroke-input);
|
33
|
+
border-radius: var(--input-radius);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
.preview-image {
|
38
|
+
grid-area: preview;
|
39
|
+
position: relative;
|
40
|
+
display: grid;
|
41
|
+
overflow: visible;
|
42
|
+
align-self: start;
|
43
|
+
align-items: center;
|
44
|
+
justify-items: center;
|
45
|
+
background-color: var(--color-tint);
|
46
|
+
border: var(--stroke-input);
|
47
|
+
border-radius: var(--input-radius);
|
48
|
+
|
49
|
+
min-width: calc(8em + 2 * var(--stroke-input-width));
|
50
|
+
aspect-ratio: 1;
|
51
|
+
|
52
|
+
.image-thumbnail {
|
53
|
+
max-width: 8em;
|
54
|
+
max-height: 8em;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
.file-destroy {
|
59
|
+
appearance: none;
|
60
|
+
position: absolute;
|
61
|
+
background-color: var(--color-tint);
|
62
|
+
color: var(--color-dark);
|
63
|
+
border-radius: var(--input-radius);
|
64
|
+
border: var(--stroke-input);
|
65
|
+
display: block;
|
66
|
+
padding: 0;
|
67
|
+
top: calc(-1 * var(--stroke-input-width));
|
68
|
+
right: calc(-1 * var(--stroke-input-width));
|
69
|
+
|
70
|
+
&::after {
|
71
|
+
content: "×";
|
72
|
+
display: block;
|
73
|
+
position: relative;
|
74
|
+
width: 21px;
|
75
|
+
line-height: 21px;
|
76
|
+
font-size: 21px;
|
77
|
+
top: -1px;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
> div:last-child {
|
82
|
+
grid-area: supplemental;
|
83
|
+
|
84
|
+
> * + * {
|
85
|
+
margin-top: var(--flow-space, var(--space-2xs));
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
.preview-image[hidden] {
|
90
|
+
display: block !important;
|
91
|
+
|
92
|
+
.file-destroy {
|
93
|
+
display: none;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
@import url("label.css");
|
2
|
+
@import url("hint.css");
|
3
|
+
@import url("caption.css");
|
4
|
+
|
5
|
+
@import url("form-group.css");
|
6
|
+
@import url("fieldset.css");
|
7
|
+
@import url("errors.css");
|
8
|
+
|
9
|
+
@import url("input.css");
|
10
|
+
@import url("checkboxes.css");
|
11
|
+
@import url("date-input.css");
|
12
|
+
@import url("file-upload.css");
|
13
|
+
@import url("image-field.css");
|
14
|
+
@import url("document-field.css");
|
15
|
+
@import url("radios.css");
|
16
|
+
@import url("password.css");
|
17
|
+
@import url("select.css");
|
18
|
+
@import url("textarea.css");
|
19
|
+
@import url("trix.css");
|
20
|
+
|
21
|
+
:root {
|
22
|
+
--stroke-input-width: 2px;
|
23
|
+
--stroke-input: var(--stroke-input-width) solid var(--color-dark);
|
24
|
+
--input-radius: 0.2rem;
|
25
|
+
--input-size: var(--size-step-4);
|
26
|
+
--small-input-size: var(--size-step-2);
|
27
|
+
--focus-width: 2px;
|
28
|
+
--focus-outline: var(--focus-width) solid var(--focus-color);
|
29
|
+
--focus-shadow: currentColor inset 0 0 0 1px;
|
30
|
+
--govuk-error-color: var(--color-alert);
|
31
|
+
--govuk-hint-color: var(--color-mid);
|
32
|
+
}
|
33
|
+
|
34
|
+
.govuk-visually-hidden {
|
35
|
+
border: 0;
|
36
|
+
clip: rect(0 0 0 0);
|
37
|
+
height: auto;
|
38
|
+
margin: 0;
|
39
|
+
overflow: hidden;
|
40
|
+
padding: 0;
|
41
|
+
position: absolute;
|
42
|
+
width: 1px;
|
43
|
+
white-space: nowrap;
|
44
|
+
}
|