@dumiflex/wp-kit 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -51
- package/LICENSE +674 -674
- package/README.md +73 -76
- package/package.json +78 -77
- package/src/Avatar.vue +83 -83
- package/src/Badge.vue +97 -97
- package/src/Banner.vue +118 -118
- package/src/BookmarkButton.vue +27 -27
- package/src/BundleMeta.vue +51 -51
- package/src/Button.vue +103 -103
- package/src/Card.vue +68 -68
- package/src/Checkbox.vue +109 -107
- package/src/Chip.vue +163 -97
- package/src/ChoiceCards.vue +133 -133
- package/src/CloseButton.vue +69 -69
- package/src/CodeBlock.vue +119 -119
- package/src/ColorField.vue +188 -206
- package/src/ColorPicker.vue +201 -201
- package/src/Combobox.vue +331 -334
- package/src/ConfirmDialog.vue +165 -163
- package/src/ConfirmModal.vue +147 -147
- package/src/ConstraintMatrixPreview.vue +708 -708
- package/src/ContextMenu.vue +386 -379
- package/src/CopyButton.vue +156 -156
- package/src/DataTable.vue +292 -292
- package/src/DatePicker.vue +234 -234
- package/src/DescriptionList.vue +73 -73
- package/src/DiffView.vue +68 -68
- package/src/Disclosure.vue +166 -166
- package/src/DragHandle.vue +49 -49
- package/src/Drawer.vue +131 -131
- package/src/DropZone.vue +196 -196
- package/src/DropdownMenu.vue +72 -72
- package/src/EmptyState.vue +111 -111
- package/src/Field.vue +28 -28
- package/src/HsvPicker.vue +208 -208
- package/src/Icon.vue +39 -39
- package/src/IconPicker.vue +209 -209
- package/src/ImageGrid.vue +125 -125
- package/src/InlineEdit.vue +183 -183
- package/src/Input.vue +99 -99
- package/src/Kbd.vue +56 -56
- package/src/Lightbox.vue +173 -173
- package/src/ListFilter.vue +85 -85
- package/src/ListRow.vue +204 -204
- package/src/LoadingMark.vue +175 -161
- package/src/Logo.vue +60 -60
- package/src/Modal.vue +78 -76
- package/src/ModalShell.vue +109 -107
- package/src/Pagination.vue +106 -106
- package/src/Popover.vue +180 -171
- package/src/PostCard.vue +210 -211
- package/src/ProgressBar.vue +90 -90
- package/src/RadioGroup.vue +177 -177
- package/src/RangeSlider.vue +183 -183
- package/src/RelativeDate.vue +35 -35
- package/src/ResizeHandle.vue +143 -143
- package/src/SearchInput.vue +192 -199
- package/src/Select.vue +644 -641
- package/src/Separator.vue +54 -54
- package/src/Skeleton.vue +82 -82
- package/src/Slider.vue +198 -198
- package/src/SortableList.vue +260 -260
- package/src/SplitPane.vue +68 -68
- package/src/StarButton.vue +40 -40
- package/src/Stepper.vue +141 -141
- package/src/SupportLinks.vue +93 -93
- package/src/TagInput.vue +297 -300
- package/src/Textarea.vue +57 -57
- package/src/Timeline.vue +92 -92
- package/src/ToastCard.vue +119 -119
- package/src/ToastHost.vue +40 -40
- package/src/Toggle.vue +36 -36
- package/src/TokenizedValue.vue +310 -310
- package/src/Toolbar.vue +110 -110
- package/src/VirtualList.vue +87 -87
- package/src/VisuallyHidden.vue +29 -29
- package/src/WpButton.vue +75 -75
- package/src/WpCheck.vue +104 -102
- package/src/WpIconButton.vue +107 -107
- package/src/WpImageZoom.vue +544 -544
- package/src/WpNumber.vue +178 -183
- package/src/WpSegmented.vue +175 -175
- package/src/WpSelect.vue +93 -89
- package/src/WpSwitch.vue +163 -163
- package/src/WpTabs.vue +188 -188
- package/src/_modal-motion.css +33 -33
- package/src/_skeleton.css +50 -50
- package/src/axis-color.ts +42 -42
- package/src/button.css +169 -169
- package/src/calendar.ts +59 -59
- package/src/clipboard.ts +50 -50
- package/src/colour-presets.ts +12 -12
- package/src/diff.ts +51 -51
- package/src/drop-zone.ts +41 -41
- package/src/field.css +50 -0
- package/src/flip.ts +237 -237
- package/src/floating-layer.ts +48 -0
- package/src/floating.ts +99 -99
- package/src/hsv.ts +100 -100
- package/src/icon-catalog.ts +52 -52
- package/src/image-zoom.ts +93 -93
- package/src/kind-colour.ts +28 -0
- package/src/logo-paths.ts +21 -21
- package/src/matrix-axis.ts +91 -91
- package/src/pagination.ts +27 -27
- package/src/platform-keys.ts +29 -29
- package/src/rich-tokenize.ts +357 -357
- package/src/select-types.ts +32 -32
- package/src/slider-math.ts +45 -45
- package/src/sortable.ts +22 -22
- package/src/theme/fonts/OFL-Fraunces.txt +93 -93
- package/src/theme/fonts/OFL-JetBrainsMono.txt +93 -93
- package/src/theme/fonts/OFL-Manrope.txt +93 -93
- package/src/theme/looks.css +428 -428
- package/src/theme/palettes.css +254 -254
- package/src/theme/tokens.css +2896 -2894
- package/src/tokens.ts +56 -56
- package/src/tooltip.css +43 -43
- package/src/tooltip.ts +146 -146
- package/src/useDialogFocus.ts +73 -73
- package/src/useGrowableField.ts +357 -357
- package/src/useModalKeyShield.ts +116 -116
- package/src/useToast.ts +48 -48
- package/src/wp-logo.svg +14 -14
- package/src/ChipToggle.vue +0 -92
- package/src/KindChip.vue +0 -53
- package/src/RatingBadge.vue +0 -42
package/src/SupportLinks.vue
CHANGED
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
/**
|
|
3
|
-
* The "support the project" link cards on an About page: one card per way to
|
|
4
|
-
* give, each with an icon, a label, a line of detail and an outside-link mark.
|
|
5
|
-
* The apps keep the list itself (where the money goes is theirs to say) and
|
|
6
|
-
* pass it in, so the extension and the community site show the same cards.
|
|
7
|
-
*/
|
|
8
|
-
export interface SupportLink {
|
|
9
|
-
/** Stable id: the card's `data-kind`. */
|
|
10
|
-
id: string;
|
|
11
|
-
label: string;
|
|
12
|
-
detail?: string | undefined;
|
|
13
|
-
/** PrimeIcons class, `pi-heart`. */
|
|
14
|
-
icon: string;
|
|
15
|
-
href: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
withDefaults(defineProps<{ links: readonly SupportLink[]; label?: string | undefined }>(), {
|
|
19
|
-
label: "Ways to support the project",
|
|
20
|
-
});
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
<template>
|
|
24
|
-
<ul class="wp-support" :aria-label="label">
|
|
25
|
-
<li v-for="link in links" :key="link.id">
|
|
26
|
-
<a class="wp-support__link" :data-kind="link.id" :href="link.href" target="_blank" rel="noopener">
|
|
27
|
-
<span class="wp-support__icon"><i :class="['pi', link.icon]" aria-hidden="true" /></span>
|
|
28
|
-
<span class="wp-support__text">
|
|
29
|
-
<span class="wp-support__label">{{ link.label }}</span>
|
|
30
|
-
<span v-if="link.detail" class="wp-support__detail">{{ link.detail }}</span>
|
|
31
|
-
</span>
|
|
32
|
-
<i class="pi pi-external-link wp-support__out" aria-hidden="true" />
|
|
33
|
-
<span class="wp-support__sr">(opens in a new tab)</span>
|
|
34
|
-
</a>
|
|
35
|
-
</li>
|
|
36
|
-
</ul>
|
|
37
|
-
</template>
|
|
38
|
-
|
|
39
|
-
<style scoped>
|
|
40
|
-
.wp-support {
|
|
41
|
-
display: grid;
|
|
42
|
-
grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
|
|
43
|
-
gap: var(--wp-space-4);
|
|
44
|
-
margin: 0;
|
|
45
|
-
padding: 0;
|
|
46
|
-
list-style: none;
|
|
47
|
-
}
|
|
48
|
-
.wp-support__link {
|
|
49
|
-
display: flex;
|
|
50
|
-
align-items: center;
|
|
51
|
-
gap: var(--wp-space-4);
|
|
52
|
-
height: 100%;
|
|
53
|
-
box-sizing: border-box;
|
|
54
|
-
padding: var(--wp-space-4) var(--wp-space-5);
|
|
55
|
-
border: 1px solid var(--wp-border);
|
|
56
|
-
border-radius: min(8px, var(--wp-radius-cap, 999px));
|
|
57
|
-
background: var(--wp-bg-1);
|
|
58
|
-
color: var(--wp-text);
|
|
59
|
-
text-decoration: none;
|
|
60
|
-
transition: border-color var(--wp-motion-hover, 120ms) ease-out, background-color var(--wp-motion-hover, 120ms) ease-out;
|
|
61
|
-
}
|
|
62
|
-
.wp-support__link:hover {
|
|
63
|
-
border-color: var(--wp-accent-500);
|
|
64
|
-
background: color-mix(in oklab, var(--wp-accent-500) 8%, var(--wp-bg-1));
|
|
65
|
-
}
|
|
66
|
-
.wp-support__link:focus-visible {
|
|
67
|
-
outline: 2px solid var(--wp-accent-500);
|
|
68
|
-
outline-offset: 2px;
|
|
69
|
-
}
|
|
70
|
-
.wp-support__icon {
|
|
71
|
-
display: grid;
|
|
72
|
-
flex: none;
|
|
73
|
-
place-items: center;
|
|
74
|
-
width: 32px;
|
|
75
|
-
height: 32px;
|
|
76
|
-
border-radius: min(8px, var(--wp-radius-cap, 999px));
|
|
77
|
-
background: var(--wp-bg-2);
|
|
78
|
-
color: var(--wp-accent-text);
|
|
79
|
-
font-size: 16px;
|
|
80
|
-
}
|
|
81
|
-
.wp-support__text { display: grid; gap: 2px; min-width: 0; flex: 1; }
|
|
82
|
-
.wp-support__label { font-weight: 600; font-size: var(--wp-text-sm); }
|
|
83
|
-
.wp-support__detail { font-size: var(--wp-text-xs); color: var(--wp-text-dim); }
|
|
84
|
-
.wp-support__out { color: var(--wp-text-dim); flex: none; font-size: 12px; }
|
|
85
|
-
.wp-support__sr {
|
|
86
|
-
position: absolute;
|
|
87
|
-
width: 1px;
|
|
88
|
-
height: 1px;
|
|
89
|
-
overflow: hidden;
|
|
90
|
-
clip-path: inset(50%);
|
|
91
|
-
white-space: nowrap;
|
|
92
|
-
}
|
|
93
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* The "support the project" link cards on an About page: one card per way to
|
|
4
|
+
* give, each with an icon, a label, a line of detail and an outside-link mark.
|
|
5
|
+
* The apps keep the list itself (where the money goes is theirs to say) and
|
|
6
|
+
* pass it in, so the extension and the community site show the same cards.
|
|
7
|
+
*/
|
|
8
|
+
export interface SupportLink {
|
|
9
|
+
/** Stable id: the card's `data-kind`. */
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
detail?: string | undefined;
|
|
13
|
+
/** PrimeIcons class, `pi-heart`. */
|
|
14
|
+
icon: string;
|
|
15
|
+
href: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
withDefaults(defineProps<{ links: readonly SupportLink[]; label?: string | undefined }>(), {
|
|
19
|
+
label: "Ways to support the project",
|
|
20
|
+
});
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<ul class="wp-support" :aria-label="label">
|
|
25
|
+
<li v-for="link in links" :key="link.id">
|
|
26
|
+
<a class="wp-support__link" :data-kind="link.id" :href="link.href" target="_blank" rel="noopener">
|
|
27
|
+
<span class="wp-support__icon"><i :class="['pi', link.icon]" aria-hidden="true" /></span>
|
|
28
|
+
<span class="wp-support__text">
|
|
29
|
+
<span class="wp-support__label">{{ link.label }}</span>
|
|
30
|
+
<span v-if="link.detail" class="wp-support__detail">{{ link.detail }}</span>
|
|
31
|
+
</span>
|
|
32
|
+
<i class="pi pi-external-link wp-support__out" aria-hidden="true" />
|
|
33
|
+
<span class="wp-support__sr">(opens in a new tab)</span>
|
|
34
|
+
</a>
|
|
35
|
+
</li>
|
|
36
|
+
</ul>
|
|
37
|
+
</template>
|
|
38
|
+
|
|
39
|
+
<style scoped>
|
|
40
|
+
.wp-support {
|
|
41
|
+
display: grid;
|
|
42
|
+
grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
|
|
43
|
+
gap: var(--wp-space-4);
|
|
44
|
+
margin: 0;
|
|
45
|
+
padding: 0;
|
|
46
|
+
list-style: none;
|
|
47
|
+
}
|
|
48
|
+
.wp-support__link {
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
gap: var(--wp-space-4);
|
|
52
|
+
height: 100%;
|
|
53
|
+
box-sizing: border-box;
|
|
54
|
+
padding: var(--wp-space-4) var(--wp-space-5);
|
|
55
|
+
border: 1px solid var(--wp-border);
|
|
56
|
+
border-radius: min(8px, var(--wp-radius-cap, 999px));
|
|
57
|
+
background: var(--wp-bg-1);
|
|
58
|
+
color: var(--wp-text);
|
|
59
|
+
text-decoration: none;
|
|
60
|
+
transition: border-color var(--wp-motion-hover, 120ms) ease-out, background-color var(--wp-motion-hover, 120ms) ease-out;
|
|
61
|
+
}
|
|
62
|
+
.wp-support__link:hover {
|
|
63
|
+
border-color: var(--wp-accent-500);
|
|
64
|
+
background: color-mix(in oklab, var(--wp-accent-500) 8%, var(--wp-bg-1));
|
|
65
|
+
}
|
|
66
|
+
.wp-support__link:focus-visible {
|
|
67
|
+
outline: 2px solid var(--wp-accent-500);
|
|
68
|
+
outline-offset: 2px;
|
|
69
|
+
}
|
|
70
|
+
.wp-support__icon {
|
|
71
|
+
display: grid;
|
|
72
|
+
flex: none;
|
|
73
|
+
place-items: center;
|
|
74
|
+
width: 32px;
|
|
75
|
+
height: 32px;
|
|
76
|
+
border-radius: min(8px, var(--wp-radius-cap, 999px));
|
|
77
|
+
background: var(--wp-bg-2);
|
|
78
|
+
color: var(--wp-accent-text);
|
|
79
|
+
font-size: 16px;
|
|
80
|
+
}
|
|
81
|
+
.wp-support__text { display: grid; gap: 2px; min-width: 0; flex: 1; }
|
|
82
|
+
.wp-support__label { font-weight: 600; font-size: var(--wp-text-sm); }
|
|
83
|
+
.wp-support__detail { font-size: var(--wp-text-xs); color: var(--wp-text-dim); }
|
|
84
|
+
.wp-support__out { color: var(--wp-text-dim); flex: none; font-size: 12px; }
|
|
85
|
+
.wp-support__sr {
|
|
86
|
+
position: absolute;
|
|
87
|
+
width: 1px;
|
|
88
|
+
height: 1px;
|
|
89
|
+
overflow: hidden;
|
|
90
|
+
clip-path: inset(50%);
|
|
91
|
+
white-space: nowrap;
|
|
92
|
+
}
|
|
93
|
+
</style>
|