@pearpages/pulp-react 0.0.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/LICENSE +21 -0
- package/README.md +65 -0
- package/dist/ListboxOptions-DLsT-dkV.d.ts +11 -0
- package/dist/ToggleField-C-qKSgHh.d.ts +3 -0
- package/dist/accordion.css +90 -0
- package/dist/accordion.css.map +1 -0
- package/dist/accordion.d.ts +71 -0
- package/dist/accordion.js +6 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert.css +246 -0
- package/dist/alert.css.map +1 -0
- package/dist/alert.d.ts +46 -0
- package/dist/alert.js +10 -0
- package/dist/alert.js.map +1 -0
- package/dist/badge.css +89 -0
- package/dist/badge.css.map +1 -0
- package/dist/badge.d.ts +38 -0
- package/dist/badge.js +5 -0
- package/dist/badge.js.map +1 -0
- package/dist/button.css +162 -0
- package/dist/button.css.map +1 -0
- package/dist/button.d.ts +61 -0
- package/dist/button.js +8 -0
- package/dist/button.js.map +1 -0
- package/dist/calendar.css +128 -0
- package/dist/calendar.css.map +1 -0
- package/dist/calendar.d.ts +48 -0
- package/dist/calendar.js +6 -0
- package/dist/calendar.js.map +1 -0
- package/dist/card.css +66 -0
- package/dist/card.css.map +1 -0
- package/dist/card.d.ts +69 -0
- package/dist/card.js +5 -0
- package/dist/card.js.map +1 -0
- package/dist/checkbox.css +106 -0
- package/dist/checkbox.css.map +1 -0
- package/dist/checkbox.d.ts +41 -0
- package/dist/checkbox.js +7 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chunk-2PXTVZ7H.js +95 -0
- package/dist/chunk-2PXTVZ7H.js.map +1 -0
- package/dist/chunk-2ZP4ZBI5.js +43 -0
- package/dist/chunk-2ZP4ZBI5.js.map +1 -0
- package/dist/chunk-3GWESUGD.js +28 -0
- package/dist/chunk-3GWESUGD.js.map +1 -0
- package/dist/chunk-4HRNRTXI.js +25 -0
- package/dist/chunk-4HRNRTXI.js.map +1 -0
- package/dist/chunk-5SBKZS56.js +56 -0
- package/dist/chunk-5SBKZS56.js.map +1 -0
- package/dist/chunk-6I26MMQF.js +19 -0
- package/dist/chunk-6I26MMQF.js.map +1 -0
- package/dist/chunk-75GTNRBH.js +45 -0
- package/dist/chunk-75GTNRBH.js.map +1 -0
- package/dist/chunk-7DS4I7OJ.js +30 -0
- package/dist/chunk-7DS4I7OJ.js.map +1 -0
- package/dist/chunk-ASNTNTJW.js +27 -0
- package/dist/chunk-ASNTNTJW.js.map +1 -0
- package/dist/chunk-ASOQ2MVR.js +19 -0
- package/dist/chunk-ASOQ2MVR.js.map +1 -0
- package/dist/chunk-AWQHULJC.js +31 -0
- package/dist/chunk-AWQHULJC.js.map +1 -0
- package/dist/chunk-BBV4L5WO.js +43 -0
- package/dist/chunk-BBV4L5WO.js.map +1 -0
- package/dist/chunk-CZBCGLEM.js +9 -0
- package/dist/chunk-CZBCGLEM.js.map +1 -0
- package/dist/chunk-DWE374JX.js +65 -0
- package/dist/chunk-DWE374JX.js.map +1 -0
- package/dist/chunk-DXOOW6Q6.js +159 -0
- package/dist/chunk-DXOOW6Q6.js.map +1 -0
- package/dist/chunk-F3OFZGGE.js +116 -0
- package/dist/chunk-F3OFZGGE.js.map +1 -0
- package/dist/chunk-FH54XQ35.js +125 -0
- package/dist/chunk-FH54XQ35.js.map +1 -0
- package/dist/chunk-FXRSZUDH.js +38 -0
- package/dist/chunk-FXRSZUDH.js.map +1 -0
- package/dist/chunk-GTTXRDXV.js +181 -0
- package/dist/chunk-GTTXRDXV.js.map +1 -0
- package/dist/chunk-I4KC4V6A.js +31 -0
- package/dist/chunk-I4KC4V6A.js.map +1 -0
- package/dist/chunk-I5OZ63W7.js +50 -0
- package/dist/chunk-I5OZ63W7.js.map +1 -0
- package/dist/chunk-IDNGNQNV.js +41 -0
- package/dist/chunk-IDNGNQNV.js.map +1 -0
- package/dist/chunk-J5S2HVHO.js +67 -0
- package/dist/chunk-J5S2HVHO.js.map +1 -0
- package/dist/chunk-K5QGGQOV.js +84 -0
- package/dist/chunk-K5QGGQOV.js.map +1 -0
- package/dist/chunk-KPQGS4PG.js +77 -0
- package/dist/chunk-KPQGS4PG.js.map +1 -0
- package/dist/chunk-MI4QUKQS.js +8 -0
- package/dist/chunk-MI4QUKQS.js.map +1 -0
- package/dist/chunk-MRQWUCBA.js +57 -0
- package/dist/chunk-MRQWUCBA.js.map +1 -0
- package/dist/chunk-MXWXJZFS.js +48 -0
- package/dist/chunk-MXWXJZFS.js.map +1 -0
- package/dist/chunk-N7L66GMG.js +129 -0
- package/dist/chunk-N7L66GMG.js.map +1 -0
- package/dist/chunk-NAYFLTK6.js +32 -0
- package/dist/chunk-NAYFLTK6.js.map +1 -0
- package/dist/chunk-O6OBFL3Q.js +155 -0
- package/dist/chunk-O6OBFL3Q.js.map +1 -0
- package/dist/chunk-OGIQRHNF.js +52 -0
- package/dist/chunk-OGIQRHNF.js.map +1 -0
- package/dist/chunk-OUFAFINB.js +45 -0
- package/dist/chunk-OUFAFINB.js.map +1 -0
- package/dist/chunk-OXYP34CG.js +43 -0
- package/dist/chunk-OXYP34CG.js.map +1 -0
- package/dist/chunk-P5C2U5ZF.js +73 -0
- package/dist/chunk-P5C2U5ZF.js.map +1 -0
- package/dist/chunk-PM4YO67Q.js +53 -0
- package/dist/chunk-PM4YO67Q.js.map +1 -0
- package/dist/chunk-Q6J6BMSB.js +86 -0
- package/dist/chunk-Q6J6BMSB.js.map +1 -0
- package/dist/chunk-T76YSNTZ.js +33 -0
- package/dist/chunk-T76YSNTZ.js.map +1 -0
- package/dist/chunk-TGMDOQCL.js +53 -0
- package/dist/chunk-TGMDOQCL.js.map +1 -0
- package/dist/chunk-TVI5AXLE.js +41 -0
- package/dist/chunk-TVI5AXLE.js.map +1 -0
- package/dist/chunk-U6QRAD73.js +22 -0
- package/dist/chunk-U6QRAD73.js.map +1 -0
- package/dist/chunk-UX42PQLT.js +76 -0
- package/dist/chunk-UX42PQLT.js.map +1 -0
- package/dist/chunk-XDVS7HX7.js +100 -0
- package/dist/chunk-XDVS7HX7.js.map +1 -0
- package/dist/chunk-Y4TZA77G.js +57 -0
- package/dist/chunk-Y4TZA77G.js.map +1 -0
- package/dist/chunk-YUHS5S5Y.js +12 -0
- package/dist/chunk-YUHS5S5Y.js.map +1 -0
- package/dist/chunk-Z4PN6B2C.js +17 -0
- package/dist/chunk-Z4PN6B2C.js.map +1 -0
- package/dist/chunk-ZVDN3GRI.js +49 -0
- package/dist/chunk-ZVDN3GRI.js.map +1 -0
- package/dist/combobox.css +280 -0
- package/dist/combobox.css.map +1 -0
- package/dist/combobox.d.ts +75 -0
- package/dist/combobox.js +10 -0
- package/dist/combobox.js.map +1 -0
- package/dist/component-manifest.json +3370 -0
- package/dist/date-picker.css +267 -0
- package/dist/date-picker.css.map +1 -0
- package/dist/date-picker.d.ts +59 -0
- package/dist/date-picker.js +8 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/dialog.css +62 -0
- package/dist/dialog.css.map +1 -0
- package/dist/dialog.d.ts +56 -0
- package/dist/dialog.js +3 -0
- package/dist/dialog.js.map +1 -0
- package/dist/field.css +28 -0
- package/dist/field.css.map +1 -0
- package/dist/field.d.ts +98 -0
- package/dist/field.js +5 -0
- package/dist/field.js.map +1 -0
- package/dist/floating-Bw-LN_QT.d.ts +5 -0
- package/dist/heading.css +30 -0
- package/dist/heading.css.map +1 -0
- package/dist/heading.d.ts +316 -0
- package/dist/heading.js +4 -0
- package/dist/heading.js.map +1 -0
- package/dist/icon-button.css +177 -0
- package/dist/icon-button.css.map +1 -0
- package/dist/icon-button.d.ts +29 -0
- package/dist/icon-button.js +9 -0
- package/dist/icon-button.js.map +1 -0
- package/dist/icon.css +25 -0
- package/dist/icon.css.map +1 -0
- package/dist/icon.d.ts +33 -0
- package/dist/icon.js +4 -0
- package/dist/icon.js.map +1 -0
- package/dist/index.css +2345 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/inline.css +63 -0
- package/dist/inline.css.map +1 -0
- package/dist/inline.d.ts +322 -0
- package/dist/inline.js +4 -0
- package/dist/inline.js.map +1 -0
- package/dist/listbox.css +95 -0
- package/dist/listbox.css.map +1 -0
- package/dist/listbox.d.ts +47 -0
- package/dist/listbox.js +7 -0
- package/dist/listbox.js.map +1 -0
- package/dist/menu.css +102 -0
- package/dist/menu.css.map +1 -0
- package/dist/menu.d.ts +76 -0
- package/dist/menu.js +9 -0
- package/dist/menu.js.map +1 -0
- package/dist/pagination.css +212 -0
- package/dist/pagination.css.map +1 -0
- package/dist/pagination.d.ts +52 -0
- package/dist/pagination.js +10 -0
- package/dist/pagination.js.map +1 -0
- package/dist/picker.css +209 -0
- package/dist/picker.css.map +1 -0
- package/dist/picker.d.ts +57 -0
- package/dist/picker.js +8 -0
- package/dist/picker.js.map +1 -0
- package/dist/popover.css +48 -0
- package/dist/popover.css.map +1 -0
- package/dist/popover.d.ts +68 -0
- package/dist/popover.js +7 -0
- package/dist/popover.js.map +1 -0
- package/dist/progress.css +83 -0
- package/dist/progress.css.map +1 -0
- package/dist/progress.d.ts +40 -0
- package/dist/progress.js +5 -0
- package/dist/progress.js.map +1 -0
- package/dist/radio.css +107 -0
- package/dist/radio.css.map +1 -0
- package/dist/radio.d.ts +68 -0
- package/dist/radio.js +6 -0
- package/dist/radio.js.map +1 -0
- package/dist/select.css +98 -0
- package/dist/select.css.map +1 -0
- package/dist/select.d.ts +39 -0
- package/dist/select.js +6 -0
- package/dist/select.js.map +1 -0
- package/dist/skeleton.css +59 -0
- package/dist/skeleton.css.map +1 -0
- package/dist/skeleton.d.ts +34 -0
- package/dist/skeleton.js +4 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/slider.css +126 -0
- package/dist/slider.css.map +1 -0
- package/dist/slider.d.ts +61 -0
- package/dist/slider.js +5 -0
- package/dist/slider.js.map +1 -0
- package/dist/spinner.css +60 -0
- package/dist/spinner.css.map +1 -0
- package/dist/spinner.d.ts +34 -0
- package/dist/spinner.js +5 -0
- package/dist/spinner.js.map +1 -0
- package/dist/stack.css +60 -0
- package/dist/stack.css.map +1 -0
- package/dist/stack.d.ts +319 -0
- package/dist/stack.js +4 -0
- package/dist/stack.js.map +1 -0
- package/dist/switch.css +97 -0
- package/dist/switch.css.map +1 -0
- package/dist/switch.d.ts +35 -0
- package/dist/switch.js +7 -0
- package/dist/switch.js.map +1 -0
- package/dist/table.css +188 -0
- package/dist/table.css.map +1 -0
- package/dist/table.d.ts +137 -0
- package/dist/table.js +6 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.css +75 -0
- package/dist/tabs.css.map +1 -0
- package/dist/tabs.d.ts +73 -0
- package/dist/tabs.js +5 -0
- package/dist/tabs.js.map +1 -0
- package/dist/text-field.css +75 -0
- package/dist/text-field.css.map +1 -0
- package/dist/text-field.d.ts +43 -0
- package/dist/text-field.js +6 -0
- package/dist/text-field.js.map +1 -0
- package/dist/text.css +53 -0
- package/dist/text.css.map +1 -0
- package/dist/text.d.ts +331 -0
- package/dist/text.js +4 -0
- package/dist/text.js.map +1 -0
- package/dist/textarea.css +84 -0
- package/dist/textarea.css.map +1 -0
- package/dist/textarea.d.ts +40 -0
- package/dist/textarea.js +6 -0
- package/dist/textarea.js.map +1 -0
- package/dist/toast.css +300 -0
- package/dist/toast.css.map +1 -0
- package/dist/toast.d.ts +60 -0
- package/dist/toast.js +11 -0
- package/dist/toast.js.map +1 -0
- package/dist/tooltip.css +36 -0
- package/dist/tooltip.css.map +1 -0
- package/dist/tooltip.d.ts +34 -0
- package/dist/tooltip.js +5 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/visually-hidden.css +15 -0
- package/dist/visually-hidden.css.map +1 -0
- package/dist/visually-hidden.d.ts +308 -0
- package/dist/visually-hidden.js +4 -0
- package/dist/visually-hidden.js.map +1 -0
- package/package.json +261 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* src/skeleton/Skeleton.module.css */
|
|
2
|
+
@layer components {
|
|
3
|
+
.Skeleton_skeleton {
|
|
4
|
+
--_size: var(--skeleton-circle-md);
|
|
5
|
+
display: block;
|
|
6
|
+
inline-size: 100%;
|
|
7
|
+
border-radius: var(--skeleton-radius);
|
|
8
|
+
background-color: var(--skeleton-base);
|
|
9
|
+
background-image:
|
|
10
|
+
linear-gradient(
|
|
11
|
+
90deg,
|
|
12
|
+
var(--skeleton-base),
|
|
13
|
+
var(--skeleton-highlight),
|
|
14
|
+
var(--skeleton-base));
|
|
15
|
+
background-size: 200% 100%;
|
|
16
|
+
animation: Skeleton_shimmer calc(6 * var(--skeleton-duration)) linear infinite;
|
|
17
|
+
&[data-shape=text] {
|
|
18
|
+
block-size: var(--skeleton-text-height);
|
|
19
|
+
}
|
|
20
|
+
&[data-shape=rect] {
|
|
21
|
+
block-size: var(--skeleton-circle-lg);
|
|
22
|
+
}
|
|
23
|
+
&[data-shape=circle] {
|
|
24
|
+
inline-size: var(--_size);
|
|
25
|
+
block-size: var(--_size);
|
|
26
|
+
border-radius: var(--radius-full);
|
|
27
|
+
}
|
|
28
|
+
&[data-size=sm] {
|
|
29
|
+
--_size: var(--skeleton-circle-sm);
|
|
30
|
+
}
|
|
31
|
+
&[data-size=lg] {
|
|
32
|
+
--_size: var(--skeleton-circle-lg);
|
|
33
|
+
}
|
|
34
|
+
&[data-last] {
|
|
35
|
+
inline-size: 60%;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
.Skeleton_lines {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
gap: var(--skeleton-gap);
|
|
42
|
+
inline-size: 100%;
|
|
43
|
+
}
|
|
44
|
+
@keyframes Skeleton_shimmer {
|
|
45
|
+
from {
|
|
46
|
+
background-position: 200% 0;
|
|
47
|
+
}
|
|
48
|
+
to {
|
|
49
|
+
background-position: -200% 0;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
@media (prefers-reduced-motion: reduce) {
|
|
53
|
+
.Skeleton_skeleton {
|
|
54
|
+
animation: none;
|
|
55
|
+
background-image: none;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/*# sourceMappingURL=skeleton.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/skeleton/Skeleton.module.css"],"sourcesContent":["/* Every value is a token (--skeleton-*). Shimmer is a moving background-image; off under reduced motion. */\n\n@layer components {\n .skeleton {\n --_size: var(--skeleton-circle-md);\n\n display: block;\n inline-size: 100%;\n border-radius: var(--skeleton-radius);\n background-color: var(--skeleton-base);\n background-image: linear-gradient(90deg, var(--skeleton-base), var(--skeleton-highlight), var(--skeleton-base));\n background-size: 200% 100%;\n animation: shimmer calc(6 * var(--skeleton-duration)) linear infinite;\n\n &[data-shape=\"text\"] {\n block-size: var(--skeleton-text-height);\n }\n\n &[data-shape=\"rect\"] {\n block-size: var(--skeleton-circle-lg);\n }\n\n &[data-shape=\"circle\"] {\n inline-size: var(--_size);\n block-size: var(--_size);\n border-radius: var(--radius-full);\n }\n\n &[data-size=\"sm\"] { --_size: var(--skeleton-circle-sm); }\n &[data-size=\"lg\"] { --_size: var(--skeleton-circle-lg); }\n\n &[data-last] {\n inline-size: 60%;\n }\n }\n\n .lines {\n display: flex;\n flex-direction: column;\n gap: var(--skeleton-gap);\n inline-size: 100%;\n }\n\n @keyframes shimmer {\n from {\n background-position: 200% 0;\n }\n\n to {\n background-position: -200% 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .skeleton {\n animation: none;\n background-image: none;\n }\n }\n}\n"],"mappings":";AAEA;AACE,GAACA;AACC,aAAS,IAAI;AAEb,aAAS;AACT,iBAAa;AACb,mBAAe,IAAI;AACnB,sBAAkB,IAAI;AACtB;AAAA,MAAkB;AAAA,QAAgB,KAAK;AAAA,QAAE,IAAI,gBAAgB;AAAA,QAAE,IAAI,qBAAqB;AAAA,QAAE,IAAI;AAC9F,qBAAiB,KAAK;AACtB,eAAW,iBAAQ,KAAK,EAAE,EAAE,IAAI,sBAAsB,OAAO;AAE7D,KAAC,CAAC;AACA,kBAAY,IAAI;AAClB;AAEA,KAAC,CAAC;AACA,kBAAY,IAAI;AAClB;AAEA,KAAC,CAAC;AACA,mBAAa,IAAI;AACjB,kBAAY,IAAI;AAChB,qBAAe,IAAI;AACrB;AAEA,KAAC,CAAC;AAAkB,eAAS,IAAI;AAAuB;AACxD,KAAC,CAAC;AAAkB,eAAS,IAAI;AAAuB;AAExD,KAAC,CAAC;AACA,mBAAa;AACf;AACF;AAEA,GAACC;AACC,aAAS;AACT,oBAAgB;AAChB,SAAK,IAAI;AACT,iBAAa;AACf;AAEA,aA/BaC;AAgCX;AACE,2BAAqB,KAAK;AAC5B;AAEA;AACE,2BAAqB,MAAM;AAC7B;AACF;AAEA,UAAO,wBAAyB;AAC9B,KAnDDF;AAoDG,iBAAW;AACX,wBAAkB;AACpB;AACF;AACF;","names":["skeleton","lines","shimmer"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, Ref } from 'react';
|
|
3
|
+
|
|
4
|
+
type SkeletonShape = 'text' | 'rect' | 'circle';
|
|
5
|
+
type SkeletonSize = 'sm' | 'md' | 'lg';
|
|
6
|
+
interface SkeletonProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
7
|
+
/** @default 'text' */
|
|
8
|
+
shape?: SkeletonShape;
|
|
9
|
+
/** Number of text lines; the last is shorter. @default 1 */
|
|
10
|
+
lines?: number;
|
|
11
|
+
/** Circle diameter, from the control scale. @default 'md' */
|
|
12
|
+
size?: SkeletonSize;
|
|
13
|
+
ref?: Ref<HTMLSpanElement>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A placeholder for content that is loading. Decorative: hidden from
|
|
17
|
+
* assistive technology, so mark the *container* `aria-busy` and announce
|
|
18
|
+
* the loaded state there. Width for text and rect is the consumer's (pass
|
|
19
|
+
* a `className`); the shimmer runs only when motion is allowed.
|
|
20
|
+
*
|
|
21
|
+
* @status stable
|
|
22
|
+
* @category Feedback
|
|
23
|
+
* @accessibility `aria-hidden`: a placeholder has nothing to announce. Mark the container `aria-busy` while loading and clear it when content arrives; the shimmer stops under reduced motion.
|
|
24
|
+
* @do Match the shape of the content it stands in for.
|
|
25
|
+
* Set `aria-busy` on the region, not on the skeleton.
|
|
26
|
+
* @dont Show it for content that arrives in under a few hundred milliseconds.
|
|
27
|
+
* Animate it when the user prefers reduced motion; the CSS already stops it.
|
|
28
|
+
*/
|
|
29
|
+
declare function Skeleton({ shape, lines, size, className, ref, ...rest }: SkeletonProps): react.JSX.Element;
|
|
30
|
+
declare namespace Skeleton {
|
|
31
|
+
var displayName: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { Skeleton, type SkeletonProps, type SkeletonShape, type SkeletonSize };
|
package/dist/skeleton.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"skeleton.js"}
|
package/dist/slider.css
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* src/internal/AriaField.module.css */
|
|
2
|
+
@layer components {
|
|
3
|
+
.AriaField_field {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
gap: var(--field-gap);
|
|
7
|
+
font-family: var(--font-family-body);
|
|
8
|
+
}
|
|
9
|
+
.AriaField_label {
|
|
10
|
+
font-size: var(--field-label-font-size);
|
|
11
|
+
font-weight: var(--field-label-font-weight);
|
|
12
|
+
color: var(--field-label-fg);
|
|
13
|
+
}
|
|
14
|
+
.AriaField_required {
|
|
15
|
+
margin-inline-start: var(--field-required-gap);
|
|
16
|
+
color: var(--field-required-fg);
|
|
17
|
+
}
|
|
18
|
+
.AriaField_description {
|
|
19
|
+
margin: 0;
|
|
20
|
+
font-size: var(--field-description-font-size);
|
|
21
|
+
color: var(--field-description-fg);
|
|
22
|
+
}
|
|
23
|
+
.AriaField_error {
|
|
24
|
+
margin: 0;
|
|
25
|
+
font-size: var(--field-error-font-size);
|
|
26
|
+
color: var(--field-error-fg);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* src/slider/Slider.module.css */
|
|
31
|
+
@layer components {
|
|
32
|
+
.Slider_root {
|
|
33
|
+
--_thumb: var(--slider-thumb-size);
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
gap: var(--slider-gap);
|
|
37
|
+
inline-size: 100%;
|
|
38
|
+
font-family: var(--slider-font-family);
|
|
39
|
+
&[data-orientation=vertical] {
|
|
40
|
+
inline-size: auto;
|
|
41
|
+
block-size: var(--slider-track-length);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
.Slider_header {
|
|
45
|
+
display: flex;
|
|
46
|
+
justify-content: space-between;
|
|
47
|
+
gap: var(--slider-gap);
|
|
48
|
+
}
|
|
49
|
+
.Slider_hidden {
|
|
50
|
+
position: absolute;
|
|
51
|
+
inline-size: var(--size-hairline);
|
|
52
|
+
block-size: var(--size-hairline);
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
clip-path: inset(50%);
|
|
55
|
+
white-space: nowrap;
|
|
56
|
+
}
|
|
57
|
+
.Slider_output {
|
|
58
|
+
color: var(--slider-output-fg);
|
|
59
|
+
font-family: var(--slider-output-font-family);
|
|
60
|
+
font-size: var(--slider-output-font-size);
|
|
61
|
+
font-variant-numeric: tabular-nums;
|
|
62
|
+
}
|
|
63
|
+
.Slider_track {
|
|
64
|
+
position: relative;
|
|
65
|
+
block-size: var(--slider-track-hit-size);
|
|
66
|
+
.Slider_root[data-orientation=vertical] & {
|
|
67
|
+
inline-size: var(--slider-track-hit-size);
|
|
68
|
+
block-size: 100%;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
.Slider_root[data-disabled] .Slider_track {
|
|
72
|
+
opacity: 0.55;
|
|
73
|
+
}
|
|
74
|
+
.Slider_rail {
|
|
75
|
+
position: absolute;
|
|
76
|
+
inset-block-start: 50%;
|
|
77
|
+
inline-size: 100%;
|
|
78
|
+
block-size: var(--slider-track-size);
|
|
79
|
+
overflow: hidden;
|
|
80
|
+
border-radius: var(--slider-track-radius);
|
|
81
|
+
background-color: var(--slider-track-bg);
|
|
82
|
+
translate: 0 -50%;
|
|
83
|
+
.Slider_root[data-orientation=vertical] & {
|
|
84
|
+
inset-block-start: 0;
|
|
85
|
+
inset-inline-start: 50%;
|
|
86
|
+
inline-size: var(--slider-track-size);
|
|
87
|
+
block-size: 100%;
|
|
88
|
+
translate: -50% 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
.Slider_fill {
|
|
92
|
+
position: absolute;
|
|
93
|
+
block-size: 100%;
|
|
94
|
+
background-color: var(--slider-fill);
|
|
95
|
+
.Slider_root[data-orientation=vertical] & {
|
|
96
|
+
inline-size: 100%;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
.Slider_thumb {
|
|
100
|
+
inset-block-start: 50%;
|
|
101
|
+
inline-size: var(--_thumb);
|
|
102
|
+
block-size: var(--_thumb);
|
|
103
|
+
border: var(--slider-thumb-border-width) solid var(--slider-thumb-border);
|
|
104
|
+
border-radius: var(--slider-thumb-radius);
|
|
105
|
+
background-color: var(--slider-thumb-bg);
|
|
106
|
+
box-shadow: var(--slider-thumb-shadow);
|
|
107
|
+
cursor: grab;
|
|
108
|
+
transition: border-color var(--slider-motion-duration) var(--motion-easing-standard);
|
|
109
|
+
.Slider_root[data-orientation=vertical] & {
|
|
110
|
+
inset-block-start: auto;
|
|
111
|
+
inset-inline-start: 50%;
|
|
112
|
+
}
|
|
113
|
+
&[data-hovered],
|
|
114
|
+
&[data-dragging] {
|
|
115
|
+
border-color: var(--slider-thumb-border-hover);
|
|
116
|
+
}
|
|
117
|
+
&[data-dragging] {
|
|
118
|
+
cursor: grabbing;
|
|
119
|
+
}
|
|
120
|
+
&[data-focus-visible] {
|
|
121
|
+
outline: var(--slider-focus-ring-width) solid var(--slider-focus-ring);
|
|
122
|
+
outline-offset: var(--slider-focus-ring-offset);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/*# sourceMappingURL=slider.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/AriaField.module.css","../src/slider/Slider.module.css"],"sourcesContent":["/* The same --field-* tokens Field reads, on React Aria's label, description and error parts. */\n\n@layer components {\n .field {\n display: flex;\n flex-direction: column;\n gap: var(--field-gap);\n font-family: var(--font-family-body);\n }\n\n .label {\n font-size: var(--field-label-font-size);\n font-weight: var(--field-label-font-weight);\n color: var(--field-label-fg);\n }\n\n .required {\n margin-inline-start: var(--field-required-gap);\n color: var(--field-required-fg);\n }\n\n .description {\n margin: 0;\n font-size: var(--field-description-font-size);\n color: var(--field-description-fg);\n }\n\n .error {\n margin: 0;\n font-size: var(--field-error-font-size);\n color: var(--field-error-fg);\n }\n}\n","/*\n * Every value is a token (--slider-*); the label and description read\n * --field-*. React Aria positions the thumbs and the fill (its inline\n * values); the rail is the visible track inside a larger pointer target.\n * State: data-orientation and data-disabled on the root; data-dragging,\n * data-hovered, data-focus-visible on a thumb.\n */\n\n@layer components {\n .root {\n --_thumb: var(--slider-thumb-size);\n\n display: flex;\n flex-direction: column;\n gap: var(--slider-gap);\n inline-size: 100%;\n font-family: var(--slider-font-family);\n\n &[data-orientation=\"vertical\"] {\n inline-size: auto;\n block-size: var(--slider-track-length);\n }\n\n }\n\n .header {\n display: flex;\n justify-content: space-between;\n gap: var(--slider-gap);\n }\n\n .hidden {\n position: absolute;\n inline-size: var(--size-hairline);\n block-size: var(--size-hairline);\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n }\n\n .output {\n color: var(--slider-output-fg);\n font-family: var(--slider-output-font-family);\n font-size: var(--slider-output-font-size);\n font-variant-numeric: tabular-nums;\n }\n\n .track {\n position: relative;\n block-size: var(--slider-track-hit-size);\n\n .root[data-orientation=\"vertical\"] & {\n inline-size: var(--slider-track-hit-size);\n block-size: 100%;\n }\n }\n\n /* Disabled dims the track, not the label and output, so the text keeps its contrast. */\n .root[data-disabled] .track {\n opacity: 0.55;\n }\n\n .rail {\n position: absolute;\n inset-block-start: 50%;\n inline-size: 100%;\n block-size: var(--slider-track-size);\n overflow: hidden;\n border-radius: var(--slider-track-radius);\n background-color: var(--slider-track-bg);\n translate: 0 -50%;\n\n .root[data-orientation=\"vertical\"] & {\n inset-block-start: 0;\n inset-inline-start: 50%;\n inline-size: var(--slider-track-size);\n block-size: 100%;\n translate: -50% 0;\n }\n }\n\n .fill {\n position: absolute;\n block-size: 100%;\n background-color: var(--slider-fill);\n\n .root[data-orientation=\"vertical\"] & {\n inline-size: 100%;\n }\n }\n\n .thumb {\n inset-block-start: 50%;\n inline-size: var(--_thumb);\n block-size: var(--_thumb);\n border: var(--slider-thumb-border-width) solid var(--slider-thumb-border);\n border-radius: var(--slider-thumb-radius);\n background-color: var(--slider-thumb-bg);\n box-shadow: var(--slider-thumb-shadow);\n cursor: grab;\n transition: border-color var(--slider-motion-duration) var(--motion-easing-standard);\n\n .root[data-orientation=\"vertical\"] & {\n inset-block-start: auto;\n inset-inline-start: 50%;\n }\n\n &[data-hovered],\n &[data-dragging] {\n border-color: var(--slider-thumb-border-hover);\n }\n\n &[data-dragging] {\n cursor: grabbing;\n }\n\n &[data-focus-visible] {\n outline: var(--slider-focus-ring-width) solid var(--slider-focus-ring);\n outline-offset: var(--slider-focus-ring-offset);\n }\n }\n}\n"],"mappings":";AAEA;AACE,GAACA;AACC,aAAS;AACT,oBAAgB;AAChB,SAAK,IAAI;AACT,iBAAa,IAAI;AACnB;AAEA,GAACC;AACC,eAAW,IAAI;AACf,iBAAa,IAAI;AACjB,WAAO,IAAI;AACb;AAEA,GAACC;AACC,yBAAqB,IAAI;AACzB,WAAO,IAAI;AACb;AAEA,GAACC;AACC,YAAQ;AACR,eAAW,IAAI;AACf,WAAO,IAAI;AACb;AAEA,GAACC;AACC,YAAQ;AACR,eAAW,IAAI;AACf,WAAO,IAAI;AACb;AACF;;;ACxBA;AACE,GAACC;AACC,cAAU,IAAI;AAEd,aAAS;AACT,oBAAgB;AAChB,SAAK,IAAI;AACT,iBAAa;AACb,iBAAa,IAAI;AAEjB,KAAC,CAAC;AACA,mBAAa;AACb,kBAAY,IAAI;AAClB;AAEF;AAEA,GAACC;AACC,aAAS;AACT,qBAAiB;AACjB,SAAK,IAAI;AACX;AAEA,GAACC;AACC,cAAU;AACV,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,cAAU;AACV,eAAW,MAAM;AACjB,iBAAa;AACf;AAEA,GAACC;AACC,WAAO,IAAI;AACX,iBAAa,IAAI;AACjB,eAAW,IAAI;AACf,0BAAsB;AACxB;AAEA,GAACC;AACC,cAAU;AACV,gBAAY,IAAI;AAEhB,KA1CDJ,WA0CM,CAAC,2BAA6B;AACjC,mBAAa,IAAI;AACjB,kBAAY;AACd;AACF;AAGA,GAjDCA,WAiDI,CAAC,eAAe,CAXpBI;AAYC,aAAS;AACX;AAEA,GAACC;AACC,cAAU;AACV,uBAAmB;AACnB,iBAAa;AACb,gBAAY,IAAI;AAChB,cAAU;AACV,mBAAe,IAAI;AACnB,sBAAkB,IAAI;AACtB,eAAW,EAAE;AAEb,KA/DDL,WA+DM,CAAC,2BAA6B;AACjC,yBAAmB;AACnB,0BAAoB;AACpB,mBAAa,IAAI;AACjB,kBAAY;AACZ,iBAAW,KAAK;AAClB;AACF;AAEA,GAACM;AACC,cAAU;AACV,gBAAY;AACZ,sBAAkB,IAAI;AAEtB,KA7EDN,WA6EM,CAAC,2BAA6B;AACjC,mBAAa;AACf;AACF;AAEA,GAACO;AACC,uBAAmB;AACnB,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,YAAQ,IAAI,6BAA6B,MAAM,IAAI;AACnD,mBAAe,IAAI;AACnB,sBAAkB,IAAI;AACtB,gBAAY,IAAI;AAChB,YAAQ;AACR,gBAAY,aAAa,IAAI,0BAA0B,IAAI;AAE3D,KA7FDP,WA6FM,CAAC,2BAA6B;AACjC,yBAAmB;AACnB,0BAAoB;AACtB;AAEA,KAAC,CAAC;AAAA,IACF,CAAC,CAAC;AACA,oBAAc,IAAI;AACpB;AAEA,KAAC,CAAC;AACA,cAAQ;AACV;AAEA,KAAC,CAAC;AACA,eAAS,IAAI,2BAA2B,MAAM,IAAI;AAClD,sBAAgB,IAAI;AACtB;AACF;AACF;","names":["field","label","required","description","error","root","header","hidden","output","track","rail","fill","thumb"]}
|
package/dist/slider.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode, Ref } from 'react';
|
|
3
|
+
|
|
4
|
+
type SliderValue = number | [number, number];
|
|
5
|
+
type SliderOrientation = 'horizontal' | 'vertical';
|
|
6
|
+
interface SliderProps<T extends SliderValue = number> {
|
|
7
|
+
/** Visible label. Always rendered; `hideLabel` keeps it for assistive technology only. */
|
|
8
|
+
label: ReactNode;
|
|
9
|
+
/** @default false */
|
|
10
|
+
hideLabel?: boolean;
|
|
11
|
+
description?: ReactNode;
|
|
12
|
+
/** One number, or a `[start, end]` pair for a range with two thumbs. */
|
|
13
|
+
value?: T;
|
|
14
|
+
defaultValue?: T;
|
|
15
|
+
/** Called on every change while dragging or pressing arrows. */
|
|
16
|
+
onChange?: (value: T) => void;
|
|
17
|
+
/** Called once when the drag ends or the key is released. */
|
|
18
|
+
onChangeEnd?: (value: T) => void;
|
|
19
|
+
/** @default 0 */
|
|
20
|
+
min?: number;
|
|
21
|
+
/** @default 100 */
|
|
22
|
+
max?: number;
|
|
23
|
+
/** @default 1 */
|
|
24
|
+
step?: number;
|
|
25
|
+
/** How the value reads in the output and to assistive technology, for instance `{ style: 'percent' }` or `{ style: 'currency', currency: 'EUR' }`. */
|
|
26
|
+
formatOptions?: Intl.NumberFormatOptions;
|
|
27
|
+
/** Names for the two thumbs of a range. @default ['Minimum', 'Maximum'] */
|
|
28
|
+
thumbLabels?: readonly [string, string];
|
|
29
|
+
/** Show the formatted value next to the label. @default true */
|
|
30
|
+
showOutput?: boolean;
|
|
31
|
+
/** @default 'horizontal' */
|
|
32
|
+
orientation?: SliderOrientation;
|
|
33
|
+
/** @default false */
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
/** Submitted with a form; a range submits two inputs with this name. */
|
|
36
|
+
name?: string;
|
|
37
|
+
className?: string;
|
|
38
|
+
/** The group element. */
|
|
39
|
+
ref?: Ref<HTMLDivElement>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Picks a number, or a range, on a track: React Aria's slider (decision
|
|
43
|
+
* record 001) provides the hidden range inputs, arrow, Page Up/Down, Home and
|
|
44
|
+
* End keys, drag with a thumb that stays under the pointer, and
|
|
45
|
+
* `aria-valuetext` in the formatted form. The output element shows the
|
|
46
|
+
* same text, so what a screen reader hears is what sighted users see.
|
|
47
|
+
*
|
|
48
|
+
* @status experimental
|
|
49
|
+
* @category Forms
|
|
50
|
+
* @accessibility A `group` named by the label containing one hidden `input type="range"` per thumb (named by `thumbLabels` for a range) with `aria-valuetext` in the formatted form; the `output` element shows the same text. Arrows step, Page Up/Down step by ten, Home/End jump; thumbs drag with mouse or touch.
|
|
51
|
+
* @do Set `formatOptions` so the spoken value matches the unit ("40%", "€200").
|
|
52
|
+
* Use `hideLabel` only when a visible heading already names it.
|
|
53
|
+
* @dont Use it for precise values; provide a numeric field alongside.
|
|
54
|
+
* Use a `step` so small the keyboard cannot reach the ends in reasonable time.
|
|
55
|
+
*/
|
|
56
|
+
declare function Slider<T extends SliderValue = number>({ label, hideLabel, description, value, defaultValue, onChange, onChangeEnd, min, max, step, formatOptions, thumbLabels, showOutput, orientation, disabled, name, className, ref, }: SliderProps<T>): react.JSX.Element;
|
|
57
|
+
declare namespace Slider {
|
|
58
|
+
var displayName: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export { Slider, type SliderOrientation, type SliderProps, type SliderValue };
|
package/dist/slider.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"slider.js"}
|
package/dist/spinner.css
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* src/visually-hidden/VisuallyHidden.module.css */
|
|
2
|
+
@layer components {
|
|
3
|
+
.VisuallyHidden_root {
|
|
4
|
+
position: absolute;
|
|
5
|
+
inline-size: var(--visually-hidden-size);
|
|
6
|
+
block-size: var(--visually-hidden-size);
|
|
7
|
+
padding: 0;
|
|
8
|
+
margin: 0;
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
clip-path: inset(50%);
|
|
11
|
+
white-space: nowrap;
|
|
12
|
+
border: 0;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* src/spinner/Spinner.module.css */
|
|
17
|
+
@layer components {
|
|
18
|
+
.Spinner_spinner {
|
|
19
|
+
--_size: var(--spinner-size-md);
|
|
20
|
+
--_track: var(--spinner-track);
|
|
21
|
+
--_indicator: var(--spinner-indicator);
|
|
22
|
+
display: inline-flex;
|
|
23
|
+
flex: none;
|
|
24
|
+
inline-size: var(--_size);
|
|
25
|
+
block-size: var(--_size);
|
|
26
|
+
vertical-align: middle;
|
|
27
|
+
&[data-size=sm] {
|
|
28
|
+
--_size: var(--spinner-size-sm);
|
|
29
|
+
}
|
|
30
|
+
&[data-size=lg] {
|
|
31
|
+
--_size: var(--spinner-size-lg);
|
|
32
|
+
}
|
|
33
|
+
&[data-size=inherit] {
|
|
34
|
+
--_size: 1em;
|
|
35
|
+
}
|
|
36
|
+
&[data-tone=inherit] {
|
|
37
|
+
--_track: transparent;
|
|
38
|
+
--_indicator: currentcolor;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
.Spinner_ring {
|
|
42
|
+
inline-size: 100%;
|
|
43
|
+
block-size: 100%;
|
|
44
|
+
border: var(--spinner-width) solid var(--_track);
|
|
45
|
+
border-block-start-color: var(--_indicator);
|
|
46
|
+
border-radius: var(--radius-full);
|
|
47
|
+
animation: Spinner_spin var(--spinner-duration) linear infinite;
|
|
48
|
+
}
|
|
49
|
+
@keyframes Spinner_spin {
|
|
50
|
+
to {
|
|
51
|
+
rotate: 1turn;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
@media (prefers-reduced-motion: reduce) {
|
|
55
|
+
.Spinner_ring {
|
|
56
|
+
animation: none;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/*# sourceMappingURL=spinner.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/visually-hidden/VisuallyHidden.module.css","../src/spinner/Spinner.module.css"],"sourcesContent":["/* The clip-path technique: present in the accessibility tree, absent from the layout. */\n\n@layer components {\n .root {\n position: absolute;\n inline-size: var(--visually-hidden-size);\n block-size: var(--visually-hidden-size);\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border: 0;\n }\n}\n","/* Every value is a token (--spinner-*). The ring is a border with one coloured side. */\n\n@layer components {\n .spinner {\n --_size: var(--spinner-size-md);\n --_track: var(--spinner-track);\n --_indicator: var(--spinner-indicator);\n\n display: inline-flex;\n flex: none;\n inline-size: var(--_size);\n block-size: var(--_size);\n vertical-align: middle;\n\n &[data-size=\"sm\"] { --_size: var(--spinner-size-sm); }\n &[data-size=\"lg\"] { --_size: var(--spinner-size-lg); }\n &[data-size=\"inherit\"] { --_size: 1em; }\n\n &[data-tone=\"inherit\"] {\n --_track: transparent;\n --_indicator: currentcolor;\n }\n }\n\n .ring {\n inline-size: 100%;\n block-size: 100%;\n border: var(--spinner-width) solid var(--_track);\n border-block-start-color: var(--_indicator);\n border-radius: var(--radius-full);\n animation: spin var(--spinner-duration) linear infinite;\n }\n\n @keyframes spin {\n to {\n rotate: 1turn;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ring {\n animation: none;\n }\n }\n}\n"],"mappings":";AAEA;AACE,GAACA;AACC,cAAU;AACV,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,aAAS;AACT,YAAQ;AACR,cAAU;AACV,eAAW,MAAM;AACjB,iBAAa;AACb,YAAQ;AACV;AACF;;;ACZA;AACE,GAACC;AACC,aAAS,IAAI;AACb,cAAU,IAAI;AACd,kBAAc,IAAI;AAElB,aAAS;AACT,UAAM;AACN,iBAAa,IAAI;AACjB,gBAAY,IAAI;AAChB,oBAAgB;AAEhB,KAAC,CAAC;AAAkB,eAAS,IAAI;AAAoB;AACrD,KAAC,CAAC;AAAkB,eAAS,IAAI;AAAoB;AACrD,KAAC,CAAC;AAAuB,eAAS;AAAK;AAEvC,KAAC,CAAC;AACA,gBAAU;AACV,oBAAc;AAChB;AACF;AAEA,GAACC;AACC,iBAAa;AACb,gBAAY;AACZ,YAAQ,IAAI,iBAAiB,MAAM,IAAI;AACvC,8BAA0B,IAAI;AAC9B,mBAAe,IAAI;AACnB,eAAW,aAAK,IAAI,oBAAoB,OAAO;AACjD;AAEA,aAHaC;AAIX;AACE,cAAQ;AACV;AACF;AAEA,UAAO,wBAAyB;AAC9B,KAhBDD;AAiBG,iBAAW;AACb;AACF;AACF;","names":["root","spinner","ring","spin"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { HTMLAttributes, Ref } from 'react';
|
|
3
|
+
|
|
4
|
+
type SpinnerSize = 'sm' | 'md' | 'lg' | 'inherit';
|
|
5
|
+
type SpinnerTone = 'default' | 'inherit';
|
|
6
|
+
interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
|
|
7
|
+
/** `inherit` follows the surrounding font size, for spinners inside controls. @default 'md' */
|
|
8
|
+
size?: SpinnerSize;
|
|
9
|
+
/** `inherit` draws with the surrounding text colour, for coloured controls. @default 'default' */
|
|
10
|
+
tone?: SpinnerTone;
|
|
11
|
+
/** Announced to assistive technology (`role="status"`). @default 'Loading' */
|
|
12
|
+
label?: string;
|
|
13
|
+
/** Hide from assistive technology: the parent already announces busy. @default false */
|
|
14
|
+
decorative?: boolean;
|
|
15
|
+
ref?: Ref<HTMLSpanElement>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* An indeterminate progress indicator. Announces its label as a status
|
|
19
|
+
* unless `decorative`, in which case the parent is responsible (Button sets
|
|
20
|
+
* `aria-busy`). Under reduced motion the ring stops but keeps its coloured
|
|
21
|
+
* quarter, so it still reads as "in progress".
|
|
22
|
+
*
|
|
23
|
+
* @status stable
|
|
24
|
+
* @category Feedback
|
|
25
|
+
* @accessibility `role="status"` with a visually hidden label ("Loading" by default) unless `decorative`, in which case the parent announces busy. Under reduced motion the ring stops but keeps its coloured quarter.
|
|
26
|
+
* @do Use `decorative` inside a control that already sets `aria-busy`.
|
|
27
|
+
* @dont Show several spinners for one operation.
|
|
28
|
+
*/
|
|
29
|
+
declare function Spinner({ size, tone, label, decorative, className, ref, ...rest }: SpinnerProps): react.JSX.Element;
|
|
30
|
+
declare namespace Spinner {
|
|
31
|
+
var displayName: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { Spinner, type SpinnerProps, type SpinnerSize, type SpinnerTone };
|
package/dist/spinner.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"spinner.js"}
|
package/dist/stack.css
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* src/stack/Stack.module.css */
|
|
2
|
+
@layer components {
|
|
3
|
+
.Stack_stack {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
gap: var(--stack-gap-3);
|
|
7
|
+
margin: 0;
|
|
8
|
+
padding: 0;
|
|
9
|
+
list-style: none;
|
|
10
|
+
&[data-gap="1"] {
|
|
11
|
+
gap: var(--stack-gap-1);
|
|
12
|
+
}
|
|
13
|
+
&[data-gap="2"] {
|
|
14
|
+
gap: var(--stack-gap-2);
|
|
15
|
+
}
|
|
16
|
+
&[data-gap="3"] {
|
|
17
|
+
gap: var(--stack-gap-3);
|
|
18
|
+
}
|
|
19
|
+
&[data-gap="4"] {
|
|
20
|
+
gap: var(--stack-gap-4);
|
|
21
|
+
}
|
|
22
|
+
&[data-gap="5"] {
|
|
23
|
+
gap: var(--stack-gap-5);
|
|
24
|
+
}
|
|
25
|
+
&[data-gap="6"] {
|
|
26
|
+
gap: var(--stack-gap-6);
|
|
27
|
+
}
|
|
28
|
+
&[data-gap="7"] {
|
|
29
|
+
gap: var(--stack-gap-7);
|
|
30
|
+
}
|
|
31
|
+
&[data-gap="8"] {
|
|
32
|
+
gap: var(--stack-gap-8);
|
|
33
|
+
}
|
|
34
|
+
&[data-align=start] {
|
|
35
|
+
align-items: flex-start;
|
|
36
|
+
}
|
|
37
|
+
&[data-align=center] {
|
|
38
|
+
align-items: center;
|
|
39
|
+
}
|
|
40
|
+
&[data-align=end] {
|
|
41
|
+
align-items: flex-end;
|
|
42
|
+
}
|
|
43
|
+
&[data-align=stretch] {
|
|
44
|
+
align-items: stretch;
|
|
45
|
+
}
|
|
46
|
+
&[data-justify=start] {
|
|
47
|
+
justify-content: flex-start;
|
|
48
|
+
}
|
|
49
|
+
&[data-justify=center] {
|
|
50
|
+
justify-content: center;
|
|
51
|
+
}
|
|
52
|
+
&[data-justify=end] {
|
|
53
|
+
justify-content: flex-end;
|
|
54
|
+
}
|
|
55
|
+
&[data-justify=between] {
|
|
56
|
+
justify-content: space-between;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/*# sourceMappingURL=stack.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/stack/Stack.module.css"],"sourcesContent":["/* Every value is a token (--stack-gap-*). Gap, alignment and justification are data attributes. */\n\n@layer components {\n .stack {\n display: flex;\n flex-direction: column;\n gap: var(--stack-gap-3);\n margin: 0;\n padding: 0;\n list-style: none;\n\n &[data-gap=\"1\"] { gap: var(--stack-gap-1); }\n &[data-gap=\"2\"] { gap: var(--stack-gap-2); }\n &[data-gap=\"3\"] { gap: var(--stack-gap-3); }\n &[data-gap=\"4\"] { gap: var(--stack-gap-4); }\n &[data-gap=\"5\"] { gap: var(--stack-gap-5); }\n &[data-gap=\"6\"] { gap: var(--stack-gap-6); }\n &[data-gap=\"7\"] { gap: var(--stack-gap-7); }\n &[data-gap=\"8\"] { gap: var(--stack-gap-8); }\n &[data-align=\"start\"] { align-items: flex-start; }\n &[data-align=\"center\"] { align-items: center; }\n &[data-align=\"end\"] { align-items: flex-end; }\n &[data-align=\"stretch\"] { align-items: stretch; }\n &[data-justify=\"start\"] { justify-content: flex-start; }\n &[data-justify=\"center\"] { justify-content: center; }\n &[data-justify=\"end\"] { justify-content: flex-end; }\n &[data-justify=\"between\"] { justify-content: space-between; }\n }\n}\n"],"mappings":";AAEA;AACE,GAACA;AACC,aAAS;AACT,oBAAgB;AAChB,SAAK,IAAI;AACT,YAAQ;AACR,aAAS;AACT,gBAAY;AAEZ,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAgB,WAAK,IAAI;AAAgB;AAC3C,KAAC,CAAC;AAAsB,mBAAa;AAAY;AACjD,KAAC,CAAC;AAAuB,mBAAa;AAAQ;AAC9C,KAAC,CAAC;AAAoB,mBAAa;AAAU;AAC7C,KAAC,CAAC;AAAwB,mBAAa;AAAS;AAChD,KAAC,CAAC;AAAwB,uBAAiB;AAAY;AACvD,KAAC,CAAC;AAAyB,uBAAiB;AAAQ;AACpD,KAAC,CAAC;AAAsB,uBAAiB;AAAU;AACnD,KAAC,CAAC;AAA0B,uBAAiB;AAAe;AAC9D;AACF;","names":["stack"]}
|