rei-kit 3.0.0 → 3.2.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/README.md +13 -5
- package/dist/app/TourShell.vue.d.ts +2 -0
- package/dist/app/index.d.ts +96 -6
- package/dist/app.js +2 -2
- package/dist/app.js.map +1 -1
- package/dist/components/BaseDatePicker.vue.d.ts +8 -0
- package/dist/components/BaseInput.vue.d.ts +12 -1
- package/dist/components/BaseSelect.vue.d.ts +8 -0
- package/dist/components/BaseTextarea.vue.d.ts +8 -0
- package/dist/components/ColorPicker.vue.d.ts +8 -0
- package/dist/components/NumberInput.vue.d.ts +8 -0
- package/dist/components/SectionHeading.vue.d.ts +6 -0
- package/dist/components/StatCard.vue.d.ts +5 -0
- package/dist/components/TagsInput.vue.d.ts +8 -0
- package/dist/components/TimePicker.vue.d.ts +8 -0
- package/dist/index.d.ts +913 -56
- package/dist/index.js +35 -14
- package/dist/index.js.map +1 -1
- package/dist/motion/index.d.ts +47 -3
- package/dist/pwa/index.d.ts +42 -2
- package/dist/styles.css +56 -56
- package/dist/{use-announce-B_JGTXHZ.js → use-announce-D8SKsiqn.js} +80 -15
- package/dist/use-announce-D8SKsiqn.js.map +1 -0
- package/dist/web/index.d.ts +308 -7
- package/package.json +2 -1
- package/dist/use-announce-B_JGTXHZ.js.map +0 -1
package/dist/motion/index.d.ts
CHANGED
|
@@ -6,21 +6,65 @@
|
|
|
6
6
|
* asked for less motion, keeps assistive tech to the finished value, and
|
|
7
7
|
* stops when hovered or focused if it moves on its own. The utilities that go
|
|
8
8
|
* with them are in `rei-kit/motion.css`, which both presets include.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```vue
|
|
12
|
+
* <NumberTicker :value="balance" :format="{ style: 'currency', currency: 'TRY' }" />
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @see {@link CountUp} — the near-neighbour this is mistaken for
|
|
9
16
|
*/
|
|
10
17
|
export { default as NumberTicker } from './NumberTicker.vue';
|
|
11
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* A number that counts up to its value once it scrolls into view.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```vue
|
|
23
|
+
* <CountUp :value="12480" />
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @see {@link NumberTicker} — the near-neighbour this is mistaken for
|
|
27
|
+
*/
|
|
12
28
|
export { default as CountUp } from './CountUp.vue';
|
|
13
29
|
/**
|
|
14
30
|
* One word in a sentence that changes on its own: "Build it *glass*", then
|
|
15
31
|
* *brutal*, then *soft*.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```vue
|
|
35
|
+
* <h1>Build it <TextRotate :words="['glass', 'brutal', 'soft']" /></h1>
|
|
36
|
+
* ```
|
|
16
37
|
*/
|
|
17
38
|
export { default as TextRotate } from './TextRotate.vue';
|
|
18
39
|
/**
|
|
19
40
|
* Text that types itself out, and — given several lines — deletes each one
|
|
20
41
|
* and types the next.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```vue
|
|
45
|
+
* <TypeWriter :text="['Write it once.', 'Change the look.', 'Ship it.']" />
|
|
46
|
+
* ```
|
|
21
47
|
*/
|
|
22
48
|
export { default as TypeWriter } from './TypeWriter.vue';
|
|
23
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Content that fades or rises into place as it scrolls into view.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```vue
|
|
54
|
+
* <BaseReveal v-for="(item, i) in items" :key="item" :delay="i * 80">
|
|
55
|
+
* <BaseCard>{{ item }}</BaseCard>
|
|
56
|
+
* </BaseReveal>
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
24
59
|
export { default as BaseReveal } from './BaseReveal.vue';
|
|
25
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* A row that scrolls sideways without end: logos, testimonials, a ticker.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```vue
|
|
65
|
+
* <BaseMarquee :duration="40">
|
|
66
|
+
* <BaseBadge v-for="name in names" :key="name">{{ name }}</BaseBadge>
|
|
67
|
+
* </BaseMarquee>
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
26
70
|
export { default as BaseMarquee } from './BaseMarquee.vue';
|
package/dist/pwa/index.d.ts
CHANGED
|
@@ -14,9 +14,49 @@ export { useSnooze } from './use-snooze';
|
|
|
14
14
|
/**
|
|
15
15
|
* The card that offers to install the app, and remembers being turned
|
|
16
16
|
* down.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```vue
|
|
20
|
+
* <InstallPrompt
|
|
21
|
+
* storage-key="my-app-install"
|
|
22
|
+
* title="Install My app"
|
|
23
|
+
* body="Open it from your home screen, even offline."
|
|
24
|
+
* action="Install"
|
|
25
|
+
* later="Not now"
|
|
26
|
+
* />
|
|
27
|
+
* ```
|
|
17
28
|
*/
|
|
18
29
|
export { default as InstallPrompt } from './InstallPrompt.vue';
|
|
19
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* The way back to installing after the card has been dismissed.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```vue
|
|
35
|
+
* <InstallSettings
|
|
36
|
+
* title="App"
|
|
37
|
+
* label="Install on this device"
|
|
38
|
+
* installed-label="Installed"
|
|
39
|
+
* body="Opens from your home screen, works offline."
|
|
40
|
+
* ios-body="Tap Share, then Add to Home Screen."
|
|
41
|
+
* action="Install"
|
|
42
|
+
* />
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
20
45
|
export { default as InstallSettings } from './InstallSettings.vue';
|
|
21
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* The card that says a new version is waiting.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```vue
|
|
51
|
+
* <UpdatePrompt
|
|
52
|
+
* :open="needRefresh"
|
|
53
|
+
* title="A new version is ready"
|
|
54
|
+
* body="Reload to get it."
|
|
55
|
+
* action="Reload"
|
|
56
|
+
* dismiss-label="Later"
|
|
57
|
+
* @update="reload"
|
|
58
|
+
* @dismiss="needRefresh = false"
|
|
59
|
+
* />
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
22
62
|
export { default as UpdatePrompt } from './UpdatePrompt.vue';
|
package/dist/styles.css
CHANGED
|
@@ -209,12 +209,12 @@
|
|
|
209
209
|
cannot reach slot content, which belongs to the caller's scope, so
|
|
210
210
|
`.tour-forward-*` and `.tour-backward-*` ship unscoped in
|
|
211
211
|
`rei-kit/shell/mobile.css` where the caller's slide can actually see them. */
|
|
212
|
-
.tour-enter-active[data-v-
|
|
213
|
-
.tour-leave-active[data-v-
|
|
212
|
+
.tour-enter-active[data-v-8daef303],
|
|
213
|
+
.tour-leave-active[data-v-8daef303] {
|
|
214
214
|
transition: opacity var(--duration-base) ease;
|
|
215
215
|
}
|
|
216
|
-
.tour-enter-from[data-v-
|
|
217
|
-
.tour-leave-to[data-v-
|
|
216
|
+
.tour-enter-from[data-v-8daef303],
|
|
217
|
+
.tour-leave-to[data-v-8daef303] {
|
|
218
218
|
opacity: 0;
|
|
219
219
|
}
|
|
220
220
|
|
|
@@ -763,24 +763,24 @@
|
|
|
763
763
|
/* The buttons are out of the Tab order: the keyboard already has the arrows,
|
|
764
764
|
and three stops for one number is two too many. They stay reachable by
|
|
765
765
|
pointer and by touch, which is who they are for. */
|
|
766
|
-
.rk-number[data-v-
|
|
766
|
+
.rk-number[data-v-d8a8fb7e] {
|
|
767
767
|
display: flex;
|
|
768
768
|
align-items: center;
|
|
769
769
|
height: 2.75rem;
|
|
770
770
|
border-radius: var(--radius-card);
|
|
771
771
|
padding: 0 0.25rem;
|
|
772
772
|
}
|
|
773
|
-
.rk-number[data-v-
|
|
773
|
+
.rk-number[data-v-d8a8fb7e]:focus-within {
|
|
774
774
|
outline: 2px solid var(--color-primary);
|
|
775
775
|
outline-offset: 1px;
|
|
776
776
|
}
|
|
777
|
-
.rk-number.is-invalid[data-v-
|
|
777
|
+
.rk-number.is-invalid[data-v-d8a8fb7e] {
|
|
778
778
|
--surface-border-color: var(--color-negative);
|
|
779
779
|
}
|
|
780
|
-
.rk-number.is-disabled[data-v-
|
|
780
|
+
.rk-number.is-disabled[data-v-d8a8fb7e] {
|
|
781
781
|
opacity: 0.5;
|
|
782
782
|
}
|
|
783
|
-
.rk-number-field[data-v-
|
|
783
|
+
.rk-number-field[data-v-d8a8fb7e] {
|
|
784
784
|
min-width: 0;
|
|
785
785
|
flex: 1;
|
|
786
786
|
background: transparent;
|
|
@@ -790,7 +790,7 @@
|
|
|
790
790
|
color: var(--color-ink);
|
|
791
791
|
outline: none;
|
|
792
792
|
}
|
|
793
|
-
.rk-number-step[data-v-
|
|
793
|
+
.rk-number-step[data-v-d8a8fb7e] {
|
|
794
794
|
display: grid;
|
|
795
795
|
width: 2.25rem;
|
|
796
796
|
height: 2.25rem;
|
|
@@ -800,10 +800,10 @@
|
|
|
800
800
|
color: var(--color-ink);
|
|
801
801
|
transition: background-color var(--duration-fast) var(--ease-standard);
|
|
802
802
|
}
|
|
803
|
-
.rk-number-step[data-v-
|
|
803
|
+
.rk-number-step[data-v-d8a8fb7e]:hover:not(:disabled) {
|
|
804
804
|
background: var(--color-muted);
|
|
805
805
|
}
|
|
806
|
-
.rk-number-step[data-v-
|
|
806
|
+
.rk-number-step[data-v-d8a8fb7e]:disabled {
|
|
807
807
|
opacity: 0.35;
|
|
808
808
|
}
|
|
809
809
|
|
|
@@ -1769,7 +1769,7 @@ to {
|
|
|
1769
1769
|
color: var(--color-ink-soft);
|
|
1770
1770
|
}
|
|
1771
1771
|
|
|
1772
|
-
.rk-color-row[data-v-
|
|
1772
|
+
.rk-color-row[data-v-721fcae8] {
|
|
1773
1773
|
display: flex;
|
|
1774
1774
|
flex-wrap: wrap;
|
|
1775
1775
|
align-items: center;
|
|
@@ -1779,7 +1779,7 @@ to {
|
|
|
1779
1779
|
/* The well is what is seen; the input inside it is the whole target. A
|
|
1780
1780
|
native colour input cannot be styled past its swatch in every browser, so
|
|
1781
1781
|
it is stretched over a box that can be. */
|
|
1782
|
-
.rk-color-well[data-v-
|
|
1782
|
+
.rk-color-well[data-v-721fcae8] {
|
|
1783
1783
|
position: relative;
|
|
1784
1784
|
display: block;
|
|
1785
1785
|
width: 2.75rem;
|
|
@@ -1789,7 +1789,7 @@ to {
|
|
|
1789
1789
|
border: 1px solid var(--color-hair);
|
|
1790
1790
|
background: var(--rk-color);
|
|
1791
1791
|
}
|
|
1792
|
-
.rk-color-native[data-v-
|
|
1792
|
+
.rk-color-native[data-v-721fcae8] {
|
|
1793
1793
|
position: absolute;
|
|
1794
1794
|
inset: 0;
|
|
1795
1795
|
width: 100%;
|
|
@@ -1799,14 +1799,14 @@ to {
|
|
|
1799
1799
|
}
|
|
1800
1800
|
|
|
1801
1801
|
/* The ring goes on the well, since the input it belongs to is invisible. */
|
|
1802
|
-
.rk-color-well[data-v-
|
|
1802
|
+
.rk-color-well[data-v-721fcae8]:has(.rk-color-native:focus-visible) {
|
|
1803
1803
|
outline: 2px solid var(--color-primary);
|
|
1804
1804
|
outline-offset: 2px;
|
|
1805
1805
|
}
|
|
1806
|
-
.rk-color-native[data-v-
|
|
1806
|
+
.rk-color-native[data-v-721fcae8]:disabled {
|
|
1807
1807
|
cursor: not-allowed;
|
|
1808
1808
|
}
|
|
1809
|
-
.rk-color-hex[data-v-
|
|
1809
|
+
.rk-color-hex[data-v-721fcae8] {
|
|
1810
1810
|
width: 7.5rem;
|
|
1811
1811
|
height: 2.75rem;
|
|
1812
1812
|
border-radius: var(--radius-card);
|
|
@@ -1817,19 +1817,19 @@ to {
|
|
|
1817
1817
|
font-size: 1rem;
|
|
1818
1818
|
color: var(--color-ink);
|
|
1819
1819
|
}
|
|
1820
|
-
.rk-color-hex[data-v-
|
|
1820
|
+
.rk-color-hex[data-v-721fcae8]:focus-visible {
|
|
1821
1821
|
outline: 2px solid var(--color-primary);
|
|
1822
1822
|
outline-offset: -1px;
|
|
1823
1823
|
}
|
|
1824
|
-
.rk-color-hex[data-v-
|
|
1824
|
+
.rk-color-hex[data-v-721fcae8]:disabled {
|
|
1825
1825
|
opacity: 0.5;
|
|
1826
1826
|
}
|
|
1827
|
-
.rk-color-swatches[data-v-
|
|
1827
|
+
.rk-color-swatches[data-v-721fcae8] {
|
|
1828
1828
|
display: flex;
|
|
1829
1829
|
flex-wrap: wrap;
|
|
1830
1830
|
gap: 0.375rem;
|
|
1831
1831
|
}
|
|
1832
|
-
.rk-color-swatch[data-v-
|
|
1832
|
+
.rk-color-swatch[data-v-721fcae8] {
|
|
1833
1833
|
display: block;
|
|
1834
1834
|
width: 1.75rem;
|
|
1835
1835
|
height: 1.75rem;
|
|
@@ -1838,25 +1838,25 @@ to {
|
|
|
1838
1838
|
background: var(--rk-color);
|
|
1839
1839
|
transition: transform var(--duration-fast) var(--ease-standard);
|
|
1840
1840
|
}
|
|
1841
|
-
.rk-color-swatch[data-v-
|
|
1841
|
+
.rk-color-swatch[data-v-721fcae8]:hover:not(:disabled) {
|
|
1842
1842
|
transform: scale(1.1);
|
|
1843
1843
|
}
|
|
1844
1844
|
|
|
1845
1845
|
/* A ring around the chosen one rather than a tick: a tick has to be dark or
|
|
1846
1846
|
light to be seen, and the swatch beneath it is whatever the app chose. */
|
|
1847
|
-
.rk-color-swatch.is-chosen[data-v-
|
|
1847
|
+
.rk-color-swatch.is-chosen[data-v-721fcae8] {
|
|
1848
1848
|
box-shadow:
|
|
1849
1849
|
0 0 0 2px var(--color-surface),
|
|
1850
1850
|
0 0 0 4px var(--color-primary);
|
|
1851
1851
|
}
|
|
1852
|
-
.rk-color-swatch[data-v-
|
|
1852
|
+
.rk-color-swatch[data-v-721fcae8]:disabled {
|
|
1853
1853
|
opacity: 0.5;
|
|
1854
1854
|
}
|
|
1855
1855
|
@media (prefers-reduced-motion: reduce) {
|
|
1856
|
-
.rk-color-swatch[data-v-
|
|
1856
|
+
.rk-color-swatch[data-v-721fcae8] {
|
|
1857
1857
|
transition: none;
|
|
1858
1858
|
}
|
|
1859
|
-
.rk-color-swatch[data-v-
|
|
1859
|
+
.rk-color-swatch[data-v-721fcae8]:hover:not(:disabled) {
|
|
1860
1860
|
transform: none;
|
|
1861
1861
|
}
|
|
1862
1862
|
}
|
|
@@ -2054,7 +2054,7 @@ to {
|
|
|
2054
2054
|
color: var(--color-ink);
|
|
2055
2055
|
}
|
|
2056
2056
|
|
|
2057
|
-
.rk-tags[data-v-
|
|
2057
|
+
.rk-tags[data-v-572364bd] {
|
|
2058
2058
|
display: flex;
|
|
2059
2059
|
min-height: 2.75rem;
|
|
2060
2060
|
cursor: text;
|
|
@@ -2067,18 +2067,18 @@ to {
|
|
|
2067
2067
|
|
|
2068
2068
|
/* `:has(input:focus-visible)` rather than `:focus-within`: the ring belongs
|
|
2069
2069
|
to the field, not to the chips' remove buttons, which carry their own. */
|
|
2070
|
-
.rk-tags[data-v-
|
|
2070
|
+
.rk-tags[data-v-572364bd]:has(.rk-tags-field:focus-visible) {
|
|
2071
2071
|
outline: 2px solid var(--color-primary);
|
|
2072
2072
|
outline-offset: 1px;
|
|
2073
2073
|
}
|
|
2074
|
-
.rk-tags.is-invalid[data-v-
|
|
2074
|
+
.rk-tags.is-invalid[data-v-572364bd] {
|
|
2075
2075
|
--surface-border-color: var(--color-negative);
|
|
2076
2076
|
}
|
|
2077
|
-
.rk-tags.is-disabled[data-v-
|
|
2077
|
+
.rk-tags.is-disabled[data-v-572364bd] {
|
|
2078
2078
|
cursor: not-allowed;
|
|
2079
2079
|
opacity: 0.5;
|
|
2080
2080
|
}
|
|
2081
|
-
.rk-tags-field[data-v-
|
|
2081
|
+
.rk-tags-field[data-v-572364bd] {
|
|
2082
2082
|
min-width: 6rem;
|
|
2083
2083
|
flex: 1;
|
|
2084
2084
|
background: transparent;
|
|
@@ -2138,10 +2138,10 @@ to {
|
|
|
2138
2138
|
transform: translateY(4px) scale(0.98);
|
|
2139
2139
|
}
|
|
2140
2140
|
|
|
2141
|
-
.rk-time[data-v-
|
|
2141
|
+
.rk-time[data-v-2ae98769] {
|
|
2142
2142
|
display: block;
|
|
2143
2143
|
}
|
|
2144
|
-
.rk-time-field[data-v-
|
|
2144
|
+
.rk-time-field[data-v-2ae98769] {
|
|
2145
2145
|
display: flex;
|
|
2146
2146
|
width: 100%;
|
|
2147
2147
|
height: 2.75rem;
|
|
@@ -2154,16 +2154,16 @@ to {
|
|
|
2154
2154
|
font-variant-numeric: tabular-nums;
|
|
2155
2155
|
color: var(--color-ink);
|
|
2156
2156
|
}
|
|
2157
|
-
.rk-time-field.is-empty[data-v-
|
|
2157
|
+
.rk-time-field.is-empty[data-v-2ae98769] {
|
|
2158
2158
|
color: var(--color-ink-soft);
|
|
2159
2159
|
}
|
|
2160
|
-
.rk-time-field.is-invalid[data-v-
|
|
2160
|
+
.rk-time-field.is-invalid[data-v-2ae98769] {
|
|
2161
2161
|
--surface-border-color: var(--color-negative);
|
|
2162
2162
|
}
|
|
2163
|
-
.rk-time-field[data-v-
|
|
2163
|
+
.rk-time-field[data-v-2ae98769]:disabled {
|
|
2164
2164
|
opacity: 0.5;
|
|
2165
2165
|
}
|
|
2166
|
-
.rk-time-columns[data-v-
|
|
2166
|
+
.rk-time-columns[data-v-2ae98769] {
|
|
2167
2167
|
display: grid;
|
|
2168
2168
|
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
|
|
2169
2169
|
gap: 0.5rem;
|
|
@@ -2232,16 +2232,16 @@ to {
|
|
|
2232
2232
|
margin-top: 0.5rem;
|
|
2233
2233
|
}
|
|
2234
2234
|
|
|
2235
|
-
.rk-date[data-v-
|
|
2235
|
+
.rk-date[data-v-2c91e3bb] {
|
|
2236
2236
|
display: block;
|
|
2237
2237
|
}
|
|
2238
2238
|
|
|
2239
2239
|
/* Wider than a popover's default: a calendar and a column of presets side by
|
|
2240
2240
|
side do not fit in 24rem, and the month title wraps in two. */
|
|
2241
|
-
.rk-date[data-v-
|
|
2241
|
+
.rk-date[data-v-2c91e3bb] .rk-popover-panel {
|
|
2242
2242
|
max-width: min(34rem, calc(100vw - 1rem));
|
|
2243
2243
|
}
|
|
2244
|
-
.rk-date-wrap[data-v-
|
|
2244
|
+
.rk-date-wrap[data-v-2c91e3bb] {
|
|
2245
2245
|
display: flex;
|
|
2246
2246
|
width: 100%;
|
|
2247
2247
|
height: 2.75rem;
|
|
@@ -2249,7 +2249,7 @@ to {
|
|
|
2249
2249
|
border-radius: var(--radius-card);
|
|
2250
2250
|
padding-inline-end: 0.375rem;
|
|
2251
2251
|
}
|
|
2252
|
-
.rk-date-field[data-v-
|
|
2252
|
+
.rk-date-field[data-v-2c91e3bb] {
|
|
2253
2253
|
display: flex;
|
|
2254
2254
|
min-width: 0;
|
|
2255
2255
|
flex: 1;
|
|
@@ -2262,16 +2262,16 @@ to {
|
|
|
2262
2262
|
font-size: 1rem;
|
|
2263
2263
|
color: var(--color-ink);
|
|
2264
2264
|
}
|
|
2265
|
-
.rk-date-field.is-empty[data-v-
|
|
2265
|
+
.rk-date-field.is-empty[data-v-2c91e3bb] {
|
|
2266
2266
|
color: var(--color-ink-soft);
|
|
2267
2267
|
}
|
|
2268
|
-
.rk-date-wrap.is-invalid[data-v-
|
|
2268
|
+
.rk-date-wrap.is-invalid[data-v-2c91e3bb] {
|
|
2269
2269
|
--surface-border-color: var(--color-negative);
|
|
2270
2270
|
}
|
|
2271
|
-
.rk-date-field[data-v-
|
|
2271
|
+
.rk-date-field[data-v-2c91e3bb]:disabled {
|
|
2272
2272
|
opacity: 0.5;
|
|
2273
2273
|
}
|
|
2274
|
-
.rk-date-clear[data-v-
|
|
2274
|
+
.rk-date-clear[data-v-2c91e3bb] {
|
|
2275
2275
|
display: grid;
|
|
2276
2276
|
width: 1.375rem;
|
|
2277
2277
|
height: 1.375rem;
|
|
@@ -2280,27 +2280,27 @@ to {
|
|
|
2280
2280
|
border-radius: 9999px;
|
|
2281
2281
|
color: var(--color-ink-soft);
|
|
2282
2282
|
}
|
|
2283
|
-
.rk-date-clear[data-v-
|
|
2283
|
+
.rk-date-clear[data-v-2c91e3bb]:hover {
|
|
2284
2284
|
background: var(--color-muted);
|
|
2285
2285
|
color: var(--color-ink);
|
|
2286
2286
|
}
|
|
2287
|
-
.rk-date-clear[data-v-
|
|
2287
|
+
.rk-date-clear[data-v-2c91e3bb]:focus-visible {
|
|
2288
2288
|
outline: 2px solid var(--color-primary);
|
|
2289
2289
|
outline-offset: 1px;
|
|
2290
2290
|
}
|
|
2291
2291
|
|
|
2292
2292
|
/* As wide as its contents rather than as narrow as they will go: in a flex
|
|
2293
2293
|
panel the calendar shrinks, and a squeezed month title wraps in two. */
|
|
2294
|
-
.rk-date-panel[data-v-
|
|
2294
|
+
.rk-date-panel[data-v-2c91e3bb] {
|
|
2295
2295
|
display: flex;
|
|
2296
2296
|
width: max-content;
|
|
2297
2297
|
max-width: 100%;
|
|
2298
2298
|
gap: 0.75rem;
|
|
2299
2299
|
}
|
|
2300
|
-
.rk-date-panel[data-v-
|
|
2300
|
+
.rk-date-panel[data-v-2c91e3bb] .rk-cal {
|
|
2301
2301
|
width: 17rem;
|
|
2302
2302
|
}
|
|
2303
|
-
.rk-date-presets[data-v-
|
|
2303
|
+
.rk-date-presets[data-v-2c91e3bb] {
|
|
2304
2304
|
display: flex;
|
|
2305
2305
|
min-width: 8rem;
|
|
2306
2306
|
flex-direction: column;
|
|
@@ -2308,7 +2308,7 @@ to {
|
|
|
2308
2308
|
border-inline-end: 1px solid var(--surface-border-color);
|
|
2309
2309
|
padding-inline-end: 0.75rem;
|
|
2310
2310
|
}
|
|
2311
|
-
.rk-date-preset[data-v-
|
|
2311
|
+
.rk-date-preset[data-v-2c91e3bb] {
|
|
2312
2312
|
width: 100%;
|
|
2313
2313
|
border-radius: var(--radius-cell);
|
|
2314
2314
|
padding: 0.375rem 0.5rem;
|
|
@@ -2317,14 +2317,14 @@ to {
|
|
|
2317
2317
|
color: var(--color-ink);
|
|
2318
2318
|
transition: background-color var(--duration-fast) var(--ease-standard);
|
|
2319
2319
|
}
|
|
2320
|
-
.rk-date-preset[data-v-
|
|
2320
|
+
.rk-date-preset[data-v-2c91e3bb]:hover {
|
|
2321
2321
|
background: var(--color-muted);
|
|
2322
2322
|
}
|
|
2323
2323
|
@media (max-width: 30rem) {
|
|
2324
|
-
.rk-date-panel[data-v-
|
|
2324
|
+
.rk-date-panel[data-v-2c91e3bb] {
|
|
2325
2325
|
flex-direction: column;
|
|
2326
2326
|
}
|
|
2327
|
-
.rk-date-presets[data-v-
|
|
2327
|
+
.rk-date-presets[data-v-2c91e3bb] {
|
|
2328
2328
|
flex-direction: row;
|
|
2329
2329
|
flex-wrap: wrap;
|
|
2330
2330
|
border-inline-end: 0;
|
|
@@ -2332,7 +2332,7 @@ to {
|
|
|
2332
2332
|
padding-inline-end: 0;
|
|
2333
2333
|
padding-bottom: 0.5rem;
|
|
2334
2334
|
}
|
|
2335
|
-
.rk-date-preset[data-v-
|
|
2335
|
+
.rk-date-preset[data-v-2c91e3bb] {
|
|
2336
2336
|
width: auto;
|
|
2337
2337
|
}
|
|
2338
2338
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as useBoundValue } from "./focus-target-BtcoJdmz.js";
|
|
2
|
-
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createStaticVNode, createTextVNode, defineComponent, isRef, mergeProps, nextTick, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, readonly, ref, renderSlot, toDisplayString, unref, useAttrs, useId, vModelDynamic, watch, withCtx, withDirectives } from "vue";
|
|
2
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createStaticVNode, createTextVNode, defineComponent, isRef, mergeProps, nextTick, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, readonly, ref, renderSlot, toDisplayString, unref, useAttrs, useId, useSlots, vModelDynamic, watch, withCtx, withDirectives } from "vue";
|
|
3
3
|
//#region src/utils/redirect.ts
|
|
4
4
|
/**
|
|
5
5
|
* Resolves a `?redirect=` query value into a safe in-app path.
|
|
@@ -325,8 +325,8 @@ function useToast() {
|
|
|
325
325
|
//#endregion
|
|
326
326
|
//#region src/components/BaseAlert.vue?vue&type=script&setup=true&lang.ts
|
|
327
327
|
var _hoisted_1$3 = ["role", "aria-live"];
|
|
328
|
-
var _hoisted_2$
|
|
329
|
-
var _hoisted_3$
|
|
328
|
+
var _hoisted_2$2 = { class: "min-w-0 flex-1" };
|
|
329
|
+
var _hoisted_3$2 = {
|
|
330
330
|
key: 0,
|
|
331
331
|
class: "text-ink font-semibold"
|
|
332
332
|
};
|
|
@@ -367,7 +367,7 @@ var BaseAlert_default = /* @__PURE__ */ defineComponent({
|
|
|
367
367
|
class: normalizeClass(["mt-px grid size-6 shrink-0 place-items-center rounded-full text-xs font-semibold", mark.value]),
|
|
368
368
|
"aria-hidden": "true"
|
|
369
369
|
}, [renderSlot(_ctx.$slots, "mark")], 2)) : createCommentVNode("", true),
|
|
370
|
-
createElementVNode("div", _hoisted_2$
|
|
370
|
+
createElementVNode("div", _hoisted_2$2, [_ctx.$slots.title ? (openBlock(), createElementBlock("p", _hoisted_3$2, [renderSlot(_ctx.$slots, "title")])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(_ctx.$slots.title ? "mt-1" : "") }, [renderSlot(_ctx.$slots, "default")], 2)]),
|
|
371
371
|
renderSlot(_ctx.$slots, "action")
|
|
372
372
|
], 10, _hoisted_1$3);
|
|
373
373
|
};
|
|
@@ -376,8 +376,8 @@ var BaseAlert_default = /* @__PURE__ */ defineComponent({
|
|
|
376
376
|
//#endregion
|
|
377
377
|
//#region src/components/FormField.vue?vue&type=script&setup=true&lang.ts
|
|
378
378
|
var _hoisted_1$2 = ["for"];
|
|
379
|
-
var _hoisted_2 = ["id"];
|
|
380
|
-
var _hoisted_3 = ["id"];
|
|
379
|
+
var _hoisted_2$1 = ["id"];
|
|
380
|
+
var _hoisted_3$1 = ["id"];
|
|
381
381
|
//#endregion
|
|
382
382
|
//#region src/components/FormField.vue
|
|
383
383
|
var FormField_default = /* @__PURE__ */ defineComponent({
|
|
@@ -418,11 +418,11 @@ var FormField_default = /* @__PURE__ */ defineComponent({
|
|
|
418
418
|
key: 0,
|
|
419
419
|
id: errorId.value,
|
|
420
420
|
class: "text-negative text-xs"
|
|
421
|
-
}, toDisplayString(__props.error), 9, _hoisted_2)) : __props.hint ? (openBlock(), createElementBlock("p", {
|
|
421
|
+
}, toDisplayString(__props.error), 9, _hoisted_2$1)) : __props.hint ? (openBlock(), createElementBlock("p", {
|
|
422
422
|
key: 1,
|
|
423
423
|
id: hintId.value,
|
|
424
424
|
class: "text-ink-soft text-xs"
|
|
425
|
-
}, toDisplayString(__props.hint), 9, _hoisted_3)) : createCommentVNode("", true)
|
|
425
|
+
}, toDisplayString(__props.hint), 9, _hoisted_3$1)) : createCommentVNode("", true)
|
|
426
426
|
], 2);
|
|
427
427
|
};
|
|
428
428
|
}
|
|
@@ -452,7 +452,21 @@ function useFieldAttrs() {
|
|
|
452
452
|
}
|
|
453
453
|
//#endregion
|
|
454
454
|
//#region src/components/BaseInput.vue?vue&type=script&setup=true&lang.ts
|
|
455
|
-
var _hoisted_1$1 =
|
|
455
|
+
var _hoisted_1$1 = {
|
|
456
|
+
key: 0,
|
|
457
|
+
class: "text-ink-soft flex shrink-0 items-center ps-3"
|
|
458
|
+
};
|
|
459
|
+
var _hoisted_2 = [
|
|
460
|
+
"id",
|
|
461
|
+
"type",
|
|
462
|
+
"aria-invalid",
|
|
463
|
+
"aria-describedby"
|
|
464
|
+
];
|
|
465
|
+
var _hoisted_3 = {
|
|
466
|
+
key: 1,
|
|
467
|
+
class: "text-ink-soft flex shrink-0 items-center pe-3"
|
|
468
|
+
};
|
|
469
|
+
var _hoisted_4 = [
|
|
456
470
|
"id",
|
|
457
471
|
"type",
|
|
458
472
|
"aria-invalid",
|
|
@@ -475,7 +489,8 @@ var BaseInput_default = /* @__PURE__ */ defineComponent({
|
|
|
475
489
|
},
|
|
476
490
|
type: { default: "text" },
|
|
477
491
|
size: { default: "md" },
|
|
478
|
-
variant: { default: "default" }
|
|
492
|
+
variant: { default: "default" },
|
|
493
|
+
fieldId: { default: () => void 0 }
|
|
479
494
|
},
|
|
480
495
|
emits: ["update:modelValue"],
|
|
481
496
|
setup(__props, { emit: __emit }) {
|
|
@@ -486,10 +501,45 @@ var BaseInput_default = /* @__PURE__ */ defineComponent({
|
|
|
486
501
|
* Every attribute of a native input — `placeholder`, `autocomplete`,
|
|
487
502
|
* `inputmode` — goes to the input itself, not to the wrapper around it.
|
|
488
503
|
*/
|
|
504
|
+
const slots = useSlots();
|
|
505
|
+
const grouped = computed(() => __props.variant !== "unstyled" && Boolean(slots.prefix || slots.suffix));
|
|
506
|
+
/**
|
|
507
|
+
* A number field's value is a number.
|
|
508
|
+
*
|
|
509
|
+
* Typed to `string` alone, `type="number"` forced the caller to keep a string
|
|
510
|
+
* ref and convert on both sides of it — and a component you have to wrap in
|
|
511
|
+
* order to use is one you write yourself instead, which is exactly what the
|
|
512
|
+
* first numeric field tried to reach for it did.
|
|
513
|
+
*
|
|
514
|
+
* Generic rather than `string | number`, so the value is whatever the app
|
|
515
|
+
* bound: a `ref('')` gets strings back and a `ref(0)` numbers, and a
|
|
516
|
+
* `string | undefined` from a form library is accepted as it is.
|
|
517
|
+
*/
|
|
518
|
+
/**
|
|
519
|
+
* Something attached to the field: a currency mark, a unit, a button.
|
|
520
|
+
*
|
|
521
|
+
* Both of these were written by hand inside this kit before they were a
|
|
522
|
+
* slot — `PasswordInput` positions a toggle over the field and `NumberInput`
|
|
523
|
+
* two steppers — and an app that wanted "€" in front of an amount had to
|
|
524
|
+
* rebuild the whole field to get it, losing the label wiring and
|
|
525
|
+
* `aria-describedby` on the way. That is the gap test, with the kit itself
|
|
526
|
+
* as the app.
|
|
527
|
+
*
|
|
528
|
+
* Given either slot, the border and the ground move to a wrapper and the
|
|
529
|
+
* input goes transparent inside it, so the edge encloses the addon whatever
|
|
530
|
+
* width it is. With neither, the field renders exactly as it did before the
|
|
531
|
+
* slots existed.
|
|
532
|
+
*
|
|
533
|
+
* **What goes in them is yours, including whether it is read out.** A `€`
|
|
534
|
+
* beside a field labelled "Amount" is decoration and belongs behind
|
|
535
|
+
* `aria-hidden`; a unit that is the only place "kilograms" appears is not,
|
|
536
|
+
* and belongs in the label instead. The kit cannot tell which it is.
|
|
537
|
+
*/
|
|
489
538
|
const emit = __emit;
|
|
490
539
|
const model = useBoundValue(() => __props.modelValue, (value) => emit("update:modelValue", value));
|
|
491
540
|
return (_ctx, _cache) => {
|
|
492
541
|
return openBlock(), createBlock(FormField_default, {
|
|
542
|
+
"field-id": __props.fieldId,
|
|
493
543
|
class: normalizeClass(unref(fieldClass)),
|
|
494
544
|
style: normalizeStyle(unref(fieldStyle)),
|
|
495
545
|
label: __props.label,
|
|
@@ -498,9 +548,23 @@ var BaseInput_default = /* @__PURE__ */ defineComponent({
|
|
|
498
548
|
"label-hidden": __props.labelHidden,
|
|
499
549
|
size: __props.size
|
|
500
550
|
}, {
|
|
501
|
-
default: withCtx(({ id, describedBy, invalid }) => [
|
|
551
|
+
default: withCtx(({ id, describedBy, invalid }) => [grouped.value ? (openBlock(), createElementBlock("div", {
|
|
552
|
+
key: 0,
|
|
553
|
+
class: normalizeClass(["control rounded-card has-focus-visible:outline-primary flex items-stretch overflow-hidden has-focus-visible:outline-2 has-focus-visible:outline-offset-1", [CONTROL_CLASS, invalid ? "border-negative" : ""]])
|
|
554
|
+
}, [
|
|
555
|
+
_ctx.$slots.prefix ? (openBlock(), createElementBlock("span", _hoisted_1$1, [renderSlot(_ctx.$slots, "prefix")])) : createCommentVNode("", true),
|
|
556
|
+
withDirectives(createElementVNode("input", mergeProps({
|
|
557
|
+
id,
|
|
558
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(model) ? model.value = $event : null),
|
|
559
|
+
type: __props.type,
|
|
560
|
+
"aria-invalid": invalid,
|
|
561
|
+
"aria-describedby": describedBy
|
|
562
|
+
}, unref(controlAttrs), { class: "text-ink min-w-0 flex-1 bg-transparent px-3 text-base focus-visible:outline-none" }), null, 16, _hoisted_2), [[vModelDynamic, unref(model)]]),
|
|
563
|
+
_ctx.$slots.suffix ? (openBlock(), createElementBlock("span", _hoisted_3, [renderSlot(_ctx.$slots, "suffix")])) : createCommentVNode("", true)
|
|
564
|
+
], 2)) : withDirectives((openBlock(), createElementBlock("input", mergeProps({
|
|
565
|
+
key: 1,
|
|
502
566
|
id,
|
|
503
|
-
"onUpdate:modelValue": _cache[
|
|
567
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(model) ? model.value = $event : null),
|
|
504
568
|
type: __props.type,
|
|
505
569
|
"aria-invalid": invalid,
|
|
506
570
|
"aria-describedby": describedBy
|
|
@@ -508,9 +572,10 @@ var BaseInput_default = /* @__PURE__ */ defineComponent({
|
|
|
508
572
|
__props.variant === "unstyled" ? "" : "control text-ink rounded-card focus-visible:outline-primary px-3 focus-visible:outline-2 focus-visible:outline-offset-1",
|
|
509
573
|
__props.variant === "unstyled" ? "text-base" : CONTROL_CLASS,
|
|
510
574
|
__props.variant !== "unstyled" && invalid ? "border-negative" : ""
|
|
511
|
-
] }), null, 16,
|
|
512
|
-
_:
|
|
575
|
+
] }), null, 16, _hoisted_4)), [[vModelDynamic, unref(model)]])]),
|
|
576
|
+
_: 3
|
|
513
577
|
}, 8, [
|
|
578
|
+
"field-id",
|
|
514
579
|
"class",
|
|
515
580
|
"style",
|
|
516
581
|
"label",
|
|
@@ -593,4 +658,4 @@ function useAnnounce() {
|
|
|
593
658
|
//#endregion
|
|
594
659
|
export { toRedirectPath as _, useFieldAttrs as a, useToast as c, isThemePreference as d, readStoredTheme as f, safeRedirect as g, tapFeedback as h, BaseInput_default as i, useOnline as l, useTheme as m, useAnnounce as n, FormField_default as o, setThemeStorageKey as p, GoogleButton_default as r, BaseAlert_default as s, announce as t, applyTheme as u };
|
|
595
660
|
|
|
596
|
-
//# sourceMappingURL=use-announce-
|
|
661
|
+
//# sourceMappingURL=use-announce-D8SKsiqn.js.map
|