@pnx-mixtape/mxds 0.1.0-rc.1 → 0.1.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/decorators.ts +15 -0
- package/.storybook/preview.ts +4 -1
- package/.storybook/themes/campus-vibrant.css +181 -0
- package/.storybook/themes/civic-formal.css +246 -0
- package/.storybook/{theme-demo.css → themes/demo.css} +14 -7
- package/.storybook/themes/health-services.css +255 -0
- package/.storybook/themes/research-faculty.css +169 -0
- package/dist/build/accordion.css +1 -1
- package/dist/build/base.css +1 -1
- package/dist/build/button.css +1 -1
- package/dist/build/chunks/DropMenu-1baQc8Yc.js +1 -0
- package/dist/build/chunks/InPageNavigation-CVieEl9u.js +1 -0
- package/dist/build/chunks/Popover-Cxg-s5Jn.js +1 -0
- package/dist/build/chunks/Sticky-cWUVSOXN.js +1 -0
- package/dist/build/chunks/{Tabs-Dm8g301e.js → Tabs-DA_Ez8pv.js} +2 -2
- package/dist/build/chunks/polyfills-C7pRt54M.js +1 -0
- package/dist/build/constants.css +1 -1
- package/dist/build/drop-menu.entry.js +1 -1
- package/dist/build/elements.js +1 -1
- package/dist/build/form.css +1 -1
- package/dist/build/grid.css +1 -1
- package/dist/build/in-page-alert.css +1 -1
- package/dist/build/in-page-navigation.entry.js +1 -1
- package/dist/build/navigation.css +1 -1
- package/dist/build/popover.entry.js +1 -1
- package/dist/build/print.css +1 -1
- package/dist/build/progress-indicator.css +1 -0
- package/dist/build/react.js +1 -1
- package/dist/build/sidebar.css +1 -1
- package/dist/build/sticky.entry.js +1 -1
- package/dist/build/tabs.entry.js +1 -1
- package/dist/build/tag.css +1 -1
- package/dist/build/utilities.css +1 -1
- package/dist/types/Atom/DefinitionList/DefinitionList.d.ts +3 -2
- package/dist/types/Atom/DefinitionList/DefinitionList.d.ts.map +1 -1
- package/dist/types/Atom/Heading/Heading.d.ts.map +1 -1
- package/dist/types/Atom/List/List.d.ts +10 -0
- package/dist/types/Atom/List/List.d.ts.map +1 -0
- package/dist/types/Component/DropMenu/Elements/DropMenu.d.ts.map +1 -1
- package/dist/types/Component/InPageNavigation/Elements/InPageNavigation.d.ts +2 -2
- package/dist/types/Component/InPageNavigation/Elements/InPageNavigation.d.ts.map +1 -1
- package/dist/types/Component/InPageNavigation/Hooks/useInPageNavigation.d.ts.map +1 -1
- package/dist/types/Component/ProgressIndicator/ProgressIndicator.d.ts +9 -0
- package/dist/types/Component/ProgressIndicator/ProgressIndicator.d.ts.map +1 -0
- package/dist/types/Component/Tabs/Elements/Tabs.d.ts.map +1 -1
- package/dist/types/Component/Tag/Tag.d.ts +4 -2
- package/dist/types/Component/Tag/Tag.d.ts.map +1 -1
- package/dist/types/Form/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/types/Form/Checkbox/FormCheckbox.d.ts.map +1 -1
- package/dist/types/Form/CheckboxCard/CheckboxCard.d.ts +23 -0
- package/dist/types/Form/CheckboxCard/CheckboxCard.d.ts.map +1 -0
- package/dist/types/Form/Radio/FormRadio.d.ts.map +1 -1
- package/dist/types/Form/RadioCard/RadioCard.d.ts +16 -0
- package/dist/types/Form/RadioCard/RadioCard.d.ts.map +1 -0
- package/dist/types/Form/Select/FormSelect.d.ts.map +1 -1
- package/dist/types/Form/TextInput/FormText.d.ts.map +1 -1
- package/dist/types/Form/Textarea/FormTextarea.d.ts.map +1 -1
- package/dist/types/enums.d.ts +15 -0
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/react.d.ts +4 -0
- package/dist/types/react.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/Atom/Background/_background.css +2 -2
- package/src/Atom/Blockquote/_blockquote.css +9 -2
- package/src/Atom/Button/README.md +1 -0
- package/src/Atom/Button/_buttons-styles.css +6 -6
- package/src/Atom/Button/_buttons.css +5 -3
- package/src/Atom/DefinitionList/DefinitionList.stories.ts +39 -2
- package/src/Atom/DefinitionList/DefinitionList.stories.tsx +36 -0
- package/src/Atom/DefinitionList/DefinitionList.tsx +4 -1
- package/src/Atom/DefinitionList/DefinitionListItem.stories.ts +1 -1
- package/src/Atom/DefinitionList/README.md +43 -0
- package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.ts.snap +37 -3
- package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.tsx.snap +2 -0
- package/src/Atom/DefinitionList/__snapshots__/DefinitionListItem.stories.ts.snap +3 -3
- package/src/Atom/DefinitionList/definition-list-item.twig +1 -0
- package/src/Atom/DefinitionList/definition-list.twig +6 -1
- package/src/Atom/Heading/Heading.tsx +6 -0
- package/src/Atom/Heading/_headings.css +2 -1
- package/src/Atom/Icon/_extended-set.css +30 -30
- package/src/Atom/Icon/_icon.css +36 -36
- package/src/Atom/Image/README.md +2 -2
- package/src/Atom/Image/_image.css +12 -6
- package/src/Atom/List/List.stories.ts +102 -0
- package/src/Atom/List/List.stories.tsx +103 -0
- package/src/Atom/List/List.tsx +22 -0
- package/src/Atom/List/README.md +150 -0
- package/src/Atom/List/__snapshots__/List.stories.ts.snap +43 -0
- package/src/Atom/List/__snapshots__/List.stories.tsx.snap +13 -0
- package/src/Atom/List/_list.css +123 -0
- package/src/Atom/List/list.twig +5 -0
- package/src/Atom/Media/Media.stories.ts +1 -1
- package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +2 -2
- package/src/Atom/Spacing/_spacing.css +24 -24
- package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +24 -4
- package/src/Atom/Table/_table.css +15 -3
- package/src/Atom/Table/table.twig +6 -1
- package/src/Atom/Text/__snapshots__/Text.stories.ts.snap +3 -2
- package/src/Atom/Text/_text-styles.css +21 -1
- package/src/Atom/Text/twig/text-styles-example.twig +3 -2
- package/src/Atom/_base.css +6 -0
- package/src/Atom/_flow.css +1 -1
- package/src/Atom/_generic.css +18 -11
- package/src/Component/Accordion/accordion.css +2 -0
- package/src/Component/Card/__snapshots__/Card.stories.ts.snap +2 -2
- package/src/Component/Card/card.twig +1 -1
- package/src/Component/Carousel/Carousel.stories.ts +46 -23
- package/src/Component/DropMenu/Elements/DropMenu.ts +10 -1
- package/src/Component/InPageAlert/in-page-alert.css +2 -1
- package/src/Component/InPageNavigation/Elements/InPageNavigation.ts +10 -5
- package/src/Component/InPageNavigation/Hooks/useInPageNavigation.ts +10 -5
- package/src/Component/InPageNavigation/InPageNavigation.stories.ts +33 -0
- package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +52 -0
- package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +26 -0
- package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +2 -0
- package/src/Component/InPageNavigation/twig/content-example-duplicate-headings.twig +20 -0
- package/src/Component/InPageNavigation/twig/in-page-navigation-story-duplicate-headings.twig +2 -0
- package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +4 -4
- package/src/Component/ListItem/list-item.twig +2 -2
- package/src/Component/Navigation/_navigation.css +1 -1
- package/src/Component/Pagination/Pagination.stories.ts +8 -4
- package/src/Component/Pagination/pagination.css +2 -2
- package/src/Component/ProgressIndicator/ProgressIndicator.stories.ts +36 -0
- package/src/Component/ProgressIndicator/ProgressIndicator.stories.tsx +30 -0
- package/src/Component/ProgressIndicator/ProgressIndicator.tsx +60 -0
- package/src/Component/ProgressIndicator/README.md +111 -0
- package/src/Component/ProgressIndicator/__snapshots__/ProgressIndicator.stories.ts.snap +67 -0
- package/src/Component/ProgressIndicator/__snapshots__/ProgressIndicator.stories.tsx.snap +7 -0
- package/src/Component/ProgressIndicator/progress-indicator.css +59 -0
- package/src/Component/ProgressIndicator/progress-indicator.twig +22 -0
- package/src/Component/Sticky/Elements/Sticky.ts +1 -1
- package/src/Component/Sticky/sticky.css +3 -3
- package/src/Component/Tabs/Elements/Tabs.ts +3 -1
- package/src/Component/Tabs/Tabs.stories.ts +55 -21
- package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +2 -2
- package/src/Component/Tag/README.md +52 -26
- package/src/Component/Tag/Tag.stories.tsx +24 -0
- package/src/Component/Tag/Tag.tsx +12 -2
- package/src/Component/Tag/TagItem.stories.ts +25 -0
- package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +2 -2
- package/src/Component/Tag/__snapshots__/Tag.stories.tsx.snap +2 -0
- package/src/Component/Tag/tag-item.twig +2 -2
- package/src/Component/Tag/tag.css +76 -2
- package/src/Form/Autocomplete/Autocomplete.stories.ts +8 -3
- package/src/Form/Autocomplete/Autocomplete.tsx +1 -4
- package/src/Form/Autocomplete/README.md +26 -26
- package/src/Form/Autocomplete/__snapshots__/Autocomplete.stories.ts.snap +1 -1
- package/src/Form/Autocomplete/__snapshots__/Autocomplete.stories.tsx.snap +1 -1
- package/src/Form/Autocomplete/autocomplete.twig +0 -2
- package/src/Form/Checkbox/FormCheckbox.tsx +2 -8
- package/src/Form/Checkbox/README.md +23 -18
- package/src/Form/Checkbox/input-checkbox.twig +0 -2
- package/src/Form/CheckboxCard/CheckboxCard.stories.ts +90 -0
- package/src/Form/CheckboxCard/CheckboxCard.stories.tsx +43 -0
- package/src/Form/CheckboxCard/CheckboxCard.tsx +102 -0
- package/src/Form/CheckboxCard/README.md +163 -0
- package/src/Form/CheckboxCard/__snapshots__/CheckboxCard.stories.ts.snap +63 -0
- package/src/Form/CheckboxCard/__snapshots__/CheckboxCard.stories.tsx.snap +7 -0
- package/src/Form/CheckboxCard/checkbox-card.twig +29 -0
- package/src/Form/FormItem/__snapshots__/FormItem.stories.ts.snap +2 -2
- package/src/Form/README.md +65 -13
- package/src/Form/Radio/FormRadio.tsx +1 -4
- package/src/Form/Radio/input-radio.twig +0 -2
- package/src/Form/RadioCard/README.md +146 -0
- package/src/Form/RadioCard/RadioCard.stories.ts +95 -0
- package/src/Form/RadioCard/RadioCard.stories.tsx +26 -0
- package/src/Form/RadioCard/RadioCard.tsx +59 -0
- package/src/Form/RadioCard/__snapshots__/RadioCard.stories.ts.snap +69 -0
- package/src/Form/RadioCard/__snapshots__/RadioCard.stories.tsx.snap +3 -0
- package/src/Form/RadioCard/radio-card.twig +20 -0
- package/src/Form/Select/FormSelect.tsx +1 -4
- package/src/Form/Select/input-select.twig +0 -2
- package/src/Form/TextInput/FormText.stories.tsx +14 -0
- package/src/Form/TextInput/FormText.tsx +1 -4
- package/src/Form/TextInput/__snapshots__/FormText.stories.tsx.snap +2 -0
- package/src/Form/TextInput/input-text.twig +0 -2
- package/src/Form/Textarea/FormTextarea.tsx +1 -4
- package/src/Form/Textarea/input-textarea.twig +0 -2
- package/src/Form/Validation.stories.ts +153 -0
- package/src/Form/__snapshots__/Validation.stories.ts.snap +130 -0
- package/src/Form/form.css +155 -28
- package/src/Layout/Grid/grid.css +4 -4
- package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +5 -5
- package/src/Layout/Sidebar/sidebar.css +1 -0
- package/src/Layout/Sidebar/sidebar.twig +1 -1
- package/src/Utility/_layout-utils.css +8 -0
- package/src/Utility/print.css +50 -28
- package/src/Utility/utilities.css +2 -2
- package/src/constants.css +12 -2
- package/src/enums.ts +17 -0
- package/src/react.ts +4 -0
- package/tools/lib/extract-classnames.mjs +0 -0
- package/tools/lint-classnames.mjs +1 -1
- package/dist/build/chunks/DropMenu-Co9jZZ4S.js +0 -1
- package/dist/build/chunks/InPageNavigation-CzR_KZaz.js +0 -1
- package/dist/build/chunks/Popover-De_CQqcd.js +0 -1
- package/dist/build/chunks/Sticky-Kyjykb36.js +0 -1
- package/dist/build/chunks/polyfills-Dokbkxxk.js +0 -1
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
{% if columns %}
|
|
2
|
+
{% set class = "mx-list--columns" %}
|
|
3
|
+
{% elseif summary %}
|
|
4
|
+
{% set class = "mx-list--summary" %}
|
|
5
|
+
{% endif %}
|
|
1
6
|
{% set attributes = attributes ?? create_attribute() %}
|
|
2
|
-
<dl{{ attributes }}>
|
|
7
|
+
<dl{{ attributes.addClass(class) }}>
|
|
3
8
|
{{ items }}
|
|
4
9
|
</dl>
|
|
@@ -42,6 +42,12 @@ const Heading = ({
|
|
|
42
42
|
|
|
43
43
|
useEffect(() => {
|
|
44
44
|
if (anchor || !ref.current) return
|
|
45
|
+
if (ref.current.id) {
|
|
46
|
+
// Adopt an id already set externally (e.g. by InPageNavigation's dedup logic)
|
|
47
|
+
// eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
|
|
48
|
+
setAnchor(ref.current.id)
|
|
49
|
+
return
|
|
50
|
+
}
|
|
45
51
|
// eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
|
|
46
52
|
setAnchor(makeAnchor(ref.current?.textContent))
|
|
47
53
|
}, [anchor, ref])
|
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
h6,
|
|
15
15
|
.mx-heading--xs
|
|
16
16
|
) {
|
|
17
|
-
font-family: var(--heading-font-family, var(--font-family));
|
|
17
|
+
font-family: var(--heading-font-family, var(--font-family-display, var(--font-family)));
|
|
18
18
|
line-height: var(--line-height-h);
|
|
19
19
|
font-size: var(--heading-font-size, var(--font-size));
|
|
20
20
|
font-weight: var(--heading-font-weight, var(--font-weight-bold));
|
|
21
|
+
letter-spacing: var(--heading-letter-spacing, 0);
|
|
21
22
|
text-wrap: balance;
|
|
22
23
|
|
|
23
24
|
&[class*="mx-background--"] {
|
|
@@ -4,34 +4,34 @@
|
|
|
4
4
|
* Icon - Extended
|
|
5
5
|
*/
|
|
6
6
|
@layer design-system.atoms {
|
|
7
|
-
@mixin icon attachment;
|
|
8
|
-
@mixin icon blockquote;
|
|
9
|
-
@mixin icon building;
|
|
10
|
-
@mixin icon calendar;
|
|
11
|
-
@mixin icon clock;
|
|
12
|
-
@mixin icon globe;
|
|
13
|
-
@mixin icon heart-selected;
|
|
14
|
-
@mixin icon heart-unselected;
|
|
15
|
-
@mixin icon image;
|
|
16
|
-
@mixin icon home;
|
|
17
|
-
@mixin icon lock;
|
|
18
|
-
@mixin icon login;
|
|
19
|
-
@mixin icon media-play;
|
|
20
|
-
@mixin icon media-pause;
|
|
21
|
-
@mixin icon media-stop;
|
|
22
|
-
@mixin icon media-next;
|
|
23
|
-
@mixin icon media-previous;
|
|
24
|
-
@mixin icon media-rewind;
|
|
25
|
-
@mixin icon media-skip;
|
|
26
|
-
@mixin icon more;
|
|
27
|
-
@mixin icon notification;
|
|
28
|
-
@mixin icon pencil;
|
|
29
|
-
@mixin icon restart;
|
|
30
|
-
@mixin icon settings;
|
|
31
|
-
@mixin icon star-selected;
|
|
32
|
-
@mixin icon star-unselected;
|
|
33
|
-
@mixin icon tick;
|
|
34
|
-
@mixin icon trash;
|
|
35
|
-
@mixin icon user;
|
|
36
|
-
@mixin icon video;
|
|
7
|
+
@add-mixin icon attachment;
|
|
8
|
+
@add-mixin icon blockquote;
|
|
9
|
+
@add-mixin icon building;
|
|
10
|
+
@add-mixin icon calendar;
|
|
11
|
+
@add-mixin icon clock;
|
|
12
|
+
@add-mixin icon globe;
|
|
13
|
+
@add-mixin icon heart-selected;
|
|
14
|
+
@add-mixin icon heart-unselected;
|
|
15
|
+
@add-mixin icon image;
|
|
16
|
+
@add-mixin icon home;
|
|
17
|
+
@add-mixin icon lock;
|
|
18
|
+
@add-mixin icon login;
|
|
19
|
+
@add-mixin icon media-play;
|
|
20
|
+
@add-mixin icon media-pause;
|
|
21
|
+
@add-mixin icon media-stop;
|
|
22
|
+
@add-mixin icon media-next;
|
|
23
|
+
@add-mixin icon media-previous;
|
|
24
|
+
@add-mixin icon media-rewind;
|
|
25
|
+
@add-mixin icon media-skip;
|
|
26
|
+
@add-mixin icon more;
|
|
27
|
+
@add-mixin icon notification;
|
|
28
|
+
@add-mixin icon pencil;
|
|
29
|
+
@add-mixin icon restart;
|
|
30
|
+
@add-mixin icon settings;
|
|
31
|
+
@add-mixin icon star-selected;
|
|
32
|
+
@add-mixin icon star-unselected;
|
|
33
|
+
@add-mixin icon tick;
|
|
34
|
+
@add-mixin icon trash;
|
|
35
|
+
@add-mixin icon user;
|
|
36
|
+
@add-mixin icon video;
|
|
37
37
|
}
|
package/src/Atom/Icon/_icon.css
CHANGED
|
@@ -38,42 +38,42 @@
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
@mixin icon arrow-down;
|
|
42
|
-
@mixin icon arrow-left;
|
|
43
|
-
@mixin icon arrow-up;
|
|
44
|
-
@mixin icon arrow-right;
|
|
45
|
-
@mixin icon chevron-down;
|
|
46
|
-
@mixin icon chevron-left;
|
|
47
|
-
@mixin icon chevron-right;
|
|
48
|
-
@mixin icon chevron-up;
|
|
49
|
-
@mixin icon close;
|
|
50
|
-
@mixin icon collapse;
|
|
51
|
-
@mixin icon download;
|
|
52
|
-
@mixin icon drupal;
|
|
53
|
-
@mixin icon error;
|
|
54
|
-
@mixin icon expand;
|
|
55
|
-
@mixin icon external-link;
|
|
56
|
-
@mixin icon facebook;
|
|
57
|
-
@mixin icon google;
|
|
58
|
-
@mixin icon info;
|
|
59
|
-
@mixin icon instagram;
|
|
60
|
-
@mixin icon linkedin;
|
|
61
|
-
@mixin icon mastodon;
|
|
62
|
-
@mixin icon bluesky;
|
|
63
|
-
@mixin icon menu;
|
|
64
|
-
@mixin icon search;
|
|
65
|
-
@mixin icon success;
|
|
66
|
-
@mixin icon twitter;
|
|
67
|
-
@mixin icon warning;
|
|
68
|
-
@mixin icon youtube;
|
|
69
|
-
@mixin icon email;
|
|
70
|
-
@mixin icon file;
|
|
71
|
-
@mixin icon link;
|
|
72
|
-
@mixin icon phone;
|
|
73
|
-
@mixin icon pin;
|
|
74
|
-
@mixin icon print;
|
|
75
|
-
@mixin icon question;
|
|
76
|
-
@mixin icon share;
|
|
41
|
+
@add-mixin icon arrow-down;
|
|
42
|
+
@add-mixin icon arrow-left;
|
|
43
|
+
@add-mixin icon arrow-up;
|
|
44
|
+
@add-mixin icon arrow-right;
|
|
45
|
+
@add-mixin icon chevron-down;
|
|
46
|
+
@add-mixin icon chevron-left;
|
|
47
|
+
@add-mixin icon chevron-right;
|
|
48
|
+
@add-mixin icon chevron-up;
|
|
49
|
+
@add-mixin icon close;
|
|
50
|
+
@add-mixin icon collapse;
|
|
51
|
+
@add-mixin icon download;
|
|
52
|
+
@add-mixin icon drupal;
|
|
53
|
+
@add-mixin icon error;
|
|
54
|
+
@add-mixin icon expand;
|
|
55
|
+
@add-mixin icon external-link;
|
|
56
|
+
@add-mixin icon facebook;
|
|
57
|
+
@add-mixin icon google;
|
|
58
|
+
@add-mixin icon info;
|
|
59
|
+
@add-mixin icon instagram;
|
|
60
|
+
@add-mixin icon linkedin;
|
|
61
|
+
@add-mixin icon mastodon;
|
|
62
|
+
@add-mixin icon bluesky;
|
|
63
|
+
@add-mixin icon menu;
|
|
64
|
+
@add-mixin icon search;
|
|
65
|
+
@add-mixin icon success;
|
|
66
|
+
@add-mixin icon twitter;
|
|
67
|
+
@add-mixin icon warning;
|
|
68
|
+
@add-mixin icon youtube;
|
|
69
|
+
@add-mixin icon email;
|
|
70
|
+
@add-mixin icon file;
|
|
71
|
+
@add-mixin icon link;
|
|
72
|
+
@add-mixin icon phone;
|
|
73
|
+
@add-mixin icon pin;
|
|
74
|
+
@add-mixin icon print;
|
|
75
|
+
@add-mixin icon question;
|
|
76
|
+
@add-mixin icon share;
|
|
77
77
|
|
|
78
78
|
.mx-icon--status::before {
|
|
79
79
|
mask-image: url("./images/info.svg");
|
package/src/Atom/Image/README.md
CHANGED
|
@@ -76,8 +76,8 @@ The template always wraps the image in a `<picture>` element so multiple `source
|
|
|
76
76
|
|
|
77
77
|
```css
|
|
78
78
|
figcaption {
|
|
79
|
-
--
|
|
80
|
-
--
|
|
79
|
+
--font-size-ui: var(--font-size-s);
|
|
80
|
+
--line-height-ui: var(--line-height);
|
|
81
81
|
}
|
|
82
82
|
```
|
|
83
83
|
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
@layer design-system.defaults {
|
|
2
2
|
figure {
|
|
3
3
|
margin: 0;
|
|
4
|
-
display:
|
|
5
|
-
inline-size:
|
|
4
|
+
display: block;
|
|
5
|
+
inline-size: var(--width, 100%);
|
|
6
|
+
|
|
7
|
+
& :is(picture, img, iframe, video) {
|
|
8
|
+
inline-size: 100%;
|
|
9
|
+
}
|
|
6
10
|
}
|
|
7
11
|
|
|
8
12
|
figcaption {
|
|
13
|
+
margin-block-start: var(--spacing-xs);
|
|
9
14
|
padding: var(--spacing-xxs);
|
|
10
|
-
font-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
font-family: var(--font-family-ui, var(--font-family));
|
|
16
|
+
font-size: var(--font-size-ui, var(--font-size-xs));
|
|
17
|
+
line-height: var(--line-height-ui, var(--line-height-h));
|
|
18
|
+
color: var(--colour-foreground-alt);
|
|
19
|
+
display: block;
|
|
14
20
|
}
|
|
15
21
|
|
|
16
22
|
img {
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/html-vite"
|
|
2
|
+
import Component from "./list.twig"
|
|
3
|
+
import "./_list.css"
|
|
4
|
+
import { ListStyles } from "../../enums"
|
|
5
|
+
|
|
6
|
+
type ListProps = {
|
|
7
|
+
ordered?: boolean
|
|
8
|
+
modifier?: ListStyles
|
|
9
|
+
items: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const meta: Meta<ListProps> = {
|
|
13
|
+
tags: ["autodocs"],
|
|
14
|
+
component: Component,
|
|
15
|
+
args: {
|
|
16
|
+
items: [
|
|
17
|
+
"<li>Content can be grouped into lists, but they don't need to look like lists.</li>",
|
|
18
|
+
"<li>Items can be <i>ordered</i> or <i>unordered</i>.</li>",
|
|
19
|
+
].join(""),
|
|
20
|
+
},
|
|
21
|
+
argTypes: {
|
|
22
|
+
items: {
|
|
23
|
+
description:
|
|
24
|
+
"A concatenated string of pre-rendered `<li>` markup — built at the call site, no `for` loop.",
|
|
25
|
+
type: {
|
|
26
|
+
name: "other",
|
|
27
|
+
required: true,
|
|
28
|
+
value: "string",
|
|
29
|
+
},
|
|
30
|
+
table: {
|
|
31
|
+
type: { summary: "string" },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
ordered: {
|
|
35
|
+
description: "Renders `<ol>` instead of `<ul>`.",
|
|
36
|
+
control: "boolean",
|
|
37
|
+
table: {
|
|
38
|
+
defaultValue: { summary: "false" },
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
modifier: {
|
|
42
|
+
description: "One of `mx-list--notes`, `mx-list--refs`, `mx-list--stats`.",
|
|
43
|
+
control: "select",
|
|
44
|
+
options: Object.values(ListStyles),
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export default meta
|
|
50
|
+
type Story = StoryObj<ListProps>
|
|
51
|
+
|
|
52
|
+
export const List: Story = {}
|
|
53
|
+
|
|
54
|
+
export const Ordered: Story = {
|
|
55
|
+
args: {
|
|
56
|
+
ordered: true,
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const Columns: Story = {
|
|
61
|
+
args: {
|
|
62
|
+
modifier: ListStyles.COLUMNS,
|
|
63
|
+
items: [
|
|
64
|
+
"<li>Content can be grouped into lists, but they don't need to look like lists.</li>",
|
|
65
|
+
"<li>Items can be <i>ordered</i> or <i>unordered</i>. They can even be arranged in columns.</li>",
|
|
66
|
+
"<li>Columns will fit what they can in the space available, without squishing the content.</li>",
|
|
67
|
+
].join(""),
|
|
68
|
+
},
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export const Notes: Story = {
|
|
72
|
+
args: {
|
|
73
|
+
ordered: true,
|
|
74
|
+
modifier: ListStyles.NOTES,
|
|
75
|
+
items: [
|
|
76
|
+
"<li>The 1974 plates were flown for cadastral purposes and the coastal strip sits at the edge of the block; horizontal control there is weaker than the epoch RMSE in Table 1 implies. <a href=#fnref1>↩</a></li>",
|
|
77
|
+
"<li>A partial budget was attempted in the 1996 council survey but excluded fluvial supply entirely, treating the embayment as closed. <a href=#fnref2>↩</a></li>",
|
|
78
|
+
].join(""),
|
|
79
|
+
},
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export const Refs: Story = {
|
|
83
|
+
args: {
|
|
84
|
+
ordered: true,
|
|
85
|
+
modifier: ListStyles.REFS,
|
|
86
|
+
items: [
|
|
87
|
+
"<li>Ashworth, P. and Delacroix, M. (2021) ‘Photogrammetric shoreline reconstruction from legacy cadastral plates’, <i>Journal of Coastal Survey</i>, 44(2), pp. 118–139.</li>",
|
|
88
|
+
"<li>Bruun, P. (1962) ‘Sea-level rise as a cause of shore erosion’, <i>Journal of the Waterways and Harbors Division</i>, 88(1), pp. 117–130.</li>",
|
|
89
|
+
].join(""),
|
|
90
|
+
},
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export const Stats: Story = {
|
|
94
|
+
args: {
|
|
95
|
+
modifier: ListStyles.STATS,
|
|
96
|
+
items: [
|
|
97
|
+
"<li><strong>1,024</strong> downloads</li>",
|
|
98
|
+
"<li><strong>98%</strong> uptime</li>",
|
|
99
|
+
"<li><strong>4.9</strong> average rating</li>",
|
|
100
|
+
].join(""),
|
|
101
|
+
},
|
|
102
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react-vite"
|
|
2
|
+
import Component from "./List"
|
|
3
|
+
import "./_list.css"
|
|
4
|
+
import { Page } from "../../../.storybook-react/decorators"
|
|
5
|
+
import { ListStyles } from "../../enums"
|
|
6
|
+
|
|
7
|
+
const meta: Meta<typeof Component> = {
|
|
8
|
+
component: Component,
|
|
9
|
+
decorators: [Page],
|
|
10
|
+
args: {
|
|
11
|
+
children: (
|
|
12
|
+
<>
|
|
13
|
+
<li>Content can be grouped into lists, but they don't need to look like lists.</li>
|
|
14
|
+
<li>
|
|
15
|
+
Items can be <i>ordered</i> or <i>unordered</i>.
|
|
16
|
+
</li>
|
|
17
|
+
</>
|
|
18
|
+
),
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default meta
|
|
23
|
+
export const List: StoryObj<typeof meta> = {}
|
|
24
|
+
|
|
25
|
+
export const Ordered: StoryObj<typeof meta> = {
|
|
26
|
+
args: {
|
|
27
|
+
ordered: true,
|
|
28
|
+
},
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const Columns: StoryObj<typeof meta> = {
|
|
32
|
+
args: {
|
|
33
|
+
modifier: ListStyles.COLUMNS,
|
|
34
|
+
children: (
|
|
35
|
+
<>
|
|
36
|
+
<li>Content can be grouped into lists, but they don't need to look like lists.</li>
|
|
37
|
+
<li>
|
|
38
|
+
Items can be <i>ordered</i> or <i>unordered</i>. They can event be arranged in columns.
|
|
39
|
+
</li>
|
|
40
|
+
<li>
|
|
41
|
+
Columns will fit what they can in the space available, without squishing the content.
|
|
42
|
+
</li>
|
|
43
|
+
</>
|
|
44
|
+
),
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const Notes: StoryObj<typeof meta> = {
|
|
49
|
+
args: {
|
|
50
|
+
ordered: true,
|
|
51
|
+
modifier: ListStyles.NOTES,
|
|
52
|
+
children: (
|
|
53
|
+
<>
|
|
54
|
+
<li>
|
|
55
|
+
The 1974 plates were flown for cadastral purposes and the coastal strip sits at the edge
|
|
56
|
+
of the block; horizontal control there is weaker than the epoch RMSE in Table 1 implies.
|
|
57
|
+
</li>
|
|
58
|
+
<li>
|
|
59
|
+
A partial budget was attempted in the 1996 council survey but excluded fluvial supply
|
|
60
|
+
entirely, treating the embayment as closed.
|
|
61
|
+
</li>
|
|
62
|
+
</>
|
|
63
|
+
),
|
|
64
|
+
},
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const Refs: StoryObj<typeof meta> = {
|
|
68
|
+
args: {
|
|
69
|
+
ordered: true,
|
|
70
|
+
modifier: ListStyles.REFS,
|
|
71
|
+
children: (
|
|
72
|
+
<>
|
|
73
|
+
<li>
|
|
74
|
+
Ashworth, P. and Delacroix, M. (2021) ‘Photogrammetric shoreline reconstruction from
|
|
75
|
+
legacy cadastral plates’, <i>Journal of Coastal Survey</i>, 44(2), pp. 118–139.
|
|
76
|
+
</li>
|
|
77
|
+
<li>
|
|
78
|
+
Bruun, P. (1962) ‘Sea-level rise as a cause of shore erosion’,{" "}
|
|
79
|
+
<i>Journal of the Waterways and Harbors Division</i>, 88(1), pp. 117–130.
|
|
80
|
+
</li>
|
|
81
|
+
</>
|
|
82
|
+
),
|
|
83
|
+
},
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export const Stats: StoryObj<typeof meta> = {
|
|
87
|
+
args: {
|
|
88
|
+
modifier: ListStyles.STATS,
|
|
89
|
+
children: (
|
|
90
|
+
<>
|
|
91
|
+
<li>
|
|
92
|
+
<strong>1,024</strong> downloads
|
|
93
|
+
</li>
|
|
94
|
+
<li>
|
|
95
|
+
<strong>98%</strong> uptime
|
|
96
|
+
</li>
|
|
97
|
+
<li>
|
|
98
|
+
<strong>4.9</strong> average rating
|
|
99
|
+
</li>
|
|
100
|
+
</>
|
|
101
|
+
),
|
|
102
|
+
},
|
|
103
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { JSX, PropsWithChildren } from "react"
|
|
2
|
+
import classNames from "classnames"
|
|
3
|
+
import { ListStyles } from "../../enums"
|
|
4
|
+
|
|
5
|
+
type ListProps = PropsWithChildren & {
|
|
6
|
+
ordered?: boolean
|
|
7
|
+
modifier?: ListStyles
|
|
8
|
+
className?: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const List = ({
|
|
12
|
+
children,
|
|
13
|
+
ordered = false,
|
|
14
|
+
modifier = null,
|
|
15
|
+
className = null,
|
|
16
|
+
}: ListProps): JSX.Element => {
|
|
17
|
+
const Tag: JSX.ElementType = `${ordered ? "ol" : "ul"}` as unknown as JSX.ElementType
|
|
18
|
+
|
|
19
|
+
return <Tag className={classNames("mx-list", modifier, className)}>{children}</Tag>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default List
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# List
|
|
2
|
+
|
|
3
|
+
A styled `<ul>`/`<ol>` for basic content lists. Renders as a marker-free, gapped grid by default, with footnote, reference, stat-grid, and column-grid variants.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## CSS Import
|
|
8
|
+
|
|
9
|
+
```css
|
|
10
|
+
@import "@pnx-mixtape/mxds/src/Atom/List/_list.css";
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Twig
|
|
16
|
+
|
|
17
|
+
```twig
|
|
18
|
+
{% include '@mixtape/Atom/List/list.twig' with {
|
|
19
|
+
items: ['<li>First item</li>', '<li>Second item</li>'].join(''),
|
|
20
|
+
} %}
|
|
21
|
+
|
|
22
|
+
{% include '@mixtape/Atom/List/list.twig' with {
|
|
23
|
+
ordered: true,
|
|
24
|
+
modifier: 'mx-list--notes',
|
|
25
|
+
items: ['<li>First footnote</li>', '<li>Second footnote</li>'].join(''),
|
|
26
|
+
} %}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**list.twig props:**
|
|
30
|
+
|
|
31
|
+
| Prop | Type | Required | Description |
|
|
32
|
+
| ------------ | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
33
|
+
| `items` | `string` | Yes | Pre-joined `<li>` markup — build each `<li>` at the call site and join, no `for` loop |
|
|
34
|
+
| `ordered` | `boolean` | No | Renders `<ol>` instead of `<ul>` (default `false`) |
|
|
35
|
+
| `modifier` | `ListStyles` | No | One of `mx-list--notes`, `mx-list--refs`, `mx-list--stats`, `mx-list--columns` — see [Modifiers](#modifiers). `ListStyles.SUMMARY` also lives in this enum but only applies to `DefinitionList`'s `<dl>`, not this component — see that atom's README. |
|
|
36
|
+
| `attributes` | `Attribute` | No | Optional Drupal-style attributes object applied to the root `<ul>`/`<ol>` |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## HTML
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<ul class="mx-list">
|
|
44
|
+
<li>First item</li>
|
|
45
|
+
<li>Second item</li>
|
|
46
|
+
</ul>
|
|
47
|
+
|
|
48
|
+
<ol class="mx-list mx-list--notes">
|
|
49
|
+
<li>First footnote</li>
|
|
50
|
+
<li>Second footnote</li>
|
|
51
|
+
</ol>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The base `mx-list` class always renders without visual markers — items lay out as a gapped grid rather than a classic bulleted/numbered block list. Use `ordered: true` when the sequence itself is meaningful, since that's preserved via native list semantics even though no marker is drawn.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## React
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
import { List } from "@pnx-mixtape/mxds/react"
|
|
62
|
+
import { ListStyles } from "../../enums"
|
|
63
|
+
|
|
64
|
+
<List>
|
|
65
|
+
<li>First item</li>
|
|
66
|
+
<li>Second item</li>
|
|
67
|
+
</List>
|
|
68
|
+
|
|
69
|
+
<List ordered modifier={ListStyles.NOTES}>
|
|
70
|
+
<li>First footnote</li>
|
|
71
|
+
<li>Second footnote</li>
|
|
72
|
+
</List>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**`List` props:**
|
|
76
|
+
|
|
77
|
+
| Prop | Type | Default | Description |
|
|
78
|
+
| ----------- | ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
79
|
+
| `ordered` | `boolean` | `false` | Renders `<ol>` instead of `<ul>` |
|
|
80
|
+
| `modifier` | `ListStyles` | — | One of `ListStyles.NOTES`, `.REFS`, `.STATS`, `.COLUMNS` (`.SUMMARY` is also in this enum but is for `DefinitionList`, not `List`) |
|
|
81
|
+
| `className` | `string` | — | Extra class on the root |
|
|
82
|
+
| `children` | `ReactNode` | — | `<li>` elements — pass native `<li>` tags directly |
|
|
83
|
+
|
|
84
|
+
### React ⇄ Twig parity
|
|
85
|
+
|
|
86
|
+
- List items are plain `<li>` with no component-specific classes or attributes, so there is no `ListItem` sub-component in either stack. Twig takes a pre-joined string of already-rendered `<li>...</li>` markup (built at the call site); React takes native `<li>` children directly.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Modifiers
|
|
91
|
+
|
|
92
|
+
`ListStyles` enum values, applied alongside the base `mx-list` class:
|
|
93
|
+
|
|
94
|
+
| Class | `ListStyles` value | Effect |
|
|
95
|
+
| ------------------ | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
96
|
+
| `mx-list--notes` | `NOTES` | Adds a numbered footnote-style counter before each `<li>` (`1.`, `2.`, …) |
|
|
97
|
+
| `mx-list--refs` | `REFS` | Hanging-indents wrapped lines so reference text aligns |
|
|
98
|
+
| `mx-list--stats` | `STATS` | Lays items out as a responsive grid — wrap the number in `<strong>` or `<b>` |
|
|
99
|
+
| `mx-list--columns` | `COLUMNS` | Lays items out as a responsive multi-column grid, without the stat number styling |
|
|
100
|
+
| `mx-list--summary` | `SUMMARY` | **`DefinitionList` only** — a 2/3-column term/value/action row layout with dividers, for a "review your answers" pattern. Does nothing on `List`'s `<ul>`/`<ol>` since it targets `<dl><div><dt>/<dd></div></dl>` markup — see [`DefinitionList`'s README](../DefinitionList/README.md#summary-modifier). |
|
|
101
|
+
|
|
102
|
+
```html
|
|
103
|
+
<ul class="mx-list mx-list--stats">
|
|
104
|
+
<li><strong>1,024</strong> downloads</li>
|
|
105
|
+
<li><strong>98%</strong> uptime</li>
|
|
106
|
+
</ul>
|
|
107
|
+
|
|
108
|
+
<ul class="mx-list mx-list--columns">
|
|
109
|
+
<li>Content can be grouped into lists, but they don't need to look like lists.</li>
|
|
110
|
+
<li>Items can be ordered or unordered. They can even be arranged in columns.</li>
|
|
111
|
+
</ul>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`mx-list--stats` and `mx-list--columns` share the same responsive grid tokens:
|
|
115
|
+
|
|
116
|
+
```css
|
|
117
|
+
.mx-list--stats,
|
|
118
|
+
.mx-list--columns {
|
|
119
|
+
--grid-repeat: auto-fit; /* grid-template-columns repeat count */
|
|
120
|
+
--grid-min: 20ch; /* minimum column width before wrapping */
|
|
121
|
+
--grid-gap: var(--gap); /* gap between items, wider on large viewports via --large-grid-gap */
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Accessibility
|
|
128
|
+
|
|
129
|
+
- The root renders as a real `<ul>`/`<ol>`, so assistive tech announces item count and (for `<ol>`) position — use `ordered: true` when the sequence itself is meaningful (e.g. ranked or step-like content).
|
|
130
|
+
- `mx-list--notes`'s numbered counter is generated by a CSS `::before` pseudo-element and is decorative only, not exposed to assistive tech. It is safe to pair with `<ol>` (`ordered: true`) so the numbering is also available to screen readers via native list semantics.
|
|
131
|
+
- The base `mx-list` class removes the visual marker (`list-style: none`) on every variant — the semantic list role is preserved regardless, since removing markers via CSS does not affect the accessibility tree.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Customisation
|
|
136
|
+
|
|
137
|
+
```css
|
|
138
|
+
.mx-list--stats {
|
|
139
|
+
--stat-font-size: var(--font-size-xxl); /* size of the <strong>/<b> number in each item */
|
|
140
|
+
--stat-font-weight: var(--font-weight-bold); /* weight of the <strong>/<b> number */
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.mx-list--stats,
|
|
144
|
+
.mx-list--columns {
|
|
145
|
+
--grid-repeat: auto-fit; /* grid-template-columns repeat count */
|
|
146
|
+
--grid-min: 20ch; /* minimum column width before wrapping */
|
|
147
|
+
--grid-gap: var(--gap); /* gap between items */
|
|
148
|
+
--large-grid-gap: var(--gap-l); /* gap between items at the --large-up breakpoint */
|
|
149
|
+
}
|
|
150
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`Columns 1`] = `
|
|
4
|
+
"<ul class="mx-list mx-list--columns">
|
|
5
|
+
<li>Content can be grouped into lists, but they don't need to look like lists.</li><li>Items can be <i>ordered</i> or <i>unordered</i>. They can even be arranged in columns.</li><li>Columns will fit what they can in the space available, without squishing the content.</li>
|
|
6
|
+
</ul>
|
|
7
|
+
"
|
|
8
|
+
`;
|
|
9
|
+
|
|
10
|
+
exports[`List 1`] = `
|
|
11
|
+
"<ul class="mx-list">
|
|
12
|
+
<li>Content can be grouped into lists, but they don't need to look like lists.</li><li>Items can be <i>ordered</i> or <i>unordered</i>.</li>
|
|
13
|
+
</ul>
|
|
14
|
+
"
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
exports[`Notes 1`] = `
|
|
18
|
+
"<ol class="mx-list mx-list--notes">
|
|
19
|
+
<li>The 1974 plates were flown for cadastral purposes and the coastal strip sits at the edge of the block; horizontal control there is weaker than the epoch RMSE in Table 1 implies. <a href="#fnref1">↩</a></li><li>A partial budget was attempted in the 1996 council survey but excluded fluvial supply entirely, treating the embayment as closed. <a href="#fnref2">↩</a></li>
|
|
20
|
+
</ol>
|
|
21
|
+
"
|
|
22
|
+
`;
|
|
23
|
+
|
|
24
|
+
exports[`Ordered 1`] = `
|
|
25
|
+
"<ol class="mx-list">
|
|
26
|
+
<li>Content can be grouped into lists, but they don't need to look like lists.</li><li>Items can be <i>ordered</i> or <i>unordered</i>.</li>
|
|
27
|
+
</ol>
|
|
28
|
+
"
|
|
29
|
+
`;
|
|
30
|
+
|
|
31
|
+
exports[`Refs 1`] = `
|
|
32
|
+
"<ol class="mx-list mx-list--refs">
|
|
33
|
+
<li>Ashworth, P. and Delacroix, M. (2021) ‘Photogrammetric shoreline reconstruction from legacy cadastral plates’, <i>Journal of Coastal Survey</i>, 44(2), pp. 118–139.</li><li>Bruun, P. (1962) ‘Sea-level rise as a cause of shore erosion’, <i>Journal of the Waterways and Harbors Division</i>, 88(1), pp. 117–130.</li>
|
|
34
|
+
</ol>
|
|
35
|
+
"
|
|
36
|
+
`;
|
|
37
|
+
|
|
38
|
+
exports[`Stats 1`] = `
|
|
39
|
+
"<ul class="mx-list mx-list--stats">
|
|
40
|
+
<li><strong>1,024</strong> downloads</li><li><strong>98%</strong> uptime</li><li><strong>4.9</strong> average rating</li>
|
|
41
|
+
</ul>
|
|
42
|
+
"
|
|
43
|
+
`;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`Columns 1`] = `"<ul class="mx-list mx-list--columns"><li>Content can be grouped into lists, but they don't need to look like lists.</li><li>Items can be <i>ordered</i> or <i>unordered</i>. They can event be arranged in columns.</li><li>Columns will fit what they can in the space available, without squishing the content.</li></ul>"`;
|
|
4
|
+
|
|
5
|
+
exports[`List 1`] = `"<ul class="mx-list"><li>Content can be grouped into lists, but they don't need to look like lists.</li><li>Items can be <i>ordered</i> or <i>unordered</i>.</li></ul>"`;
|
|
6
|
+
|
|
7
|
+
exports[`Notes 1`] = `"<ol class="mx-list mx-list--notes"><li>The 1974 plates were flown for cadastral purposes and the coastal strip sits at the edge of the block; horizontal control there is weaker than the epoch RMSE in Table 1 implies.</li><li>A partial budget was attempted in the 1996 council survey but excluded fluvial supply entirely, treating the embayment as closed.</li></ol>"`;
|
|
8
|
+
|
|
9
|
+
exports[`Ordered 1`] = `"<ol class="mx-list"><li>Content can be grouped into lists, but they don't need to look like lists.</li><li>Items can be <i>ordered</i> or <i>unordered</i>.</li></ol>"`;
|
|
10
|
+
|
|
11
|
+
exports[`Refs 1`] = `"<ol class="mx-list mx-list--refs"><li>Ashworth, P. and Delacroix, M. (2021) ‘Photogrammetric shoreline reconstruction from legacy cadastral plates’, <i>Journal of Coastal Survey</i>, 44(2), pp. 118–139.</li><li>Bruun, P. (1962) ‘Sea-level rise as a cause of shore erosion’, <i>Journal of the Waterways and Harbors Division</i>, 88(1), pp. 117–130.</li></ol>"`;
|
|
12
|
+
|
|
13
|
+
exports[`Stats 1`] = `"<ul class="mx-list mx-list--stats"><li><strong>1,024</strong> downloads</li><li><strong>98%</strong> uptime</li><li><strong>4.9</strong> average rating</li></ul>"`;
|